| 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();
|
| }
|
|
|
|
|