Title: [110390] trunk/Source/WebKit2
Revision
110390
Author
[email protected]
Date
2012-03-11 03:11:52 -0700 (Sun, 11 Mar 2012)

Log Message

<http://webkit.org/b/80782> Web Inspector: Crash using released frontendClient when resizing window with closed inspector

The WebInspectorFrontendClient reference should be cleared when the
WebInspectorClient::closeInspectorFrontend is called. This adds a
destroyInspectorPage to mirror createInspectorPage and clear the weak
pointers that are no longer valid.

Patch by Joseph Pecoraro <[email protected]> on 2012-03-11
Reviewed by Pavel Feldman.

* WebProcess/WebCoreSupport/WebInspectorClient.cpp:
(WebKit::WebInspectorClient::closeInspectorFrontend):
(WebKit::WebInspectorClient::didResizeMainFrame):
* WebProcess/WebPage/WebInspector.cpp:
(WebKit::WebInspector::destroyInspectorPage):
* WebProcess/WebPage/WebInspector.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (110389 => 110390)


--- trunk/Source/WebKit2/ChangeLog	2012-03-11 09:11:58 UTC (rev 110389)
+++ trunk/Source/WebKit2/ChangeLog	2012-03-11 10:11:52 UTC (rev 110390)
@@ -1,3 +1,21 @@
+2012-03-11  Joseph Pecoraro  <[email protected]>
+
+        <http://webkit.org/b/80782> Web Inspector: Crash using released frontendClient when resizing window with closed inspector
+
+        The WebInspectorFrontendClient reference should be cleared when the
+        WebInspectorClient::closeInspectorFrontend is called. This adds a
+        destroyInspectorPage to mirror createInspectorPage and clear the weak
+        pointers that are no longer valid.
+
+        Reviewed by Pavel Feldman.
+
+        * WebProcess/WebCoreSupport/WebInspectorClient.cpp:
+        (WebKit::WebInspectorClient::closeInspectorFrontend):
+        (WebKit::WebInspectorClient::didResizeMainFrame):
+        * WebProcess/WebPage/WebInspector.cpp:
+        (WebKit::WebInspector::destroyInspectorPage):
+        * WebProcess/WebPage/WebInspector.h:
+
 2012-03-11  Viatcheslav Ostapenko  <[email protected]>
 
         [Qt] [WK2] Support threaded renderer in WK2

Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.cpp (110389 => 110390)


--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.cpp	2012-03-11 09:11:58 UTC (rev 110389)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.cpp	2012-03-11 10:11:52 UTC (rev 110390)
@@ -51,8 +51,10 @@
 
 void WebInspectorClient::closeInspectorFrontend()
 {
-    if (m_page->inspector())
+    if (m_page->inspector()) {
         m_page->inspector()->didClose();
+        m_page->inspector()->destroyInspectorPage();
+    }
 }
 
 void WebInspectorClient::bringFrontendToFront()
@@ -62,7 +64,8 @@
 
 void WebInspectorClient::didResizeMainFrame(Frame*)
 {
-    m_page->inspector()->updateDockingAvailability();
+    if (m_page->inspector())
+        m_page->inspector()->updateDockingAvailability();
 }
 
 void WebInspectorClient::highlight()

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebInspector.cpp (110389 => 110390)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebInspector.cpp	2012-03-11 09:11:58 UTC (rev 110389)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebInspector.cpp	2012-03-11 10:11:52 UTC (rev 110390)
@@ -59,6 +59,9 @@
     if (!m_page)
         return 0;
 
+    ASSERT(!m_inspectorPage);
+    ASSERT(!m_frontendClient);
+
     uint64_t inspectorPageID = 0;
     WebPageCreationParameters parameters;
 
@@ -81,6 +84,12 @@
     return m_inspectorPage;
 }
 
+void WebInspector::destroyInspectorPage()
+{
+    m_inspectorPage = 0;
+    m_frontendClient = 0;
+}
+
 // Called from WebInspectorFrontendClient
 void WebInspector::didLoadInspectorPage()
 {

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebInspector.h (110389 => 110390)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebInspector.h	2012-03-11 09:11:58 UTC (rev 110389)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebInspector.h	2012-03-11 10:11:52 UTC (rev 110390)
@@ -75,6 +75,7 @@
 
     // Called from WebInspectorClient
     WebPage* createInspectorPage();
+    void destroyInspectorPage();
 
     // Called from WebInspectorFrontendClient
     void didLoadInspectorPage();
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to