Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(665)

Unified Diff: chrome/renderer/extensions/messaging_bindings.cc

Issue 23679004: Remove more calls to HandleScope default ctor. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/renderer/extensions/messaging_bindings.cc
diff --git a/chrome/renderer/extensions/messaging_bindings.cc b/chrome/renderer/extensions/messaging_bindings.cc
index fec12f719944466141e91117434774eb4478937a..c7660dd3aadf6a6b5e5c07cb5822b33169e3c7fb 100644
--- a/chrome/renderer/extensions/messaging_bindings.cc
+++ b/chrome/renderer/extensions/messaging_bindings.cc
@@ -168,8 +168,9 @@ class ExtensionImpl : public extensions::ChromeV8Extension {
class GCCallback {
public:
static void Bind(v8::Handle<v8::Object> object,
- v8::Handle<v8::Function> callback) {
- GCCallback* cb = new GCCallback(object, callback);
+ v8::Handle<v8::Function> callback,
+ v8::Isolate* isolate) {
+ GCCallback* cb = new GCCallback(object, callback, isolate);
cb->object_.MakeWeak(cb, NearDeathCallback);
}
@@ -184,12 +185,13 @@ class ExtensionImpl : public extensions::ChromeV8Extension {
base::Bind(&GCCallback::RunCallback, base::Owned(self)));
}
- GCCallback(v8::Handle<v8::Object> object, v8::Handle<v8::Function> callback)
- : object_(object), callback_(callback) {
- }
+ GCCallback(v8::Handle<v8::Object> object,
+ v8::Handle<v8::Function> callback,
+ v8::Isolate* isolate)
+ : object_(object), callback_(callback), isolate_(isolate) {}
void RunCallback() {
- v8::HandleScope handle_scope;
+ v8::HandleScope handle_scope(isolate_);
v8::Handle<v8::Context> context = callback_->CreationContext();
if (context.IsEmpty())
return;
@@ -200,6 +202,7 @@ class ExtensionImpl : public extensions::ChromeV8Extension {
extensions::ScopedPersistent<v8::Object> object_;
extensions::ScopedPersistent<v8::Function> callback_;
+ v8::Isolate* isolate_;
DISALLOW_COPY_AND_ASSIGN(GCCallback);
};
@@ -211,7 +214,9 @@ class ExtensionImpl : public extensions::ChromeV8Extension {
// JS in some bizarro undefined mid-GC state.
void BindToGC(const v8::FunctionCallbackInfo<v8::Value>& args) {
CHECK(args.Length() == 2 && args[0]->IsObject() && args[1]->IsFunction());
- GCCallback::Bind(args[0].As<v8::Object>(), args[1].As<v8::Function>());
+ GCCallback::Bind(args[0].As<v8::Object>(),
+ args[1].As<v8::Function>(),
+ args.GetIsolate());
}
};
@@ -235,7 +240,7 @@ void MessagingBindings::DispatchOnConnect(
const std::string& target_extension_id,
const GURL& source_url,
content::RenderView* restrict_to_render_view) {
- v8::HandleScope handle_scope;
+ v8::HandleScope handle_scope(v8::Isolate::GetCurrent());
scoped_ptr<V8ValueConverter> converter(V8ValueConverter::create());
@@ -296,7 +301,7 @@ void MessagingBindings::DeliverMessage(
int target_port_id,
const std::string& message,
content::RenderView* restrict_to_render_view) {
- v8::HandleScope handle_scope;
+ v8::HandleScope handle_scope(v8::Isolate::GetCurrent());
// TODO(kalman): pass in the full ChromeV8ContextSet; call ForEach.
for (ChromeV8ContextSet::ContextSet::const_iterator it = contexts.begin();
@@ -337,7 +342,7 @@ void MessagingBindings::DispatchOnDisconnect(
int port_id,
const std::string& error_message,
content::RenderView* restrict_to_render_view) {
- v8::HandleScope handle_scope;
+ v8::HandleScope handle_scope(v8::Isolate::GetCurrent());
// TODO(kalman): pass in the full ChromeV8ContextSet; call ForEach.
for (ChromeV8ContextSet::ContextSet::const_iterator it = contexts.begin();

Powered by Google App Engine
This is Rietveld 408576698