Title: [171860] trunk/Source/WebKit2
Revision
171860
Author
[email protected]
Date
2014-07-31 10:11:30 -0700 (Thu, 31 Jul 2014)

Log Message

AX: iOS: Crash accessing m_page in WKAccessibilityPageObject
https://bugs.webkit.org/show_bug.cgi?id=134617

Reviewed by Darin Adler.

Provide a way to detach a WK2 WebPage object so that it can uninitialize other pointers, like the accessibility object.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::~WebPage):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/efl/WebPageEfl.cpp:
(WebKit::WebPage::platformDetach):
* WebProcess/WebPage/gtk/WebPageGtk.cpp:
(WebKit::WebPage::platformDetach):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::platformDetach):
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::platformDetach):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (171859 => 171860)


--- trunk/Source/WebKit2/ChangeLog	2014-07-31 16:45:19 UTC (rev 171859)
+++ trunk/Source/WebKit2/ChangeLog	2014-07-31 17:11:30 UTC (rev 171860)
@@ -1,3 +1,24 @@
+2014-07-31  Chris Fleizach  <[email protected]>
+
+        AX: iOS: Crash accessing m_page in WKAccessibilityPageObject
+        https://bugs.webkit.org/show_bug.cgi?id=134617
+
+        Reviewed by Darin Adler.
+
+        Provide a way to detach a WK2 WebPage object so that it can uninitialize other pointers, like the accessibility object.
+
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::~WebPage):
+        * WebProcess/WebPage/WebPage.h:
+        * WebProcess/WebPage/efl/WebPageEfl.cpp:
+        (WebKit::WebPage::platformDetach):
+        * WebProcess/WebPage/gtk/WebPageGtk.cpp:
+        (WebKit::WebPage::platformDetach):
+        * WebProcess/WebPage/ios/WebPageIOS.mm:
+        (WebKit::WebPage::platformDetach):
+        * WebProcess/WebPage/mac/WebPageMac.mm:
+        (WebKit::WebPage::platformDetach):
+
 2014-07-31  Dan Bernstein  <[email protected]>
 
         WebKit part of: Server trust authentication challenges aren’t sent to the navigation delegate

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (171859 => 171860)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2014-07-31 16:45:19 UTC (rev 171859)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2014-07-31 17:11:30 UTC (rev 171860)
@@ -500,6 +500,8 @@
         WebProcess::shared().eventDispatcher().removeScrollingTreeForPage(this);
 #endif
 
+    platformDetach();
+    
     m_sandboxExtensionTracker.invalidate();
 
     for (auto* pluginView : m_pluginViews)

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (171859 => 171860)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h	2014-07-31 16:45:19 UTC (rev 171859)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h	2014-07-31 17:11:30 UTC (rev 171860)
@@ -853,6 +853,7 @@
     virtual uint64_t messageSenderDestinationID() override;
 
     void platformInitialize();
+    void platformDetach();
 
     void didReceiveWebPageMessage(IPC::Connection*, IPC::MessageDecoder&);
     void didReceiveSyncWebPageMessage(IPC::Connection*, IPC::MessageDecoder&, std::unique_ptr<IPC::MessageEncoder>&);

Modified: trunk/Source/WebKit2/WebProcess/WebPage/efl/WebPageEfl.cpp (171859 => 171860)


--- trunk/Source/WebKit2/WebProcess/WebPage/efl/WebPageEfl.cpp	2014-07-31 16:45:19 UTC (rev 171859)
+++ trunk/Source/WebKit2/WebProcess/WebPage/efl/WebPageEfl.cpp	2014-07-31 17:11:30 UTC (rev 171860)
@@ -61,6 +61,10 @@
 #endif
 }
 
+void WebPage::platformDetach()
+{
+}
+
 #if HAVE(ACCESSIBILITY)
 void WebPage::updateAccessibilityTree()
 {

Modified: trunk/Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp (171859 => 171860)


--- trunk/Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp	2014-07-31 16:45:19 UTC (rev 171859)
+++ trunk/Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp	2014-07-31 17:11:30 UTC (rev 171860)
@@ -66,6 +66,10 @@
 #endif
 }
 
+void WebPage::platformDetach()
+{
+}
+
 #if HAVE(ACCESSIBILITY)
 void WebPage::updateAccessibilityTree()
 {

Modified: trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm (171859 => 171860)


--- trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm	2014-07-31 16:45:19 UTC (rev 171859)
+++ trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm	2014-07-31 17:11:30 UTC (rev 171860)
@@ -101,6 +101,11 @@
     platformInitializeAccessibility();
 }
 
+void WebPage::platformDetach()
+{
+    [m_mockAccessibilityElement setWebPage:nullptr];
+}
+    
 void WebPage::platformInitializeAccessibility()
 {
     m_mockAccessibilityElement = adoptNS([[WKAccessibilityWebPageObject alloc] init]);

Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm (171859 => 171860)


--- trunk/Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm	2014-07-31 16:45:19 UTC (rev 171859)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm	2014-07-31 17:11:30 UTC (rev 171860)
@@ -102,6 +102,11 @@
     m_mockAccessibilityElement = mockAccessibilityElement;
 }
 
+void WebPage::platformDetach()
+{
+    [m_mockAccessibilityElement setWebPage:nullptr];
+}
+    
 NSObject *WebPage::accessibilityObjectForMainFramePlugin()
 {
     if (!m_page)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to