diff options
author | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-04 15:04:04 +0000 |
---|---|---|
committer | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-04 15:04:04 +0000 |
commit | 2ee1e3afa96495070273b36ed938872318eb0dac (patch) | |
tree | 6e2552cf4d05fb8bda8dd7b7cf28f46504a0fcfc /chrome/renderer/extensions/event_bindings.cc | |
parent | b19537cdc317d6baab5183e111668ccc88c661f6 (diff) | |
download | chromium_src-2ee1e3afa96495070273b36ed938872318eb0dac.zip chromium_src-2ee1e3afa96495070273b36ed938872318eb0dac.tar.gz chromium_src-2ee1e3afa96495070273b36ed938872318eb0dac.tar.bz2 |
Factor the static data and its management out of
ExtensionBindingsContext into ExtensionBindingsContextSet.
Add a unit test (!!).
Review URL: http://codereview.chromium.org/8093017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@103887 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/extensions/event_bindings.cc')
-rw-r--r-- | chrome/renderer/extensions/event_bindings.cc | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/chrome/renderer/extensions/event_bindings.cc b/chrome/renderer/extensions/event_bindings.cc index f4f9b66..5b2713d 100644 --- a/chrome/renderer/extensions/event_bindings.cc +++ b/chrome/renderer/extensions/event_bindings.cc @@ -15,6 +15,7 @@ #include "chrome/renderer/extensions/chrome_v8_extension.h" #include "chrome/renderer/extensions/event_bindings.h" #include "chrome/renderer/extensions/extension_bindings_context.h" +#include "chrome/renderer/extensions/extension_bindings_context_set.h" #include "chrome/renderer/extensions/extension_dispatcher.h" #include "chrome/renderer/extensions/extension_process_bindings.h" #include "chrome/renderer/extensions/user_script_slave.h" @@ -70,7 +71,7 @@ class ExtensionImpl : public ChromeV8Extension { if (name->Equals(v8::String::New("AttachEvent"))) { return v8::FunctionTemplate::New(AttachEvent, v8::External::New(this)); } else if (name->Equals(v8::String::New("DetachEvent"))) { - return v8::FunctionTemplate::New(DetachEvent); + return v8::FunctionTemplate::New(DetachEvent, v8::External::New(this)); } else if (name->Equals(v8::String::New("GetExternalFileEntry"))) { return v8::FunctionTemplate::New(GetExternalFileEntry); } @@ -84,14 +85,15 @@ class ExtensionImpl : public ChromeV8Extension { DCHECK(args[0]->IsString() || args[0]->IsUndefined()); if (args[0]->IsString()) { - ExtensionBindingsContext* context = - ExtensionBindingsContext::GetCurrent(); + ExtensionImpl* v8_extension = GetFromArguments<ExtensionImpl>(args); + const ExtensionBindingsContextSet& context_set = + v8_extension->extension_dispatcher()->bindings_context_set(); + ExtensionBindingsContext* context = context_set.GetCurrent(); CHECK(context); EventListenerCounts& listener_counts = GetListenerCounts(context->extension_id()); std::string event_name(*v8::String::AsciiValue(args[0])); - ExtensionImpl* v8_extension = GetFromArguments<ExtensionImpl>(args); if (!v8_extension->CheckPermissionForCurrentRenderView(event_name)) return v8::Undefined(); @@ -111,8 +113,10 @@ class ExtensionImpl : public ChromeV8Extension { DCHECK(args[0]->IsString() || args[0]->IsUndefined()); if (args[0]->IsString()) { - ExtensionBindingsContext* context = - ExtensionBindingsContext::GetCurrent(); + ExtensionImpl* v8_extension = GetFromArguments<ExtensionImpl>(args); + const ExtensionBindingsContextSet& context_set = + v8_extension->extension_dispatcher()->bindings_context_set(); + ExtensionBindingsContext* context = context_set.GetCurrent(); if (!context) return v8::Undefined(); |