Title: [246201] trunk/Source/WebKit
Revision
246201
Author
aes...@apple.com
Date
2019-06-07 08:44:04 -0700 (Fri, 07 Jun 2019)

Log Message

process-swap-on-navigation error when loading blocked website on iOS 12.2 only.
https://bugs.webkit.org/show_bug.cgi?id=196930
<rdar://problem/47819301>

Reviewed by Chris Dumez.

The ContentFilterDidBlockLoadForFrame message needs to be handled by ProvisionalPageProxy in
order to look up the blocked frame in the correct WebProcessProxy.

* UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::contentFilterDidBlockLoadForFrame):
(WebKit::WebPageProxy::contentFilterDidBlockLoadForFrameShared):
* UIProcess/ProvisionalPageProxy.cpp:
(WebKit::ProvisionalPageProxy::contentFilterDidBlockLoadForFrame):
(WebKit::ProvisionalPageProxy::didReceiveMessage):
* UIProcess/ProvisionalPageProxy.h:
* UIProcess/WebPageProxy.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (246200 => 246201)


--- trunk/Source/WebKit/ChangeLog	2019-06-07 15:36:29 UTC (rev 246200)
+++ trunk/Source/WebKit/ChangeLog	2019-06-07 15:44:04 UTC (rev 246201)
@@ -1,3 +1,23 @@
+2019-06-07  Andy Estes  <aes...@apple.com>
+
+        process-swap-on-navigation error when loading blocked website on iOS 12.2 only.
+        https://bugs.webkit.org/show_bug.cgi?id=196930
+        <rdar://problem/47819301>
+
+        Reviewed by Chris Dumez.
+
+        The ContentFilterDidBlockLoadForFrame message needs to be handled by ProvisionalPageProxy in
+        order to look up the blocked frame in the correct WebProcessProxy.
+
+        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
+        (WebKit::WebPageProxy::contentFilterDidBlockLoadForFrame):
+        (WebKit::WebPageProxy::contentFilterDidBlockLoadForFrameShared):
+        * UIProcess/ProvisionalPageProxy.cpp:
+        (WebKit::ProvisionalPageProxy::contentFilterDidBlockLoadForFrame):
+        (WebKit::ProvisionalPageProxy::didReceiveMessage):
+        * UIProcess/ProvisionalPageProxy.h:
+        * UIProcess/WebPageProxy.h:
+
 2019-06-07  Carlos Garcia Campos  <cgar...@igalia.com>
 
         Unreviewed. Fix api used to release wpe_fdo_egl_exported_image in GTK

Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm (246200 => 246201)


--- trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm	2019-06-07 15:36:29 UTC (rev 246200)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm	2019-06-07 15:44:04 UTC (rev 246201)
@@ -103,7 +103,12 @@
 #if ENABLE(CONTENT_FILTERING)
 void WebPageProxy::contentFilterDidBlockLoadForFrame(const WebCore::ContentFilterUnblockHandler& unblockHandler, uint64_t frameID)
 {
-    if (WebFrameProxy* frame = m_process->webFrame(frameID))
+    contentFilterDidBlockLoadForFrameShared(m_process.copyRef(), unblockHandler, frameID);
+}
+
+void WebPageProxy::contentFilterDidBlockLoadForFrameShared(Ref<WebProcessProxy>&& process, const WebCore::ContentFilterUnblockHandler& unblockHandler, uint64_t frameID)
+{
+    if (WebFrameProxy* frame = process->webFrame(frameID))
         frame->contentFilterDidBlockLoad(unblockHandler);
 }
 #endif

Modified: trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.cpp (246200 => 246201)


--- trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.cpp	2019-06-07 15:36:29 UTC (rev 246200)
+++ trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.cpp	2019-06-07 15:44:04 UTC (rev 246201)
@@ -376,6 +376,13 @@
 }
 #endif
 
+#if ENABLE(CONTENT_FILTERING)
+void ProvisionalPageProxy::contentFilterDidBlockLoadForFrame(const WebCore::ContentFilterUnblockHandler& unblockHandler, uint64_t frameID)
+{
+    m_page.contentFilterDidBlockLoadForFrameShared(m_process.copyRef(), unblockHandler, frameID);
+}
+#endif
+
 void ProvisionalPageProxy::didReceiveMessage(IPC::Connection& connection, IPC::Decoder& decoder)
 {
     ASSERT(decoder.messageReceiverName() == Messages::WebPageProxy::messageReceiverName());
@@ -474,6 +481,13 @@
     }
 #endif
 
+#if ENABLE(CONTENT_FILTERING)
+    if (decoder.messageName() == Messages::WebPageProxy::ContentFilterDidBlockLoadForFrame::name()) {
+        IPC::handleMessage<Messages::WebPageProxy::ContentFilterDidBlockLoadForFrame>(decoder, this, &ProvisionalPageProxy::contentFilterDidBlockLoadForFrame);
+        return;
+    }
+#endif
+
     LOG(ProcessSwapping, "Unhandled message %s::%s from provisional process", decoder.messageReceiverName().toString().data(), decoder.messageName().toString().data());
 }
 

Modified: trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.h (246200 => 246201)


--- trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.h	2019-06-07 15:36:29 UTC (rev 246200)
+++ trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.h	2019-06-07 15:44:04 UTC (rev 246201)
@@ -118,6 +118,9 @@
 #if PLATFORM(COCOA)
     void registerWebProcessAccessibilityToken(const IPC::DataReference&);
 #endif
+#if ENABLE(CONTENT_FILTERING)
+    void contentFilterDidBlockLoadForFrame(const WebCore::ContentFilterUnblockHandler&, uint64_t frameID);
+#endif
 
     void initializeWebPage();
     bool validateInput(uint64_t frameID, const Optional<uint64_t>& navigationID = WTF::nullopt);

Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (246200 => 246201)


--- trunk/Source/WebKit/UIProcess/WebPageProxy.h	2019-06-07 15:36:29 UTC (rev 246200)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h	2019-06-07 15:44:04 UTC (rev 246201)
@@ -1521,6 +1521,9 @@
 #if USE(QUICK_LOOK)
     void didRequestPasswordForQuickLookDocumentInMainFrameShared(Ref<WebProcessProxy>&&, const String& fileName);
 #endif
+#if ENABLE(CONTENT_FILTERING)
+    void contentFilterDidBlockLoadForFrameShared(Ref<WebProcessProxy>&&, const WebCore::ContentFilterUnblockHandler&, uint64_t frameID);
+#endif
 
     void dumpAdClickAttribution(CompletionHandler<void(const String&)>&&);
     void clearAdClickAttribution(CompletionHandler<void()>&&);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to