diff --git a/atom/browser/api/atom_api_web_contents.cc b/atom/browser/api/atom_api_web_contents.cc index 10f91c47bcb..ed16262406b 100644 --- a/atom/browser/api/atom_api_web_contents.cc +++ b/atom/browser/api/atom_api_web_contents.cc @@ -274,6 +274,9 @@ void WebContents::Destroy() { if (!destruction_callback_.is_null()) destruction_callback_.Run(); + // When force destroying the "destroyed" event is not emitted. + WebContentsDestroyed(); + Observe(nullptr); storage_.reset(); } diff --git a/atom/browser/lib/guest-view-manager.coffee b/atom/browser/lib/guest-view-manager.coffee index e8d29451517..00085ade3dc 100644 --- a/atom/browser/lib/guest-view-manager.coffee +++ b/atom/browser/lib/guest-view-manager.coffee @@ -40,9 +40,9 @@ createGuest = (embedder, params) -> destroyEvents = ['destroyed', 'crashed', 'did-navigate-to-different-page'] destroy = -> destroyGuest id if guestInstances[id]? - embedder.removeListener event, destroy for event in destroyEvents - embedder.setMaxListeners 100 # we can have lots of in one page. embedder.once event, destroy for event in destroyEvents + guest.once 'destroyed', -> + embedder.removeListener event, destroy for event in destroyEvents # Init guest web view after attached. guest.once 'did-attach', -> diff --git a/atom/renderer/lib/web-view/web-view.coffee b/atom/renderer/lib/web-view/web-view.coffee index e095c0b74d6..9a1f59ed5b7 100644 --- a/atom/renderer/lib/web-view/web-view.coffee +++ b/atom/renderer/lib/web-view/web-view.coffee @@ -50,7 +50,6 @@ class WebViewImpl # heard back from createGuest yet. We will not reset the flag in this case so # that we don't end up allocating a second guest. if @guestInstanceId - # FIXME guestViewInternal.destroyGuest @guestInstanceId @guestInstanceId = undefined @beforeFirstNavigation = true