Index: extensions/renderer/object_backed_native_handler.cc |
diff --git a/extensions/renderer/object_backed_native_handler.cc b/extensions/renderer/object_backed_native_handler.cc |
index 075f1d60173a6925218ccaf4fb7a7f769293a0ca..10bedc1772fb714a604860d20e133ad1e07226d9 100644 |
--- a/extensions/renderer/object_backed_native_handler.cc |
+++ b/extensions/renderer/object_backed_native_handler.cc |
@@ -25,8 +25,7 @@ |
v8::ObjectTemplate::New(context->isolate())) { |
} |
-ObjectBackedNativeHandler::~ObjectBackedNativeHandler() { |
-} |
+ObjectBackedNativeHandler::~ObjectBackedNativeHandler() { Invalidate(); } |
v8::Handle<v8::Object> ObjectBackedNativeHandler::NewInstance() { |
return v8::Local<v8::ObjectTemplate>::New(GetIsolate(), object_template_) |
@@ -76,7 +75,9 @@ |
} |
void ObjectBackedNativeHandler::Invalidate() { |
- v8::Isolate* isolate = GetIsolate(); |
+ if (!is_valid()) |
+ return; |
+ v8::Isolate* isolate = v8::Isolate::GetCurrent(); |
v8::HandleScope handle_scope(isolate); |
v8::Context::Scope context_scope(context_->v8_context()); |
@@ -89,10 +90,9 @@ |
handler_function_value.As<v8::External>()->Value()); |
data->Delete(v8::String::NewFromUtf8(isolate, kHandlerFunction)); |
} |
- |
router_data_.Clear(); |
object_template_.Reset(); |
- |
+ context_ = NULL; |
NativeHandler::Invalidate(); |
} |