Changeset 246201 in webkit


Ignore:
Timestamp:
Jun 7, 2019 8:44:04 AM (5 years ago)
Author:
aestes@apple.com
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:
Location:
trunk/Source/WebKit
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r246196 r246201  
     12019-06-07  Andy Estes  <aestes@apple.com>
     2
     3        process-swap-on-navigation error when loading blocked website on iOS 12.2 only.
     4        https://bugs.webkit.org/show_bug.cgi?id=196930
     5        <rdar://problem/47819301>
     6
     7        Reviewed by Chris Dumez.
     8
     9        The ContentFilterDidBlockLoadForFrame message needs to be handled by ProvisionalPageProxy in
     10        order to look up the blocked frame in the correct WebProcessProxy.
     11
     12        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
     13        (WebKit::WebPageProxy::contentFilterDidBlockLoadForFrame):
     14        (WebKit::WebPageProxy::contentFilterDidBlockLoadForFrameShared):
     15        * UIProcess/ProvisionalPageProxy.cpp:
     16        (WebKit::ProvisionalPageProxy::contentFilterDidBlockLoadForFrame):
     17        (WebKit::ProvisionalPageProxy::didReceiveMessage):
     18        * UIProcess/ProvisionalPageProxy.h:
     19        * UIProcess/WebPageProxy.h:
     20
    1212019-06-07  Carlos Garcia Campos  <cgarcia@igalia.com>
    222
  • trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm

    r243327 r246201  
    104104void WebPageProxy::contentFilterDidBlockLoadForFrame(const WebCore::ContentFilterUnblockHandler& unblockHandler, uint64_t frameID)
    105105{
    106     if (WebFrameProxy* frame = m_process->webFrame(frameID))
     106    contentFilterDidBlockLoadForFrameShared(m_process.copyRef(), unblockHandler, frameID);
     107}
     108
     109void WebPageProxy::contentFilterDidBlockLoadForFrameShared(Ref<WebProcessProxy>&& process, const WebCore::ContentFilterUnblockHandler& unblockHandler, uint64_t frameID)
     110{
     111    if (WebFrameProxy* frame = process->webFrame(frameID))
    107112        frame->contentFilterDidBlockLoad(unblockHandler);
    108113}
  • trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.cpp

    r245796 r246201  
    377377#endif
    378378
     379#if ENABLE(CONTENT_FILTERING)
     380void ProvisionalPageProxy::contentFilterDidBlockLoadForFrame(const WebCore::ContentFilterUnblockHandler& unblockHandler, uint64_t frameID)
     381{
     382    m_page.contentFilterDidBlockLoadForFrameShared(m_process.copyRef(), unblockHandler, frameID);
     383}
     384#endif
     385
    379386void ProvisionalPageProxy::didReceiveMessage(IPC::Connection& connection, IPC::Decoder& decoder)
    380387{
     
    475482#endif
    476483
     484#if ENABLE(CONTENT_FILTERING)
     485    if (decoder.messageName() == Messages::WebPageProxy::ContentFilterDidBlockLoadForFrame::name()) {
     486        IPC::handleMessage<Messages::WebPageProxy::ContentFilterDidBlockLoadForFrame>(decoder, this, &ProvisionalPageProxy::contentFilterDidBlockLoadForFrame);
     487        return;
     488    }
     489#endif
     490
    477491    LOG(ProcessSwapping, "Unhandled message %s::%s from provisional process", decoder.messageReceiverName().toString().data(), decoder.messageName().toString().data());
    478492}
  • trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.h

    r245796 r246201  
    119119    void registerWebProcessAccessibilityToken(const IPC::DataReference&);
    120120#endif
     121#if ENABLE(CONTENT_FILTERING)
     122    void contentFilterDidBlockLoadForFrame(const WebCore::ContentFilterUnblockHandler&, uint64_t frameID);
     123#endif
    121124
    122125    void initializeWebPage();
  • trunk/Source/WebKit/UIProcess/WebPageProxy.h

    r246183 r246201  
    15221522    void didRequestPasswordForQuickLookDocumentInMainFrameShared(Ref<WebProcessProxy>&&, const String& fileName);
    15231523#endif
     1524#if ENABLE(CONTENT_FILTERING)
     1525    void contentFilterDidBlockLoadForFrameShared(Ref<WebProcessProxy>&&, const WebCore::ContentFilterUnblockHandler&, uint64_t frameID);
     1526#endif
    15241527
    15251528    void dumpAdClickAttribution(CompletionHandler<void(const String&)>&&);
Note: See TracChangeset for help on using the changeset viewer.