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