summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/extensions/event_bindings.cc
diff options
context:
space:
mode:
authoraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-04 15:04:04 +0000
committeraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-04 15:04:04 +0000
commit2ee1e3afa96495070273b36ed938872318eb0dac (patch)
tree6e2552cf4d05fb8bda8dd7b7cf28f46504a0fcfc /chrome/renderer/extensions/event_bindings.cc
parentb19537cdc317d6baab5183e111668ccc88c661f6 (diff)
downloadchromium_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.cc16
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();