if (Emit("will-navigate", params.url))
return nullptr;
+ // Don't load the URL if the web contents was marked as destroyed from a
+ // will-navigate event listener
+ if (IsDestroyed())
+ return nullptr;
+
return CommonWebContentsDelegate::OpenURLFromTab(source, params);
}
Wrappable<T>::GetWrapper()->SetAlignedPointerInInternalField(0, nullptr);
}
+ bool IsDestroyed() {
+ v8::Local<v8::Object> wrapper = Wrappable<T>::GetWrapper();
+ return wrapper->InternalFieldCount() == 0 ||
+ wrapper->GetAlignedPointerFromInternalField(0) == nullptr;
+ }
+
// Finds out the TrackableObject from its ID in weak map.
static T* FromWeakMapID(v8::Isolate* isolate, int32_t id) {
if (!weak_map_)