ASSERTION FAILURE in WebProcessProxy::frameDestroyed when a Page is closed before...
authorjberlin@webkit.org <jberlin@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 29 Oct 2010 19:30:43 +0000 (19:30 +0000)
committerjberlin@webkit.org <jberlin@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 29 Oct 2010 19:30:43 +0000 (19:30 +0000)
the DidCreateMainFrame messsage to the UIProcess.
https://bugs.webkit.org/show_bug.cgi?id=48654

Reviewed by Anders Carlsson.

WebProcessProxy::frameDestroyed was asserting that the frameID it was called with was
registered in WebProcessProxy::frameCreated (which is called when the WebPageProxy is
created). However, in the case where we close the page before it's had the chance to send
the DidCreateMainFrame message back to the UI process, the UI Process will get the
DidDestroyFrame message because it's sent directly to the WebProcessProxy and doesn't go
through WebPageProxy.

Remove the assert because it is invalid in this case.

* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::frameDestroyed):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@70915 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKit2/ChangeLog
WebKit2/UIProcess/WebProcessProxy.cpp

index f1780b1..03bb508 100644 (file)
@@ -1,3 +1,23 @@
+2010-10-29  Jessie Berlin  <jberlin@apple.com>
+
+        Reviewed by Anders Carlsson.
+
+        ASSERTION FAILURE in WebProcessProxy::frameDestroyed when a Page is closed before it can send
+        the DidCreateMainFrame messsage to the UIProcess.
+        https://bugs.webkit.org/show_bug.cgi?id=48654
+
+        WebProcessProxy::frameDestroyed was asserting that the frameID it was called with was
+        registered in WebProcessProxy::frameCreated (which is called when the WebPageProxy is
+        created). However, in the case where we close the page before it's had the chance to send
+        the DidCreateMainFrame message back to the UI process, the UI Process will get the
+        DidDestroyFrame message because it's sent directly to the WebProcessProxy and doesn't go
+        through WebPageProxy.
+
+        Remove the assert because it is invalid in this case.
+
+        * UIProcess/WebProcessProxy.cpp:
+        (WebKit::WebProcessProxy::frameDestroyed):
+
 2010-10-29  Adam Roben  <aroben@apple.com>
 
         Build fix when Carbon plugins are disabled
index 58ad2cc..8b0ac99 100644 (file)
@@ -485,7 +485,9 @@ void WebProcessProxy::frameCreated(uint64_t frameID, WebFrameProxy* frameProxy)
 
 void WebProcessProxy::frameDestroyed(uint64_t frameID)
 {
-    ASSERT(m_frameMap.contains(frameID));
+    // If the page is closed before it has had the chance to send the DidCreateMainFrame message
+    // back to the UIProcess, then the frameDestroyed message will still be received because it
+    // gets sent directly to the WebProcessProxy.
     m_frameMap.remove(frameID);
 }