diff options
author | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-12 04:59:05 +0000 |
---|---|---|
committer | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-12 04:59:05 +0000 |
commit | 5c969b88b487d95d8e0d88c7734202dc171e5ce0 (patch) | |
tree | 926b315016dd07713a55cf09475398b4b8b7eebc /gin/per_isolate_data.cc | |
parent | f209f953525c13825705d29a25d0c20e7e59701f (diff) | |
download | chromium_src-5c969b88b487d95d8e0d88c7734202dc171e5ce0.zip chromium_src-5c969b88b487d95d8e0d88c7734202dc171e5ce0.tar.gz chromium_src-5c969b88b487d95d8e0d88c7734202dc171e5ce0.tar.bz2 |
gin: Add the concept of named and indexed interceptors.
This will allow for using gin as a drop-in replacement for NPObject.
BUG=347565
R=abarth@chromium.org,dcarney@chromium.org,aa@chromium.org
Review URL: https://codereview.chromium.org/194603003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@256431 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gin/per_isolate_data.cc')
-rw-r--r-- | gin/per_isolate_data.cc | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/gin/per_isolate_data.cc b/gin/per_isolate_data.cc index 7de9047..b3f24ab 100644 --- a/gin/per_isolate_data.cc +++ b/gin/per_isolate_data.cc @@ -2,6 +2,7 @@ // 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 "gin/per_isolate_data.h" #include "gin/public/gin_embedders.h" @@ -55,4 +56,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 |