Index: chrome/renderer/extensions/chrome_v8_context.cc |
diff --git a/chrome/renderer/extensions/chrome_v8_context.cc b/chrome/renderer/extensions/chrome_v8_context.cc |
index 98b0c077573cf934e0882ad1b7638516bdab2707..4fa7863a3f2d07eed671bee893bdc42352305366 100644 |
--- a/chrome/renderer/extensions/chrome_v8_context.cc |
+++ b/chrome/renderer/extensions/chrome_v8_context.cc |
@@ -5,6 +5,7 @@ |
#include "chrome/renderer/extensions/chrome_v8_context.h" |
#include "base/logging.h" |
+#include "base/stl_util.h" |
#include "base/string_split.h" |
#include "base/values.h" |
#include "chrome/common/extensions/extension_set.h" |
@@ -29,6 +30,7 @@ ChromeV8Context::ChromeV8Context(v8::Handle<v8::Context> v8_context, |
WebKit::WebFrame* web_frame, |
const std::string& extension_id) |
: v8_context_(v8::Persistent<v8::Context>::New(v8_context)), |
+ natives_(v8::Persistent<v8::Object>::New(v8::Object::New())), |
Aaron Boodman
2012/02/16 01:54:42
Seems like this object should be created in v8_con
|
web_frame_(web_frame), |
extension_id_(extension_id) { |
VLOG(1) << "Created context for extension\n" |
@@ -40,6 +42,8 @@ ChromeV8Context::~ChromeV8Context() { |
VLOG(1) << "Destroyed context for extension\n" |
<< " id: " << extension_id_; |
v8_context_.Dispose(); |
+ STLDeleteElements(&extensions_); |
Aaron Boodman
2012/02/16 01:54:42
Use base/memory/linked_ptr instead of doing this m
koz (OOO until 15th September)
2012/02/27 01:06:14
Done.
|
+ natives_.Dispose(); |
} |
// static |
@@ -127,3 +131,8 @@ void ChromeV8Context::DispatchOnUnloadEvent() const { |
v8::HandleScope handle_scope; |
CallChromeHiddenMethod("dispatchOnUnload", 0, NULL, NULL); |
} |
+ |
+void ChromeV8Context::RegisterExtension(ChromeV8Extension* extension) { |
+ extensions_.push_back(extension); |
+ extension->SetNativeFunctions(natives_); |
+} |