diff options
Diffstat (limited to 'chromium/gin/per_isolate_data.cc')
-rw-r--r-- | chromium/gin/per_isolate_data.cc | 60 |
1 files changed, 58 insertions, 2 deletions
diff --git a/chromium/gin/per_isolate_data.cc b/chromium/gin/per_isolate_data.cc index 6c2397ba50b..99c928cdd8e 100644 --- a/chromium/gin/per_isolate_data.cc +++ b/chromium/gin/per_isolate_data.cc @@ -2,9 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "base/logging.h" +#include "base/message_loop/message_loop_proxy.h" #include "gin/per_isolate_data.h" #include "gin/public/gin_embedders.h" +using v8::ArrayBuffer; using v8::Eternal; using v8::Isolate; using v8::Local; @@ -14,8 +17,11 @@ using v8::ObjectTemplate; namespace gin { -PerIsolateData::PerIsolateData(Isolate* isolate) - : isolate_(isolate) { +PerIsolateData::PerIsolateData(Isolate* isolate, + ArrayBuffer::Allocator* allocator) + : isolate_(isolate), + allocator_(allocator), + message_loop_proxy_(base::MessageLoopProxy::current()) { isolate_->SetData(kEmbedderNativeGin, this); } @@ -53,4 +59,54 @@ v8::Local<v8::FunctionTemplate> PerIsolateData::GetFunctionTemplate( return it->second.Get(isolate_); } +void PerIsolateData::SetIndexedPropertyInterceptor( + WrappableBase* base, + IndexedPropertyInterceptor* interceptor) { + indexed_interceptors_[base] = interceptor; +} + +void PerIsolateData::SetNamedPropertyInterceptor( + WrappableBase* base, + NamedPropertyInterceptor* interceptor) { + named_interceptors_[base] = interceptor; +} + +void PerIsolateData::ClearIndexedPropertyInterceptor( + WrappableBase* base, + IndexedPropertyInterceptor* interceptor) { + IndexedPropertyInterceptorMap::iterator it = indexed_interceptors_.find(base); + if (it != indexed_interceptors_.end()) + indexed_interceptors_.erase(it); + else + NOTREACHED(); +} + +void PerIsolateData::ClearNamedPropertyInterceptor( + WrappableBase* base, + NamedPropertyInterceptor* interceptor) { + NamedPropertyInterceptorMap::iterator it = named_interceptors_.find(base); + if (it != named_interceptors_.end()) + named_interceptors_.erase(it); + else + NOTREACHED(); +} + +IndexedPropertyInterceptor* PerIsolateData::GetIndexedPropertyInterceptor( + WrappableBase* base) { + IndexedPropertyInterceptorMap::iterator it = indexed_interceptors_.find(base); + if (it != indexed_interceptors_.end()) + return it->second; + else + return NULL; +} + +NamedPropertyInterceptor* PerIsolateData::GetNamedPropertyInterceptor( + WrappableBase* base) { + NamedPropertyInterceptorMap::iterator it = named_interceptors_.find(base); + if (it != named_interceptors_.end()) + return it->second; + else + return NULL; +} + } // namespace gin |