Changeset 240055 in webkit


Ignore:
Timestamp:
Jan 16, 2019 3:17:02 PM (5 years ago)
Author:
Chris Dumez
Message:

Regression(r240046) Several API tests are crashing
https://bugs.webkit.org/show_bug.cgi?id=193509

Reviewed by Geoffrey Garen.

The crashes would happen because loadRequestShared() would take a WebProcessProxy& in parameter but
then call reattachToWebProcess() if the page is not valid, which would replace m_process and invalidate
our process reference.

To address the issue, move the reattachToWebProcess() call to loadRequest(), before calling
loadRequestShared(). Also, update *Shared() methods to take a Ref<WebProcessProxy>&& instead
of a WebProcessProxy& in parameter. Since we call client delegates, we need to make sure
our process stays alive.

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::loadData):
(WebKit::ProvisionalPageProxy::loadRequest):
(WebKit::ProvisionalPageProxy::didCreateMainFrame):
(WebKit::ProvisionalPageProxy::didPerformClientRedirect):
(WebKit::ProvisionalPageProxy::didStartProvisionalLoadForFrame):
(WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
(WebKit::ProvisionalPageProxy::didNavigateWithNavigationData):
(WebKit::ProvisionalPageProxy::didChangeProvisionalURLForFrame):
(WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionAsync):
(WebKit::ProvisionalPageProxy::decidePolicyForResponse):
(WebKit::ProvisionalPageProxy::startURLSchemeTask):
(WebKit::ProvisionalPageProxy::backForwardGoToItem):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::loadRequest):
(WebKit::WebPageProxy::loadRequestWithNavigationShared):
(WebKit::WebPageProxy::loadData):
(WebKit::WebPageProxy::loadDataWithNavigationShared):
(WebKit::WebPageProxy::didPerformDragControllerAction):
(WebKit::WebPageProxy::findPlugin):
(WebKit::WebPageProxy::didCreateMainFrame):
(WebKit::WebPageProxy::didCreateSubframe):
(WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
(WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
(WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::willPerformClientRedirectForFrame):
(WebKit::WebPageProxy::didCancelClientRedirectForFrame):
(WebKit::WebPageProxy::didChangeProvisionalURLForFrame):
(WebKit::WebPageProxy::didChangeProvisionalURLForFrameShared):
(WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
(WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
(WebKit::WebPageProxy::didFinishLoadForFrame):
(WebKit::WebPageProxy::didFailLoadForFrame):
(WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
(WebKit::WebPageProxy::didReceiveTitleForFrame):
(WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame):
(WebKit::WebPageProxy::didDisplayInsecureContentForFrame):
(WebKit::WebPageProxy::didRunInsecureContentForFrame):
(WebKit::WebPageProxy::frameDidBecomeFrameSet):
(WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
(WebKit::WebPageProxy::decidePolicyForNavigationActionAsyncShared):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
(WebKit::WebPageProxy::decidePolicyForNewWindowAction):
(WebKit::WebPageProxy::decidePolicyForResponse):
(WebKit::WebPageProxy::decidePolicyForResponseShared):
(WebKit::WebPageProxy::unableToImplementPolicy):
(WebKit::WebPageProxy::willSubmitForm):
(WebKit::WebPageProxy::didNavigateWithNavigationData):
(WebKit::WebPageProxy::didNavigateWithNavigationDataShared):
(WebKit::WebPageProxy::didPerformClientRedirect):
(WebKit::WebPageProxy::didPerformClientRedirectShared):
(WebKit::WebPageProxy::didPerformServerRedirect):
(WebKit::WebPageProxy::didUpdateHistoryTitle):
(WebKit::WebPageProxy::createNewPage):
(WebKit::WebPageProxy::runJavaScriptAlert):
(WebKit::WebPageProxy::runJavaScriptConfirm):
(WebKit::WebPageProxy::runJavaScriptPrompt):
(WebKit::WebPageProxy::unavailablePluginButtonClicked):
(WebKit::WebPageProxy::runBeforeUnloadConfirmPanel):
(WebKit::WebPageProxy::runOpenPanel):
(WebKit::WebPageProxy::printFrame):
(WebKit::WebPageProxy::backForwardGoToItem):
(WebKit::WebPageProxy::backForwardGoToItemShared):
(WebKit::WebPageProxy::learnWord):
(WebKit::WebPageProxy::ignoreWord):
(WebKit::WebPageProxy::didReceiveEvent):
(WebKit::WebPageProxy::editingRangeCallback):
(WebKit::WebPageProxy::rectForCharacterRangeCallback):
(WebKit::WebPageProxy::focusedFrameChanged):
(WebKit::WebPageProxy::frameSetLargestFrameChanged):
(WebKit::WebPageProxy::exceededDatabaseQuota):
(WebKit::WebPageProxy::requestGeolocationPermissionForFrame):
(WebKit::WebPageProxy::requestUserMediaPermissionForFrame):
(WebKit::WebPageProxy::enumerateMediaDevicesForFrame):
(WebKit::WebPageProxy::startURLSchemeTask):
(WebKit::WebPageProxy::startURLSchemeTaskShared):
(WebKit::WebPageProxy::stopURLSchemeTask):
(WebKit::WebPageProxy::loadSynchronousURLSchemeTask):

  • UIProcess/WebPageProxy.h:
Location:
trunk/Source/WebKit
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r240046 r240055  
     12019-01-16  Chris Dumez  <cdumez@apple.com>
     2
     3        Regression(r240046) Several API tests are crashing
     4        https://bugs.webkit.org/show_bug.cgi?id=193509
     5
     6        Reviewed by Geoffrey Garen.
     7
     8        The crashes would happen because loadRequestShared() would take a WebProcessProxy& in parameter but
     9        then call reattachToWebProcess() if the page is not valid, which would replace m_process and invalidate
     10        our process reference.
     11
     12        To address the issue, move the reattachToWebProcess() call to loadRequest(), before calling
     13        loadRequestShared(). Also, update *Shared() methods to take a Ref<WebProcessProxy>&& instead
     14        of a WebProcessProxy& in parameter. Since we call client delegates, we need to make sure
     15        our process stays alive.
     16
     17        * UIProcess/ProvisionalPageProxy.cpp:
     18        (WebKit::ProvisionalPageProxy::loadData):
     19        (WebKit::ProvisionalPageProxy::loadRequest):
     20        (WebKit::ProvisionalPageProxy::didCreateMainFrame):
     21        (WebKit::ProvisionalPageProxy::didPerformClientRedirect):
     22        (WebKit::ProvisionalPageProxy::didStartProvisionalLoadForFrame):
     23        (WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
     24        (WebKit::ProvisionalPageProxy::didNavigateWithNavigationData):
     25        (WebKit::ProvisionalPageProxy::didChangeProvisionalURLForFrame):
     26        (WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionAsync):
     27        (WebKit::ProvisionalPageProxy::decidePolicyForResponse):
     28        (WebKit::ProvisionalPageProxy::startURLSchemeTask):
     29        (WebKit::ProvisionalPageProxy::backForwardGoToItem):
     30        * UIProcess/WebPageProxy.cpp:
     31        (WebKit::WebPageProxy::loadRequest):
     32        (WebKit::WebPageProxy::loadRequestWithNavigationShared):
     33        (WebKit::WebPageProxy::loadData):
     34        (WebKit::WebPageProxy::loadDataWithNavigationShared):
     35        (WebKit::WebPageProxy::didPerformDragControllerAction):
     36        (WebKit::WebPageProxy::findPlugin):
     37        (WebKit::WebPageProxy::didCreateMainFrame):
     38        (WebKit::WebPageProxy::didCreateSubframe):
     39        (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
     40        (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
     41        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
     42        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrameShared):
     43        (WebKit::WebPageProxy::willPerformClientRedirectForFrame):
     44        (WebKit::WebPageProxy::didCancelClientRedirectForFrame):
     45        (WebKit::WebPageProxy::didChangeProvisionalURLForFrame):
     46        (WebKit::WebPageProxy::didChangeProvisionalURLForFrameShared):
     47        (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
     48        (WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared):
     49        (WebKit::WebPageProxy::didCommitLoadForFrame):
     50        (WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
     51        (WebKit::WebPageProxy::didFinishLoadForFrame):
     52        (WebKit::WebPageProxy::didFailLoadForFrame):
     53        (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
     54        (WebKit::WebPageProxy::didReceiveTitleForFrame):
     55        (WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame):
     56        (WebKit::WebPageProxy::didDisplayInsecureContentForFrame):
     57        (WebKit::WebPageProxy::didRunInsecureContentForFrame):
     58        (WebKit::WebPageProxy::frameDidBecomeFrameSet):
     59        (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
     60        (WebKit::WebPageProxy::decidePolicyForNavigationActionAsyncShared):
     61        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
     62        (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
     63        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
     64        (WebKit::WebPageProxy::decidePolicyForResponse):
     65        (WebKit::WebPageProxy::decidePolicyForResponseShared):
     66        (WebKit::WebPageProxy::unableToImplementPolicy):
     67        (WebKit::WebPageProxy::willSubmitForm):
     68        (WebKit::WebPageProxy::didNavigateWithNavigationData):
     69        (WebKit::WebPageProxy::didNavigateWithNavigationDataShared):
     70        (WebKit::WebPageProxy::didPerformClientRedirect):
     71        (WebKit::WebPageProxy::didPerformClientRedirectShared):
     72        (WebKit::WebPageProxy::didPerformServerRedirect):
     73        (WebKit::WebPageProxy::didUpdateHistoryTitle):
     74        (WebKit::WebPageProxy::createNewPage):
     75        (WebKit::WebPageProxy::runJavaScriptAlert):
     76        (WebKit::WebPageProxy::runJavaScriptConfirm):
     77        (WebKit::WebPageProxy::runJavaScriptPrompt):
     78        (WebKit::WebPageProxy::unavailablePluginButtonClicked):
     79        (WebKit::WebPageProxy::runBeforeUnloadConfirmPanel):
     80        (WebKit::WebPageProxy::runOpenPanel):
     81        (WebKit::WebPageProxy::printFrame):
     82        (WebKit::WebPageProxy::backForwardGoToItem):
     83        (WebKit::WebPageProxy::backForwardGoToItemShared):
     84        (WebKit::WebPageProxy::learnWord):
     85        (WebKit::WebPageProxy::ignoreWord):
     86        (WebKit::WebPageProxy::didReceiveEvent):
     87        (WebKit::WebPageProxy::editingRangeCallback):
     88        (WebKit::WebPageProxy::rectForCharacterRangeCallback):
     89        (WebKit::WebPageProxy::focusedFrameChanged):
     90        (WebKit::WebPageProxy::frameSetLargestFrameChanged):
     91        (WebKit::WebPageProxy::exceededDatabaseQuota):
     92        (WebKit::WebPageProxy::requestGeolocationPermissionForFrame):
     93        (WebKit::WebPageProxy::requestUserMediaPermissionForFrame):
     94        (WebKit::WebPageProxy::enumerateMediaDevicesForFrame):
     95        (WebKit::WebPageProxy::startURLSchemeTask):
     96        (WebKit::WebPageProxy::startURLSchemeTaskShared):
     97        (WebKit::WebPageProxy::stopURLSchemeTask):
     98        (WebKit::WebPageProxy::loadSynchronousURLSchemeTask):
     99        * UIProcess/WebPageProxy.h:
     100
    11012019-01-16  Chris Dumez  <cdumez@apple.com>
    2102
  • trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.cpp

    r240046 r240055  
    148148    RELEASE_LOG_IF_ALLOWED(ProcessSwapping, "loadData: pageID = %" PRIu64, m_page.pageID());
    149149
    150     m_page.loadDataWithNavigationShared(m_process, navigation, data, MIMEType, encoding, baseURL, userData, WebCore::ShouldTreatAsContinuingLoad::Yes, WTFMove(websitePolicies));
     150    m_page.loadDataWithNavigationShared(m_process.copyRef(), navigation, data, MIMEType, encoding, baseURL, userData, WebCore::ShouldTreatAsContinuingLoad::Yes, WTFMove(websitePolicies));
    151151}
    152152
     
    155155    RELEASE_LOG_IF_ALLOWED(ProcessSwapping, "loadRequest: pageID = %" PRIu64, m_page.pageID());
    156156
    157     m_page.loadRequestWithNavigationShared(m_process, navigation, WTFMove(request), shouldOpenExternalURLsPolicy, userData, WebCore::ShouldTreatAsContinuingLoad::Yes, WTFMove(websitePolicies));
     157    m_page.loadRequestWithNavigationShared(m_process.copyRef(), navigation, WTFMove(request), shouldOpenExternalURLsPolicy, userData, WebCore::ShouldTreatAsContinuingLoad::Yes, WTFMove(websitePolicies));
    158158}
    159159
     
    197197    if (m_isServerRedirect) {
    198198        m_mainFrame->frameLoadState().didStartProvisionalLoad(m_request.url());
    199         m_page.didReceiveServerRedirectForProvisionalLoadForFrameShared(m_process, m_mainFrame->frameID(), m_navigationID, WTFMove(m_request), { });
     199        m_page.didReceiveServerRedirectForProvisionalLoadForFrameShared(m_process.copyRef(), m_mainFrame->frameID(), m_navigationID, WTFMove(m_request), { });
    200200    }
    201201}
     
    203203void ProvisionalPageProxy::didPerformClientRedirect(const String& sourceURLString, const String& destinationURLString, uint64_t frameID)
    204204{
    205     m_page.didPerformClientRedirectShared(m_process, sourceURLString, destinationURLString, frameID);
     205    m_page.didPerformClientRedirectShared(m_process.copyRef(), sourceURLString, destinationURLString, frameID);
    206206}
    207207
     
    224224        pageMainFrame->didStartProvisionalLoad(url);
    225225
    226     m_page.didStartProvisionalLoadForFrameShared(m_process, frameID, navigationID, WTFMove(url), WTFMove(unreachableURL), userData);
     226    m_page.didStartProvisionalLoadForFrameShared(m_process.copyRef(), frameID, navigationID, WTFMove(url), WTFMove(unreachableURL), userData);
    227227}
    228228
     
    236236        pageMainFrame->didFailProvisionalLoad();
    237237
    238     m_page.didFailProvisionalLoadForFrameShared(m_process, frameID, frameSecurityOrigin, navigationID, provisionalURL, error, userData); // Will delete |this|.
     238    m_page.didFailProvisionalLoadForFrameShared(m_process.copyRef(), frameID, frameSecurityOrigin, navigationID, provisionalURL, error, userData); // Will delete |this|.
    239239}
    240240
     
    255255void ProvisionalPageProxy::didNavigateWithNavigationData(const WebNavigationDataStore& store, uint64_t frameID)
    256256{
    257     m_page.didNavigateWithNavigationDataShared(m_process, store, frameID);
     257    m_page.didNavigateWithNavigationDataShared(m_process.copyRef(), store, frameID);
    258258}
    259259
    260260void ProvisionalPageProxy::didChangeProvisionalURLForFrame(uint64_t frameID, uint64_t navigationID, URL&& url)
    261261{
    262     m_page.didChangeProvisionalURLForFrameShared(m_process, frameID, navigationID, WTFMove(url));
     262    m_page.didChangeProvisionalURLForFrameShared(m_process.copyRef(), frameID, navigationID, WTFMove(url));
    263263}
    264264
    265265void ProvisionalPageProxy::decidePolicyForNavigationActionAsync(uint64_t frameID, WebCore::SecurityOriginData&& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&& navigationActionData, FrameInfoData&& frameInfoData, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&& request, IPC::FormDataReference&& requestBody, WebCore::ResourceResponse&& redirectResponse, const UserData& userData, uint64_t listenerID)
    266266{
    267     m_page.decidePolicyForNavigationActionAsyncShared(m_process, frameID, WTFMove(frameSecurityOrigin), navigationID, WTFMove(navigationActionData), WTFMove(frameInfoData), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(redirectResponse), userData, listenerID);
     267    m_page.decidePolicyForNavigationActionAsyncShared(m_process.copyRef(), frameID, WTFMove(frameSecurityOrigin), navigationID, WTFMove(navigationActionData), WTFMove(frameInfoData), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(redirectResponse), userData, listenerID);
    268268}
    269269
    270270void ProvisionalPageProxy::decidePolicyForResponse(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, const WebCore::ResourceResponse& response, const WebCore::ResourceRequest& request, bool canShowMIMEType, uint64_t listenerID, const UserData& userData)
    271271{
    272     m_page.decidePolicyForResponseShared(m_process, frameID, frameSecurityOrigin, navigationID, response, request, canShowMIMEType, listenerID, userData);
     272    m_page.decidePolicyForResponseShared(m_process.copyRef(), frameID, frameSecurityOrigin, navigationID, response, request, canShowMIMEType, listenerID, userData);
    273273}
    274274
    275275void ProvisionalPageProxy::startURLSchemeTask(URLSchemeTaskParameters&& parameters)
    276276{
    277     m_page.startURLSchemeTaskShared(m_process, WTFMove(parameters));
     277    m_page.startURLSchemeTaskShared(m_process.copyRef(), WTFMove(parameters));
    278278}
    279279
    280280void ProvisionalPageProxy::backForwardGoToItem(const WebCore::BackForwardItemIdentifier& identifier, SandboxExtension::Handle& handle)
    281281{
    282     m_page.backForwardGoToItemShared(m_process, identifier, handle);
     282    m_page.backForwardGoToItemShared(m_process.copyRef(), identifier, handle);
    283283}
    284284
  • trunk/Source/WebKit/UIProcess/WebPageProxy.cpp

    r240046 r240055  
    238238#define MERGE_WHEEL_EVENTS 1
    239239
    240 #define MESSAGE_CHECK(process, assertion) MESSAGE_CHECK_BASE(assertion, process.connection())
    241 #define MESSAGE_CHECK_URL(process, url) MESSAGE_CHECK_BASE(checkURLReceivedFromCurrentOrPreviousWebProcess(process, url), process.connection())
     240#define MESSAGE_CHECK(process, assertion) MESSAGE_CHECK_BASE(assertion, process->connection())
     241#define MESSAGE_CHECK_URL(process, url) MESSAGE_CHECK_BASE(checkURLReceivedFromCurrentOrPreviousWebProcess(process, url), process->connection())
    242242
    243243#define RELEASE_LOG_IF_ALLOWED(channel, fmt, ...) RELEASE_LOG_IF(isAlwaysOnLoggingAllowed(), channel, "%p - WebPageProxy::" fmt, this, ##__VA_ARGS__)
     
    10601060    RELEASE_LOG_IF_ALLOWED(Loading, "loadRequest: webPID = %i, pageID = %" PRIu64, m_process->processIdentifier(), m_pageID);
    10611061
     1062    if (!isValid())
     1063        reattachToWebProcess();
     1064
    10621065    auto navigation = m_navigationState->createLoadRequestNavigation(ResourceRequest(request), m_backForwardList->currentItem());
    1063     loadRequestWithNavigationShared(m_process, navigation.get(), WTFMove(request), shouldOpenExternalURLsPolicy, userData, ShouldTreatAsContinuingLoad::No);
     1066    loadRequestWithNavigationShared(m_process.copyRef(), navigation.get(), WTFMove(request), shouldOpenExternalURLsPolicy, userData, ShouldTreatAsContinuingLoad::No);
    10641067    return WTFMove(navigation);
    10651068}
    10661069
    1067 void WebPageProxy::loadRequestWithNavigationShared(WebProcessProxy& process, API::Navigation& navigation, ResourceRequest&& request, ShouldOpenExternalURLsPolicy shouldOpenExternalURLsPolicy, API::Object* userData, ShouldTreatAsContinuingLoad shouldTreatAsContinuingLoad, Optional<WebsitePoliciesData>&& websitePolicies)
     1070void WebPageProxy::loadRequestWithNavigationShared(Ref<WebProcessProxy>&& process, API::Navigation& navigation, ResourceRequest&& request, ShouldOpenExternalURLsPolicy shouldOpenExternalURLsPolicy, API::Object* userData, ShouldTreatAsContinuingLoad shouldTreatAsContinuingLoad, Optional<WebsitePoliciesData>&& websitePolicies)
    10681071{
    10691072    ASSERT(!m_isClosed);
    10701073
    1071     RELEASE_LOG_IF_ALLOWED(Loading, "loadRequestWithNavigation: webPID = %i, pageID = %" PRIu64, process.processIdentifier(), m_pageID);
     1074    RELEASE_LOG_IF_ALLOWED(Loading, "loadRequestWithNavigation: webPID = %i, pageID = %" PRIu64, process->processIdentifier(), m_pageID);
    10721075
    10731076    auto transaction = m_pageLoadState.transaction();
     
    10761079    if (shouldTreatAsContinuingLoad != ShouldTreatAsContinuingLoad::Yes)
    10771080        m_pageLoadState.setPendingAPIRequestURL(transaction, url);
    1078 
    1079     if (!isValid())
    1080         reattachToWebProcess();
    10811081
    10821082    LoadParameters loadParameters;
     
    10841084    loadParameters.request = WTFMove(request);
    10851085    loadParameters.shouldOpenExternalURLsPolicy = (uint64_t)shouldOpenExternalURLsPolicy;
    1086     loadParameters.userData = UserData(process.transformObjectsToHandles(userData).get());
     1086    loadParameters.userData = UserData(process->transformObjectsToHandles(userData).get());
    10871087    loadParameters.shouldTreatAsContinuingLoad = shouldTreatAsContinuingLoad == ShouldTreatAsContinuingLoad::Yes;
    10881088    loadParameters.websitePolicies = WTFMove(websitePolicies);
     
    10951095    addPlatformLoadParameters(loadParameters);
    10961096
    1097     process.send(Messages::WebPage::LoadRequest(loadParameters), m_pageID);
    1098     process.responsivenessTimer().start();
     1097    process->send(Messages::WebPage::LoadRequest(loadParameters), m_pageID);
     1098    process->responsivenessTimer().start();
    10991099}
    11001100
     
    11601160    }
    11611161
     1162    if (!isValid())
     1163        reattachToWebProcess();
     1164
    11621165    auto navigation = m_navigationState->createLoadDataNavigation(std::make_unique<API::SubstituteData>(data.vector(), MIMEType, encoding, baseURL, userData));
    1163     loadDataWithNavigationShared(m_process, navigation, data, MIMEType, encoding, baseURL, userData, ShouldTreatAsContinuingLoad::No);
     1166    loadDataWithNavigationShared(m_process.copyRef(), navigation, data, MIMEType, encoding, baseURL, userData, ShouldTreatAsContinuingLoad::No);
    11641167    return WTFMove(navigation);
    11651168}
    11661169
    1167 void WebPageProxy::loadDataWithNavigationShared(WebProcessProxy& process, API::Navigation& navigation, const IPC::DataReference& data, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData, ShouldTreatAsContinuingLoad shouldTreatAsContinuingLoad, Optional<WebsitePoliciesData>&& websitePolicies)
    1168 {
    1169     RELEASE_LOG_IF_ALLOWED(Loading, "loadDataWithNavigation: webPID = %i, pageID = %" PRIu64, process.processIdentifier(), m_pageID);
     1170void WebPageProxy::loadDataWithNavigationShared(Ref<WebProcessProxy>&& process, API::Navigation& navigation, const IPC::DataReference& data, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData, ShouldTreatAsContinuingLoad shouldTreatAsContinuingLoad, Optional<WebsitePoliciesData>&& websitePolicies)
     1171{
     1172    RELEASE_LOG_IF_ALLOWED(Loading, "loadDataWithNavigation: webPID = %i, pageID = %" PRIu64, process->processIdentifier(), m_pageID);
    11701173
    11711174    ASSERT(!m_isClosed);
     
    11741177
    11751178    m_pageLoadState.setPendingAPIRequestURL(transaction, !baseURL.isEmpty() ? baseURL : WTF::blankURL().string());
    1176 
    1177     if (!isValid())
    1178         reattachToWebProcess();
    11791179
    11801180    LoadParameters loadParameters;
     
    11851185    loadParameters.baseURLString = baseURL;
    11861186    loadParameters.shouldTreatAsContinuingLoad = shouldTreatAsContinuingLoad == ShouldTreatAsContinuingLoad::Yes;
    1187     loadParameters.userData = UserData(process.transformObjectsToHandles(userData).get());
     1187    loadParameters.userData = UserData(process->transformObjectsToHandles(userData).get());
    11881188    loadParameters.websitePolicies = WTFMove(websitePolicies);
    11891189    addPlatformLoadParameters(loadParameters);
    11901190
    1191     process.assumeReadAccessToBaseURL(*this, baseURL);
    1192     process.send(Messages::WebPage::LoadData(loadParameters), m_pageID);
    1193     process.responsivenessTimer().start();
     1191    process->assumeReadAccessToBaseURL(*this, baseURL);
     1192    process->send(Messages::WebPage::LoadData(loadParameters), m_pageID);
     1193    process->responsivenessTimer().start();
    11941194}
    11951195
     
    20952095void WebPageProxy::didPerformDragControllerAction(uint64_t dragOperation, WebCore::DragHandlingMethod dragHandlingMethod, bool mouseIsOverFileInput, unsigned numberOfItemsToBeAccepted, const IntRect& insertionRect, const IntRect& editableElementRect)
    20962096{
    2097     MESSAGE_CHECK(m_process.get(), dragOperation <= DragOperationDelete);
     2097    MESSAGE_CHECK(m_process, dragOperation <= DragOperationDelete);
    20982098
    20992099    m_currentDragOperation = static_cast<DragOperation>(dragOperation);
     
    24082408    PageClientProtector protector(pageClient());
    24092409
    2410     MESSAGE_CHECK_URL(process(), urlString);
     2410    MESSAGE_CHECK_URL(m_process, urlString);
    24112411
    24122412    URL pluginURL = URL { URL(), urlString };
     
    36723672    PageClientProtector protector(pageClient());
    36733673
    3674     MESSAGE_CHECK(m_process.get(), !m_mainFrame);
    3675     MESSAGE_CHECK(m_process.get(), m_process->canCreateFrame(frameID));
     3674    MESSAGE_CHECK(m_process, !m_mainFrame);
     3675    MESSAGE_CHECK(m_process, m_process->canCreateFrame(frameID));
    36763676
    36773677    m_mainFrame = WebFrameProxy::create(*this, frameID);
     
    36853685    PageClientProtector protector(pageClient());
    36863686
    3687     MESSAGE_CHECK(m_process.get(), m_mainFrame);
     3687    MESSAGE_CHECK(m_process, m_mainFrame);
    36883688
    36893689    // The DecidePolicyForNavigationActionSync IPC is synchronous and may therefore get processed before the DidCreateSubframe one.
     
    36933693        return;
    36943694
    3695     MESSAGE_CHECK(m_process.get(), m_process->canCreateFrame(frameID));
     3695    MESSAGE_CHECK(m_process, m_process->canCreateFrame(frameID));
    36963696   
    36973697    auto subFrame = WebFrameProxy::create(*this, frameID);
     
    37653765void WebPageProxy::didStartProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, URL&& url, URL&& unreachableURL, const UserData& userData)
    37663766{
    3767     didStartProvisionalLoadForFrameShared(m_process, frameID, navigationID, WTFMove(url), WTFMove(unreachableURL), userData);
    3768 }
    3769 
    3770 void WebPageProxy::didStartProvisionalLoadForFrameShared(WebProcessProxy& process, uint64_t frameID, uint64_t navigationID, URL&& url, URL&& unreachableURL, const UserData& userData)
     3767    didStartProvisionalLoadForFrameShared(m_process.copyRef(), frameID, navigationID, WTFMove(url), WTFMove(unreachableURL), userData);
     3768}
     3769
     3770void WebPageProxy::didStartProvisionalLoadForFrameShared(Ref<WebProcessProxy>&& process, uint64_t frameID, uint64_t navigationID, URL&& url, URL&& unreachableURL, const UserData& userData)
    37713771{
    37723772    PageClientProtector protector(pageClient());
    37733773
    3774     WebFrameProxy* frame = process.webFrame(frameID);
     3774    WebFrameProxy* frame = process->webFrame(frameID);
    37753775    MESSAGE_CHECK(process, frame);
    37763776    MESSAGE_CHECK_URL(process, url);
     
    37813781        navigation = navigationState().navigation(navigationID);
    37823782
    3783     LOG(Loading, "WebPageProxy %" PRIu64 " in process pid %i didStartProvisionalLoadForFrame to frameID %" PRIu64 ", navigationID %" PRIu64 ", url %s", m_pageID, process.processIdentifier(), frameID, navigationID, url.string().utf8().data());
    3784     RELEASE_LOG_IF_ALLOWED(Loading, "didStartProvisionalLoadForFrame: webPID = %i, pageID = %" PRIu64 ", frameID = %" PRIu64, process.processIdentifier(), m_pageID, frameID);
     3783    LOG(Loading, "WebPageProxy %" PRIu64 " in process pid %i didStartProvisionalLoadForFrame to frameID %" PRIu64 ", navigationID %" PRIu64 ", url %s", m_pageID, process->processIdentifier(), frameID, navigationID, url.string().utf8().data());
     3784    RELEASE_LOG_IF_ALLOWED(Loading, "didStartProvisionalLoadForFrame: webPID = %i, pageID = %" PRIu64 ", frameID = %" PRIu64, process->processIdentifier(), m_pageID, frameID);
    37853785
    37863786    auto transaction = m_pageLoadState.transaction();
     
    38013801    m_pageLoadState.commitChanges();
    38023802    if (m_loaderClient)
    3803         m_loaderClient->didStartProvisionalLoadForFrame(*this, *frame, navigation.get(), process.transformHandlesToObjects(userData.object()).get());
     3803        m_loaderClient->didStartProvisionalLoadForFrame(*this, *frame, navigation.get(), process->transformHandlesToObjects(userData.object()).get());
    38043804    else if (frame->isMainFrame())
    3805         m_navigationClient->didStartProvisionalNavigation(*this, navigation.get(), process.transformHandlesToObjects(userData.object()).get());
     3805        m_navigationClient->didStartProvisionalNavigation(*this, navigation.get(), process->transformHandlesToObjects(userData.object()).get());
    38063806}
    38073807
    38083808void WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, ResourceRequest&& request, const UserData& userData)
    38093809{
    3810     didReceiveServerRedirectForProvisionalLoadForFrameShared(m_process, frameID, navigationID, WTFMove(request), userData);
    3811 }
    3812 
    3813 void WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrameShared(WebProcessProxy& process, uint64_t frameID, uint64_t navigationID, ResourceRequest&& request, const UserData& userData)
     3810    didReceiveServerRedirectForProvisionalLoadForFrameShared(m_process.copyRef(), frameID, navigationID, WTFMove(request), userData);
     3811}
     3812
     3813void WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrameShared(Ref<WebProcessProxy>&& process, uint64_t frameID, uint64_t navigationID, ResourceRequest&& request, const UserData& userData)
    38143814{
    38153815    LOG(Loading, "WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame to frameID %" PRIu64 ", navigationID %" PRIu64 ", url %s", frameID, navigationID, request.url().string().utf8().data());
    3816     RELEASE_LOG_IF_ALLOWED(Loading, "didReceiveServerRedirectForProvisionalLoadForFrame: webPID = %i, pageID = %" PRIu64 ", frameID = %" PRIu64, process.processIdentifier(), m_pageID, frameID);
     3816    RELEASE_LOG_IF_ALLOWED(Loading, "didReceiveServerRedirectForProvisionalLoadForFrame: webPID = %i, pageID = %" PRIu64 ", frameID = %" PRIu64, process->processIdentifier(), m_pageID, frameID);
    38173817
    38183818    PageClientProtector protector(pageClient());
    38193819
    3820     WebFrameProxy* frame = process.webFrame(frameID);
     3820    WebFrameProxy* frame = process->webFrame(frameID);
    38213821    MESSAGE_CHECK(process, frame);
    38223822    MESSAGE_CHECK_URL(process, request.url());
     
    38363836    m_pageLoadState.commitChanges();
    38373837    if (m_loaderClient)
    3838         m_loaderClient->didReceiveServerRedirectForProvisionalLoadForFrame(*this, *frame, frame->isMainFrame() ? navigation.get() : nullptr, process.transformHandlesToObjects(userData.object()).get());
     3838        m_loaderClient->didReceiveServerRedirectForProvisionalLoadForFrame(*this, *frame, frame->isMainFrame() ? navigation.get() : nullptr, process->transformHandlesToObjects(userData.object()).get());
    38393839    else if (frame->isMainFrame())
    3840         m_navigationClient->didReceiveServerRedirectForProvisionalNavigation(*this, navigation.get(), process.transformHandlesToObjects(userData.object()).get());
     3840        m_navigationClient->didReceiveServerRedirectForProvisionalNavigation(*this, navigation.get(), process->transformHandlesToObjects(userData.object()).get());
    38413841}
    38423842
     
    38483848
    38493849    WebFrameProxy* frame = m_process->webFrame(frameID);
    3850     MESSAGE_CHECK(m_process.get(), frame);
     3850    MESSAGE_CHECK(m_process, frame);
    38513851
    38523852    if (frame->isMainFrame())
     
    38613861
    38623862    WebFrameProxy* frame = m_process->webFrame(frameID);
    3863     MESSAGE_CHECK(m_process.get(), frame);
     3863    MESSAGE_CHECK(m_process, frame);
    38643864
    38653865    if (frame->isMainFrame())
     
    38693869void WebPageProxy::didChangeProvisionalURLForFrame(uint64_t frameID, uint64_t navigationID, URL&& url)
    38703870{
    3871     didChangeProvisionalURLForFrameShared(m_process, frameID, navigationID, WTFMove(url));
    3872 }
    3873 
    3874 void WebPageProxy::didChangeProvisionalURLForFrameShared(WebProcessProxy& process, uint64_t frameID, uint64_t, URL&& url)
     3871    didChangeProvisionalURLForFrameShared(m_process.copyRef(), frameID, navigationID, WTFMove(url));
     3872}
     3873
     3874void WebPageProxy::didChangeProvisionalURLForFrameShared(Ref<WebProcessProxy>&& process, uint64_t frameID, uint64_t, URL&& url)
    38753875{
    38763876    PageClientProtector protector(pageClient());
    38773877
    3878     WebFrameProxy* frame = process.webFrame(frameID);
     3878    WebFrameProxy* frame = process->webFrame(frameID);
    38793879    MESSAGE_CHECK(process, frame);
    38803880    MESSAGE_CHECK(process, frame->frameLoadState().state() == FrameLoadState::State::Provisional);
     
    38983898    }
    38993899
    3900     didFailProvisionalLoadForFrameShared(m_process, frameID, frameSecurityOrigin, navigationID, provisionalURL, error, userData);
    3901 }
    3902 
    3903 void WebPageProxy::didFailProvisionalLoadForFrameShared(WebProcessProxy& process, uint64_t frameID, const SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, const String& provisionalURL, const ResourceError& error, const UserData& userData)
    3904 {
    3905     LOG(Loading, "(Loading) WebPageProxy %" PRIu64 " in web process pid %i didFailProvisionalLoadForFrame to provisionalURL %s", m_pageID, process.processIdentifier(), provisionalURL.utf8().data());
    3906     RELEASE_LOG_IF_ALLOWED(Process, "didFailProvisionalLoadForFrame: webPID = %i, pageID = %" PRIu64 ", frameID = %" PRIu64 ", domain = %s, code = %d", process.processIdentifier(), m_pageID, frameID, error.domain().utf8().data(), error.errorCode());
     3900    didFailProvisionalLoadForFrameShared(m_process.copyRef(), frameID, frameSecurityOrigin, navigationID, provisionalURL, error, userData);
     3901}
     3902
     3903void WebPageProxy::didFailProvisionalLoadForFrameShared(Ref<WebProcessProxy>&& process, uint64_t frameID, const SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, const String& provisionalURL, const ResourceError& error, const UserData& userData)
     3904{
     3905    LOG(Loading, "(Loading) WebPageProxy %" PRIu64 " in web process pid %i didFailProvisionalLoadForFrame to provisionalURL %s", m_pageID, process->processIdentifier(), provisionalURL.utf8().data());
     3906    RELEASE_LOG_IF_ALLOWED(Process, "didFailProvisionalLoadForFrame: webPID = %i, pageID = %" PRIu64 ", frameID = %" PRIu64 ", domain = %s, code = %d", process->processIdentifier(), m_pageID, frameID, error.domain().utf8().data(), error.errorCode());
    39073907
    39083908    PageClientProtector protector(pageClient());
    39093909
    3910     WebFrameProxy* frame = process.webFrame(frameID);
    3911     MESSAGE_CHECK(m_process.get(), frame);
     3910    WebFrameProxy* frame = process->webFrame(frameID);
     3911    MESSAGE_CHECK(m_process, frame);
    39123912
    39133913    if (m_controlledByAutomation) {
    3914         if (auto* automationSession = process.processPool().automationSession())
     3914        if (auto* automationSession = process->processPool().automationSession())
    39153915            automationSession->navigationOccurredForFrame(*frame);
    39163916    }
     
    39373937
    39383938    if (m_loaderClient)
    3939         m_loaderClient->didFailProvisionalLoadWithErrorForFrame(*this, *frame, navigation.get(), error, process.transformHandlesToObjects(userData.object()).get());
     3939        m_loaderClient->didFailProvisionalLoadWithErrorForFrame(*this, *frame, navigation.get(), error, process->transformHandlesToObjects(userData.object()).get());
    39403940    else if (frame->isMainFrame())
    3941         m_navigationClient->didFailProvisionalNavigationWithError(*this, *frame, navigation.get(), error, process.transformHandlesToObjects(userData.object()).get());
     3941        m_navigationClient->didFailProvisionalNavigationWithError(*this, *frame, navigation.get(), error, process->transformHandlesToObjects(userData.object()).get());
    39423942    else {
    39433943        // FIXME: Get the main frame's current navigation.
    3944         m_navigationClient->didFailProvisionalLoadInSubframeWithError(*this, *frame, frameSecurityOrigin, nullptr, error, process.transformHandlesToObjects(userData.object()).get());
     3944        m_navigationClient->didFailProvisionalLoadInSubframeWithError(*this, *frame, frameSecurityOrigin, nullptr, error, process->transformHandlesToObjects(userData.object()).get());
    39453945    }
    39463946
     
    39703970
    39713971    WebFrameProxy* frame = m_process->webFrame(frameID);
    3972     MESSAGE_CHECK(m_process.get(), frame);
     3972    MESSAGE_CHECK(m_process, frame);
    39733973
    39743974    // FIXME: We should message check that navigationID is not zero here, but it's currently zero for some navigations through the page cache.
     
    40644064
    40654065    WebFrameProxy* frame = m_process->webFrame(frameID);
    4066     MESSAGE_CHECK(m_process.get(), frame);
     4066    MESSAGE_CHECK(m_process, frame);
    40674067
    40684068    if (m_controlledByAutomation) {
     
    40884088
    40894089    WebFrameProxy* frame = m_process->webFrame(frameID);
    4090     MESSAGE_CHECK(m_process.get(), frame);
     4090    MESSAGE_CHECK(m_process, frame);
    40914091
    40924092    // FIXME: We should message check that navigationID is not zero here, but it's currently zero for some navigations through the page cache.
     
    41334133
    41344134    WebFrameProxy* frame = m_process->webFrame(frameID);
    4135     MESSAGE_CHECK(m_process.get(), frame);
     4135    MESSAGE_CHECK(m_process, frame);
    41364136
    41374137    // FIXME: We should message check that navigationID is not zero here, but it's currently zero for some navigations through the page cache.
     
    41754175
    41764176    WebFrameProxy* frame = m_process->webFrame(frameID);
    4177     MESSAGE_CHECK(m_process.get(), frame);
    4178     MESSAGE_CHECK_URL(process(), url);
     4177    MESSAGE_CHECK(m_process, frame);
     4178    MESSAGE_CHECK_URL(m_process, url);
    41794179
    41804180    // FIXME: We should message check that navigationID is not zero here, but it's currently zero for some navigations through the page cache.
     
    42284228
    42294229    WebFrameProxy* frame = m_process->webFrame(frameID);
    4230     MESSAGE_CHECK(m_process.get(), frame);
     4230    MESSAGE_CHECK(m_process, frame);
    42314231
    42324232    auto transaction = m_pageLoadState.transaction();
     
    42544254
    42554255    WebFrameProxy* frame = m_process->webFrame(frameID);
    4256     MESSAGE_CHECK(m_process.get(), frame);
     4256    MESSAGE_CHECK(m_process, frame);
    42574257
    42584258    if (m_loaderClient)
     
    42854285
    42864286    WebFrameProxy* frame = m_process->webFrame(frameID);
    4287     MESSAGE_CHECK(m_process.get(), frame);
     4287    MESSAGE_CHECK(m_process, frame);
    42884288
    42894289    auto transaction = m_pageLoadState.transaction();
     
    42994299
    43004300    WebFrameProxy* frame = m_process->webFrame(frameID);
    4301     MESSAGE_CHECK(m_process.get(), frame);
     4301    MESSAGE_CHECK(m_process, frame);
    43024302
    43034303    auto transaction = m_pageLoadState.transaction();
     
    43224322
    43234323    WebFrameProxy* frame = m_process->webFrame(frameID);
    4324     MESSAGE_CHECK(m_process.get(), frame);
     4324    MESSAGE_CHECK(m_process, frame);
    43254325
    43264326    frame->setIsFrameSet(value);
     
    43384338void WebPageProxy::decidePolicyForNavigationActionAsync(uint64_t frameID, WebCore::SecurityOriginData&& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&& navigationActionData, FrameInfoData&& frameInfoData, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&& request, IPC::FormDataReference&& requestBody, WebCore::ResourceResponse&& redirectResponse, const UserData& userData, uint64_t listenerID)
    43394339{
    4340     decidePolicyForNavigationActionAsyncShared(m_process, frameID, WTFMove(frameSecurityOrigin), navigationID, WTFMove(navigationActionData), WTFMove(frameInfoData), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(redirectResponse), userData, listenerID);
    4341 }
    4342 
    4343 void WebPageProxy::decidePolicyForNavigationActionAsyncShared(WebProcessProxy& process, uint64_t frameID, WebCore::SecurityOriginData&& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&& navigationActionData, FrameInfoData&& frameInfoData, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&& request, IPC::FormDataReference&& requestBody, WebCore::ResourceResponse&& redirectResponse, const UserData& userData, uint64_t listenerID)
    4344 {
    4345     auto* frame = process.webFrame(frameID);
     4340    decidePolicyForNavigationActionAsyncShared(m_process.copyRef(), frameID, WTFMove(frameSecurityOrigin), navigationID, WTFMove(navigationActionData), WTFMove(frameInfoData), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(redirectResponse), userData, listenerID);
     4341}
     4342
     4343void WebPageProxy::decidePolicyForNavigationActionAsyncShared(Ref<WebProcessProxy>&& process, uint64_t frameID, WebCore::SecurityOriginData&& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&& navigationActionData, FrameInfoData&& frameInfoData, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&& request, IPC::FormDataReference&& requestBody, WebCore::ResourceResponse&& redirectResponse, const UserData& userData, uint64_t listenerID)
     4344{
     4345    auto* frame = process->webFrame(frameID);
    43464346    MESSAGE_CHECK(process, frame);
    43474347
    4348     decidePolicyForNavigationAction(process, *frame, WTFMove(frameSecurityOrigin), navigationID, WTFMove(navigationActionData), WTFMove(frameInfoData), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(redirectResponse), userData, PolicyDecisionSender::create([this, protectedThis = makeRef(*this), frameID, listenerID, process = makeRef(process)] (auto... args) {
     4348    decidePolicyForNavigationAction(process.copyRef(), *frame, WTFMove(frameSecurityOrigin), navigationID, WTFMove(navigationActionData), WTFMove(frameInfoData), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(redirectResponse), userData, PolicyDecisionSender::create([this, protectedThis = makeRef(*this), frameID, listenerID, process = process.copyRef()] (auto... args) {
    43494349        process->send(Messages::WebPage::DidReceivePolicyDecision(frameID, listenerID, args...), m_pageID);
    43504350    }));
    43514351}
    43524352
    4353 void WebPageProxy::decidePolicyForNavigationAction(WebProcessProxy& process, WebFrameProxy& frame, WebCore::SecurityOriginData&& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&& navigationActionData, FrameInfoData&& originatingFrameInfoData, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&& request, IPC::FormDataReference&& requestBody, WebCore::ResourceResponse&& redirectResponse, const UserData& userData, Ref<PolicyDecisionSender>&& sender)
     4353void WebPageProxy::decidePolicyForNavigationAction(Ref<WebProcessProxy>&& process, WebFrameProxy& frame, WebCore::SecurityOriginData&& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&& navigationActionData, FrameInfoData&& originatingFrameInfoData, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&& request, IPC::FormDataReference&& requestBody, WebCore::ResourceResponse&& redirectResponse, const UserData& userData, Ref<PolicyDecisionSender>&& sender)
    43544354{
    43554355    LOG(Loading, "WebPageProxy::decidePolicyForNavigationAction - Original URL %s, current target URL %s", originalRequest.url().string().utf8().data(), request.url().string().utf8().data());
     
    43934393
    43944394    uint64_t newNavigationID = navigation->navigationID();
    4395     navigation->setCurrentRequest(ResourceRequest(request), process.coreProcessIdentifier());
     4395    navigation->setCurrentRequest(ResourceRequest(request), process->coreProcessIdentifier());
    43964396    navigation->setLastNavigationAction(navigationActionData);
    43974397    navigation->setOriginatingFrameInfo(originatingFrameInfoData);
     
    44524452
    44534453    API::Navigation* mainFrameNavigation = frame.isMainFrame() ? navigation.get() : nullptr;
    4454     WebFrameProxy* originatingFrame = process.webFrame(originatingFrameInfoData.frameID);
     4454    WebFrameProxy* originatingFrame = process->webFrame(originatingFrameInfoData.frameID);
    44554455
    44564456#if ENABLE(RESOURCE_LOAD_STATISTICS)
     
    44614461
    44624462    if (m_policyClient)
    4463         m_policyClient->decidePolicyForNavigationAction(*this, &frame, WTFMove(navigationActionData), originatingFrame, originalRequest, WTFMove(request), WTFMove(listener), process.transformHandlesToObjects(userData.object()).get());
     4463        m_policyClient->decidePolicyForNavigationAction(*this, &frame, WTFMove(navigationActionData), originatingFrame, originalRequest, WTFMove(request), WTFMove(listener), process->transformHandlesToObjects(userData.object()).get());
    44644464    else {
    44654465        auto destinationFrameInfo = API::FrameInfo::create(frame, frameSecurityOrigin.securityOrigin());
     
    44684468            sourceFrameInfo = destinationFrameInfo.copyRef();
    44694469        else if (!fromAPI)
    4470             sourceFrameInfo = API::FrameInfo::create(originatingFrameInfoData, originatingPageID ? process.webPage(originatingPageID) : nullptr);
    4471 
    4472         auto userInitiatedActivity = process.userInitiatedActivity(navigationActionData.userGestureTokenIdentifier);
     4470            sourceFrameInfo = API::FrameInfo::create(originatingFrameInfoData, originatingPageID ? process->webPage(originatingPageID) : nullptr);
     4471
     4472        auto userInitiatedActivity = process->userInitiatedActivity(navigationActionData.userGestureTokenIdentifier);
    44734473        bool shouldOpenAppLinks = !m_shouldSuppressAppLinksInNextNavigationPolicyDecision && destinationFrameInfo->isMainFrame() && !hostsAreEqual(URL({ }, m_mainFrame->url()), request.url()) && navigationActionData.navigationType != WebCore::NavigationType::BackForward;
    44744474
    44754475        auto navigationAction = API::NavigationAction::create(WTFMove(navigationActionData), sourceFrameInfo.get(), destinationFrameInfo.ptr(), WTF::nullopt, WTFMove(request), originalRequest.url(), shouldOpenAppLinks, WTFMove(userInitiatedActivity), mainFrameNavigation);
    44764476
    4477         m_navigationClient->decidePolicyForNavigationAction(*this, WTFMove(navigationAction), WTFMove(listener), process.transformHandlesToObjects(userData.object()).get());
     4477        m_navigationClient->decidePolicyForNavigationAction(*this, WTFMove(navigationAction), WTFMove(listener), process->transformHandlesToObjects(userData.object()).get());
    44784478    }
    44794479
     
    45294529    }
    45304530
    4531     decidePolicyForNavigationAction(m_process, *frame, WTFMove(frameSecurityOrigin), navigationID, WTFMove(navigationActionData), WTFMove(frameInfoData), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(redirectResponse), userData, sender.copyRef());
     4531    decidePolicyForNavigationAction(m_process.copyRef(), *frame, WTFMove(frameSecurityOrigin), navigationID, WTFMove(navigationActionData), WTFMove(frameInfoData), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(redirectResponse), userData, sender.copyRef());
    45324532
    45334533    // If the client did not respond synchronously, proceed with the load.
     
    45404540
    45414541    WebFrameProxy* frame = m_process->webFrame(frameID);
    4542     MESSAGE_CHECK(m_process.get(), frame);
    4543     MESSAGE_CHECK_URL(process(), request.url());
     4542    MESSAGE_CHECK(m_process, frame);
     4543    MESSAGE_CHECK_URL(m_process, request.url());
    45444544
    45454545    auto listener = makeRef(frame->setUpPolicyListenerProxy([this, protectedThis = makeRef(*this), listenerID, frameID] (WebPolicyAction policyAction, API::WebsitePolicies*, ProcessSwapRequestedByClient processSwapRequestedByClient, RefPtr<SafeBrowsingWarning>&& safeBrowsingWarning) mutable {
     
    45714571void WebPageProxy::decidePolicyForResponse(uint64_t frameID, const SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, const ResourceResponse& response, const ResourceRequest& request, bool canShowMIMEType, uint64_t listenerID, const UserData& userData)
    45724572{
    4573     decidePolicyForResponseShared(m_process, frameID, frameSecurityOrigin, navigationID, response, request, canShowMIMEType, listenerID, userData);
    4574 }
    4575 
    4576 void WebPageProxy::decidePolicyForResponseShared(WebProcessProxy& process, uint64_t frameID, const SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, const ResourceResponse& response, const ResourceRequest& request, bool canShowMIMEType, uint64_t listenerID, const UserData& userData)
     4573    decidePolicyForResponseShared(m_process.copyRef(), frameID, frameSecurityOrigin, navigationID, response, request, canShowMIMEType, listenerID, userData);
     4574}
     4575
     4576void WebPageProxy::decidePolicyForResponseShared(Ref<WebProcessProxy>&& process, uint64_t frameID, const SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, const ResourceResponse& response, const ResourceRequest& request, bool canShowMIMEType, uint64_t listenerID, const UserData& userData)
    45774577{
    45784578    PageClientProtector protector(pageClient());
     
    45804580    m_decidePolicyForResponseRequest = request;
    45814581
    4582     WebFrameProxy* frame = process.webFrame(frameID);
     4582    WebFrameProxy* frame = process->webFrame(frameID);
    45834583    MESSAGE_CHECK(process, frame);
    45844584    MESSAGE_CHECK_URL(process, request.url());
     
    45864586
    45874587    RefPtr<API::Navigation> navigation = navigationID ? m_navigationState->navigation(navigationID) : nullptr;
    4588     auto listener = makeRef(frame->setUpPolicyListenerProxy([this, protectedThis = makeRef(*this), frameID, listenerID, navigation = WTFMove(navigation), process = makeRef(process)] (WebPolicyAction policyAction, API::WebsitePolicies*, ProcessSwapRequestedByClient processSwapRequestedByClient, RefPtr<SafeBrowsingWarning>&& safeBrowsingWarning) mutable {
     4588    auto listener = makeRef(frame->setUpPolicyListenerProxy([this, protectedThis = makeRef(*this), frameID, listenerID, navigation = WTFMove(navigation), process = process.copyRef()] (WebPolicyAction policyAction, API::WebsitePolicies*, ProcessSwapRequestedByClient processSwapRequestedByClient, RefPtr<SafeBrowsingWarning>&& safeBrowsingWarning) mutable {
    45894589        // FIXME: Assert the API::WebsitePolicies* is nullptr here once clients of WKFramePolicyListenerUseWithPolicies go away.
    45904590        RELEASE_ASSERT(processSwapRequestedByClient == ProcessSwapRequestedByClient::No);
     
    45964596
    45974597    if (m_policyClient)
    4598         m_policyClient->decidePolicyForResponse(*this, *frame, response, request, canShowMIMEType, WTFMove(listener), process.transformHandlesToObjects(userData.object()).get());
     4598        m_policyClient->decidePolicyForResponse(*this, *frame, response, request, canShowMIMEType, WTFMove(listener), process->transformHandlesToObjects(userData.object()).get());
    45994599    else {
    46004600        auto navigationResponse = API::NavigationResponse::create(API::FrameInfo::create(*frame, frameSecurityOrigin.securityOrigin()).get(), request, response, canShowMIMEType);
    4601         m_navigationClient->decidePolicyForNavigationResponse(*this, WTFMove(navigationResponse), WTFMove(listener), process.transformHandlesToObjects(userData.object()).get());
     4601        m_navigationClient->decidePolicyForNavigationResponse(*this, WTFMove(navigationResponse), WTFMove(listener), process->transformHandlesToObjects(userData.object()).get());
    46024602    }
    46034603}
     
    46084608
    46094609    WebFrameProxy* frame = m_process->webFrame(frameID);
    4610     MESSAGE_CHECK(m_process.get(), frame);
     4610    MESSAGE_CHECK(m_process, frame);
    46114611
    46124612    if (!m_policyClient)
     
    46204620{
    46214621    WebFrameProxy* frame = m_process->webFrame(frameID);
    4622     MESSAGE_CHECK(m_process.get(), frame);
     4622    MESSAGE_CHECK(m_process, frame);
    46234623
    46244624    WebFrameProxy* sourceFrame = m_process->webFrame(sourceFrameID);
    4625     MESSAGE_CHECK(m_process.get(), sourceFrame);
     4625    MESSAGE_CHECK(m_process, sourceFrame);
    46264626
    46274627    m_formClient->willSubmitForm(*this, *frame, *sourceFrame, textFieldValues, m_process->transformHandlesToObjects(userData.object()).get(), [this, protectedThis = makeRef(*this), frameID, listenerID]() {
     
    46374637void WebPageProxy::didNavigateWithNavigationData(const WebNavigationDataStore& store, uint64_t frameID)
    46384638{
    4639     didNavigateWithNavigationDataShared(m_process, store, frameID);
    4640 }
    4641 
    4642 void WebPageProxy::didNavigateWithNavigationDataShared(WebProcessProxy& process, const WebNavigationDataStore& store, uint64_t frameID)
    4643 {
    4644     RELEASE_LOG_IF_ALLOWED(Loading, "didNavigateWithNavigationDataShared: webPID = %i, pageID = %" PRIu64, process.processIdentifier(), m_pageID);
     4639    didNavigateWithNavigationDataShared(m_process.copyRef(), store, frameID);
     4640}
     4641
     4642void WebPageProxy::didNavigateWithNavigationDataShared(Ref<WebProcessProxy>&& process, const WebNavigationDataStore& store, uint64_t frameID)
     4643{
     4644    RELEASE_LOG_IF_ALLOWED(Loading, "didNavigateWithNavigationDataShared: webPID = %i, pageID = %" PRIu64, process->processIdentifier(), m_pageID);
    46454645
    46464646    PageClientProtector protector(pageClient());
    46474647
    4648     WebFrameProxy* frame = process.webFrame(frameID);
     4648    WebFrameProxy* frame = process->webFrame(frameID);
    46494649    MESSAGE_CHECK(process, frame);
    46504650    MESSAGE_CHECK(process, frame->page() == this);
     
    46524652    if (frame->isMainFrame())
    46534653        m_historyClient->didNavigateWithNavigationData(*this, store);
    4654     process.processPool().historyClient().didNavigateWithNavigationData(process.processPool(), *this, store, *frame);
     4654    process->processPool().historyClient().didNavigateWithNavigationData(process->processPool(), *this, store, *frame);
    46554655}
    46564656
    46574657void WebPageProxy::didPerformClientRedirect(const String& sourceURLString, const String& destinationURLString, uint64_t frameID)
    46584658{
    4659     didPerformClientRedirectShared(m_process, sourceURLString, destinationURLString, frameID);
    4660 }
    4661 
    4662 void WebPageProxy::didPerformClientRedirectShared(WebProcessProxy& process, const String& sourceURLString, const String& destinationURLString, uint64_t frameID)
    4663 {
    4664     RELEASE_LOG_IF_ALLOWED(Loading, "didPerformClientRedirectShared: webPID = %i, pageID = %" PRIu64 ", frameID = %" PRIu64, process.processIdentifier(), m_pageID, frameID);
     4659    didPerformClientRedirectShared(m_process.copyRef(), sourceURLString, destinationURLString, frameID);
     4660}
     4661
     4662void WebPageProxy::didPerformClientRedirectShared(Ref<WebProcessProxy>&& process, const String& sourceURLString, const String& destinationURLString, uint64_t frameID)
     4663{
     4664    RELEASE_LOG_IF_ALLOWED(Loading, "didPerformClientRedirectShared: webPID = %i, pageID = %" PRIu64 ", frameID = %" PRIu64, process->processIdentifier(), m_pageID, frameID);
    46654665
    46664666    PageClientProtector protector(pageClient());
     
    46694669        return;
    46704670   
    4671     WebFrameProxy* frame = process.webFrame(frameID);
     4671    WebFrameProxy* frame = process->webFrame(frameID);
    46724672    MESSAGE_CHECK(process, frame);
    46734673    MESSAGE_CHECK(process, frame->page() == this);
     
    46794679        m_navigationClient->didPerformClientRedirect(*this, sourceURLString, destinationURLString);
    46804680    }
    4681     process.processPool().historyClient().didPerformClientRedirect(process.processPool(), *this, sourceURLString, destinationURLString, *frame);
     4681    process->processPool().historyClient().didPerformClientRedirect(process->processPool(), *this, sourceURLString, destinationURLString, *frame);
    46824682}
    46834683
     
    46924692   
    46934693    WebFrameProxy* frame = m_process->webFrame(frameID);
    4694     MESSAGE_CHECK(m_process.get(), frame);
    4695     MESSAGE_CHECK(m_process.get(), frame->page() == this);
    4696 
    4697     MESSAGE_CHECK_URL(process(), sourceURLString);
    4698     MESSAGE_CHECK_URL(process(), destinationURLString);
     4694    MESSAGE_CHECK(m_process, frame);
     4695    MESSAGE_CHECK(m_process, frame->page() == this);
     4696
     4697    MESSAGE_CHECK_URL(m_process, sourceURLString);
     4698    MESSAGE_CHECK_URL(m_process, destinationURLString);
    46994699
    47004700    if (frame->isMainFrame())
     
    47084708
    47094709    WebFrameProxy* frame = m_process->webFrame(frameID);
    4710     MESSAGE_CHECK(m_process.get(), frame);
    4711     MESSAGE_CHECK(m_process.get(), frame->page() == this);
    4712 
    4713     MESSAGE_CHECK_URL(process(), url);
     4710    MESSAGE_CHECK(m_process, frame);
     4711    MESSAGE_CHECK(m_process, frame->page() == this);
     4712
     4713    MESSAGE_CHECK_URL(m_process, url);
    47144714
    47154715    if (frame->isMainFrame())
     
    47224722void WebPageProxy::createNewPage(const FrameInfoData& originatingFrameInfoData, uint64_t originatingPageID, ResourceRequest&& request, WindowFeatures&& windowFeatures, NavigationActionData&& navigationActionData, Messages::WebPageProxy::CreateNewPage::DelayedReply&& reply)
    47234723{
    4724     MESSAGE_CHECK(m_process.get(), m_process->webFrame(originatingFrameInfoData.frameID));
     4724    MESSAGE_CHECK(m_process, m_process->webFrame(originatingFrameInfoData.frameID));
    47254725    auto originatingFrameInfo = API::FrameInfo::create(originatingFrameInfoData, m_process->webPage(originatingPageID));
    47264726
     
    47874787{
    47884788    WebFrameProxy* frame = m_process->webFrame(frameID);
    4789     MESSAGE_CHECK(m_process.get(), frame);
     4789    MESSAGE_CHECK(m_process, frame);
    47904790
    47914791#if PLATFORM(IOS_FAMILY)
     
    48064806{
    48074807    WebFrameProxy* frame = m_process->webFrame(frameID);
    4808     MESSAGE_CHECK(m_process.get(), frame);
     4808    MESSAGE_CHECK(m_process, frame);
    48094809
    48104810#if PLATFORM(IOS_FAMILY)
     
    48264826{
    48274827    WebFrameProxy* frame = m_process->webFrame(frameID);
    4828     MESSAGE_CHECK(m_process.get(), frame);
     4828    MESSAGE_CHECK(m_process, frame);
    48294829
    48304830#if PLATFORM(IOS_FAMILY)
     
    48774877void WebPageProxy::unavailablePluginButtonClicked(uint32_t opaquePluginUnavailabilityReason, const String& mimeType, const String& pluginURLString, const String& pluginspageAttributeURLString, const String& frameURLString, const String& pageURLString)
    48784878{
    4879     MESSAGE_CHECK_URL(process(), pluginURLString);
    4880     MESSAGE_CHECK_URL(process(), pluginspageAttributeURLString);
    4881     MESSAGE_CHECK_URL(process(), frameURLString);
    4882     MESSAGE_CHECK_URL(process(), pageURLString);
     4879    MESSAGE_CHECK_URL(m_process, pluginURLString);
     4880    MESSAGE_CHECK_URL(m_process, pluginspageAttributeURLString);
     4881    MESSAGE_CHECK_URL(m_process, frameURLString);
     4882    MESSAGE_CHECK_URL(m_process, pageURLString);
    48834883
    48844884    String newMimeType = mimeType;
     
    50065006{
    50075007    WebFrameProxy* frame = m_process->webFrame(frameID);
    5008     MESSAGE_CHECK(m_process.get(), frame);
     5008    MESSAGE_CHECK(m_process, frame);
    50095009
    50105010    // Per §18 User Prompts in the WebDriver spec, "User prompts that are spawned from beforeunload
     
    50515051
    50525052    WebFrameProxy* frame = m_process->webFrame(frameID);
    5053     MESSAGE_CHECK(m_process.get(), frame);
     5053    MESSAGE_CHECK(m_process, frame);
    50545054
    50555055    Ref<API::OpenPanelParameters> parameters = API::OpenPanelParameters::create(settings);
     
    50885088
    50895089    WebFrameProxy* frame = m_process->webFrame(frameID);
    5090     MESSAGE_CHECK(m_process.get(), frame);
     5090    MESSAGE_CHECK(m_process, frame);
    50915091
    50925092    m_uiClient->printFrame(*this, *frame);
     
    53775377void WebPageProxy::backForwardGoToItem(const BackForwardItemIdentifier& itemID, SandboxExtension::Handle& sandboxExtensionHandle)
    53785378{
    5379     backForwardGoToItemShared(m_process, itemID, sandboxExtensionHandle);
    5380 }
    5381 
    5382 void WebPageProxy::backForwardGoToItemShared(WebProcessProxy& process, const BackForwardItemIdentifier& itemID, SandboxExtension::Handle& sandboxExtensionHandle)
     5379    backForwardGoToItemShared(m_process.copyRef(), itemID, sandboxExtensionHandle);
     5380}
     5381
     5382void WebPageProxy::backForwardGoToItemShared(Ref<WebProcessProxy>&& process, const BackForwardItemIdentifier& itemID, SandboxExtension::Handle& sandboxExtensionHandle)
    53835383{
    53845384    WebBackForwardListItem* item = m_backForwardList->itemForID(itemID);
     
    58675867void WebPageProxy::learnWord(const String& word)
    58685868{
    5869     MESSAGE_CHECK(m_process.get(), m_pendingLearnOrIgnoreWordMessageCount);
     5869    MESSAGE_CHECK(m_process, m_pendingLearnOrIgnoreWordMessageCount);
    58705870    --m_pendingLearnOrIgnoreWordMessageCount;
    58715871
     
    58755875void WebPageProxy::ignoreWord(const String& word)
    58765876{
    5877     MESSAGE_CHECK(m_process.get(), m_pendingLearnOrIgnoreWordMessageCount);
     5877    MESSAGE_CHECK(m_process, m_pendingLearnOrIgnoreWordMessageCount);
    58785878    --m_pendingLearnOrIgnoreWordMessageCount;
    58795879
     
    59765976
    59775977        // Retire the last sent event now that WebProcess is done handling it.
    5978         MESSAGE_CHECK(m_process.get(), !m_mouseEventQueue.isEmpty());
     5978        MESSAGE_CHECK(m_process, !m_mouseEventQueue.isEmpty());
    59795979        NativeWebMouseEvent event = m_mouseEventQueue.takeFirst();
    5980         MESSAGE_CHECK(m_process.get(), type == event.type());
     5980        MESSAGE_CHECK(m_process, type == event.type());
    59815981
    59825982        if (!m_mouseEventQueue.isEmpty()) {
     
    59935993
    59945994    case WebEvent::Wheel: {
    5995         MESSAGE_CHECK(m_process.get(), !m_currentlyProcessedWheelEvents.isEmpty());
     5995        MESSAGE_CHECK(m_process, !m_currentlyProcessedWheelEvents.isEmpty());
    59965996
    59975997        std::unique_ptr<Vector<NativeWebWheelEvent>> oldestCoalescedEvent = m_currentlyProcessedWheelEvents.takeFirst();
     
    60146014        LOG(KeyHandling, "WebPageProxy::didReceiveEvent: %s (queue empty %d)", webKeyboardEventTypeString(type), m_keyEventQueue.isEmpty());
    60156015
    6016         MESSAGE_CHECK(m_process.get(), !m_keyEventQueue.isEmpty());
     6016        MESSAGE_CHECK(m_process, !m_keyEventQueue.isEmpty());
    60176017        NativeWebKeyboardEvent event = m_keyEventQueue.takeFirst();
    60186018
    6019         MESSAGE_CHECK(m_process.get(), type == event.type());
     6019        MESSAGE_CHECK(m_process, type == event.type());
    60206020
    60216021        bool canProcessMoreKeyEvents = !m_keyEventQueue.isEmpty();
     
    60446044    case WebEvent::GestureChange:
    60456045    case WebEvent::GestureEnd: {
    6046         MESSAGE_CHECK(m_process.get(), !m_gestureEventQueue.isEmpty());
     6046        MESSAGE_CHECK(m_process, !m_gestureEventQueue.isEmpty());
    60476047        NativeWebGestureEvent event = m_gestureEventQueue.takeFirst();
    60486048
    6049         MESSAGE_CHECK(m_process.get(), type == event.type());
     6049        MESSAGE_CHECK(m_process, type == event.type());
    60506050
    60516051        if (!handled)
     
    60666066    case WebEvent::TouchEnd:
    60676067    case WebEvent::TouchCancel: {
    6068         MESSAGE_CHECK(m_process.get(), !m_touchEventQueue.isEmpty());
     6068        MESSAGE_CHECK(m_process, !m_touchEventQueue.isEmpty());
    60696069        QueuedTouchEvents queuedEvents = m_touchEventQueue.takeFirst();
    60706070
    6071         MESSAGE_CHECK(m_process.get(), type == queuedEvents.forwardedEvent.type());
     6071        MESSAGE_CHECK(m_process, type == queuedEvents.forwardedEvent.type());
    60726072
    60736073        pageClient().doneWithTouchEvent(queuedEvents.forwardedEvent, handled);
     
    61976197void WebPageProxy::editingRangeCallback(const EditingRange& range, CallbackID callbackID)
    61986198{
    6199     MESSAGE_CHECK(m_process.get(), range.isValid());
     6199    MESSAGE_CHECK(m_process, range.isValid());
    62006200
    62016201    auto callback = m_callbacks.take<EditingRangeCallback>(callbackID);
     
    62986298void WebPageProxy::rectForCharacterRangeCallback(const IntRect& rect, const EditingRange& actualRange, CallbackID callbackID)
    62996299{
    6300     MESSAGE_CHECK(m_process.get(), actualRange.isValid());
     6300    MESSAGE_CHECK(m_process, actualRange.isValid());
    63016301
    63026302    auto callback = m_callbacks.take<RectForCharacterRangeCallback>(callbackID);
     
    63316331
    63326332    WebFrameProxy* frame = m_process->webFrame(frameID);
    6333     MESSAGE_CHECK(m_process.get(), frame);
     6333    MESSAGE_CHECK(m_process, frame);
    63346334
    63356335    m_focusedFrame = frame;
     
    63446344
    63456345    WebFrameProxy* frame = m_process->webFrame(frameID);
    6346     MESSAGE_CHECK(m_process.get(), frame);
     6346    MESSAGE_CHECK(m_process, frame);
    63476347
    63486348    m_frameSetLargestFrame = frame;
     
    68906890    while (record) {
    68916891        WebFrameProxy* frame = m_process->webFrame(record->frameID);
    6892         MESSAGE_CHECK(m_process.get(), frame);
     6892        MESSAGE_CHECK(m_process, frame);
    68936893
    68946894        auto origin = API::SecurityOrigin::create(SecurityOriginData::fromDatabaseIdentifier(record->originIdentifier)->securityOrigin());
     
    69076907{
    69086908    WebFrameProxy* frame = m_process->webFrame(frameID);
    6909     MESSAGE_CHECK(m_process.get(), frame);
     6909    MESSAGE_CHECK(m_process, frame);
    69106910
    69116911    // FIXME: Geolocation should probably be using toString() as its string representation instead of databaseIdentifier().
     
    69466946{
    69476947#if ENABLE(MEDIA_STREAM)
    6948     MESSAGE_CHECK(m_process.get(), m_process->webFrame(frameID));
     6948    MESSAGE_CHECK(m_process, m_process->webFrame(frameID));
    69496949
    69506950    userMediaPermissionRequestManager().requestUserMediaPermissionForFrame(userMediaID, frameID, userMediaDocumentOriginData.securityOrigin(), topLevelDocumentOriginData.securityOrigin(), request);
     
    69626962#if ENABLE(MEDIA_STREAM)
    69636963    WebFrameProxy* frame = m_process->webFrame(frameID);
    6964     MESSAGE_CHECK(m_process.get(), frame);
     6964    MESSAGE_CHECK(m_process, frame);
    69656965
    69666966    userMediaPermissionRequestManager().enumerateMediaDevicesForFrame(userMediaID, frameID, userMediaDocumentOriginData.securityOrigin(), topLevelDocumentOriginData.securityOrigin());
     
    81798179void WebPageProxy::startURLSchemeTask(URLSchemeTaskParameters&& parameters)
    81808180{
    8181     startURLSchemeTaskShared(m_process, WTFMove(parameters));
    8182 }
    8183 
    8184 void WebPageProxy::startURLSchemeTaskShared(WebProcessProxy& process, URLSchemeTaskParameters&& parameters)
     8181    startURLSchemeTaskShared(m_process.copyRef(), WTFMove(parameters));
     8182}
     8183
     8184void WebPageProxy::startURLSchemeTaskShared(Ref<WebProcessProxy>&& process, URLSchemeTaskParameters&& parameters)
    81858185{
    81868186    auto iterator = m_urlSchemeHandlersByIdentifier.find(parameters.handlerIdentifier);
    8187     MESSAGE_CHECK(m_process.get(), iterator != m_urlSchemeHandlersByIdentifier.end());
     8187    MESSAGE_CHECK(process, iterator != m_urlSchemeHandlersByIdentifier.end());
    81888188
    81898189    iterator->value->startTask(*this, process, parameters.taskIdentifier, WTFMove(parameters.request), nullptr);
     
    81938193{
    81948194    auto iterator = m_urlSchemeHandlersByIdentifier.find(handlerIdentifier);
    8195     MESSAGE_CHECK(m_process.get(), iterator != m_urlSchemeHandlersByIdentifier.end());
     8195    MESSAGE_CHECK(m_process, iterator != m_urlSchemeHandlersByIdentifier.end());
    81968196
    81978197    iterator->value->stopTask(*this, taskIdentifier);
     
    82018201{
    82028202    auto iterator = m_urlSchemeHandlersByIdentifier.find(parameters.handlerIdentifier);
    8203     MESSAGE_CHECK(m_process.get(), iterator != m_urlSchemeHandlersByIdentifier.end());
     8203    MESSAGE_CHECK(m_process, iterator != m_urlSchemeHandlersByIdentifier.end());
    82048204
    82058205    iterator->value->startTask(*this, m_process, parameters.taskIdentifier, WTFMove(parameters.request), WTFMove(reply));
  • trunk/Source/WebKit/UIProcess/WebPageProxy.h

    r240046 r240055  
    14241424
    14251425    // Logic shared between the WebPageProxy and the ProvisionalPageProxy.
    1426     void didStartProvisionalLoadForFrameShared(WebProcessProxy&, uint64_t frameID, uint64_t navigationID, URL&&, URL&& unreachableURL, const UserData&);
    1427     void didFailProvisionalLoadForFrameShared(WebProcessProxy&, uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, const String& provisionalURL, const WebCore::ResourceError&, const UserData&);
    1428     void didReceiveServerRedirectForProvisionalLoadForFrameShared(WebProcessProxy&, uint64_t frameID, uint64_t navigationID, WebCore::ResourceRequest&&, const UserData&);
    1429     void didPerformClientRedirectShared(WebProcessProxy&, const String& sourceURLString, const String& destinationURLString, uint64_t frameID);
    1430     void didNavigateWithNavigationDataShared(WebProcessProxy&, const WebNavigationDataStore&, uint64_t frameID);
    1431     void didChangeProvisionalURLForFrameShared(WebProcessProxy&, uint64_t frameID, uint64_t navigationID, URL&&);
    1432     void decidePolicyForNavigationActionAsyncShared(WebProcessProxy&, uint64_t frameID, WebCore::SecurityOriginData&& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, FrameInfoData&&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, IPC::FormDataReference&& requestBody, WebCore::ResourceResponse&& redirectResponse, const UserData&, uint64_t listenerID);
    1433     void decidePolicyForResponseShared(WebProcessProxy&, uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, bool canShowMIMEType, uint64_t listenerID, const UserData&);
    1434     void startURLSchemeTaskShared(WebProcessProxy&, URLSchemeTaskParameters&&);
    1435     void loadDataWithNavigationShared(WebProcessProxy&, API::Navigation&, const IPC::DataReference&, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData, WebCore::ShouldTreatAsContinuingLoad, Optional<WebsitePoliciesData>&& = WTF::nullopt);
    1436     void loadRequestWithNavigationShared(WebProcessProxy&, API::Navigation&, WebCore::ResourceRequest&&, WebCore::ShouldOpenExternalURLsPolicy, API::Object* userData, WebCore::ShouldTreatAsContinuingLoad, Optional<WebsitePoliciesData>&& = WTF::nullopt);
    1437     void backForwardGoToItemShared(WebProcessProxy&, const WebCore::BackForwardItemIdentifier&, SandboxExtension::Handle&);
     1426    void didStartProvisionalLoadForFrameShared(Ref<WebProcessProxy>&&, uint64_t frameID, uint64_t navigationID, URL&&, URL&& unreachableURL, const UserData&);
     1427    void didFailProvisionalLoadForFrameShared(Ref<WebProcessProxy>&&, uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, const String& provisionalURL, const WebCore::ResourceError&, const UserData&);
     1428    void didReceiveServerRedirectForProvisionalLoadForFrameShared(Ref<WebProcessProxy>&&, uint64_t frameID, uint64_t navigationID, WebCore::ResourceRequest&&, const UserData&);
     1429    void didPerformClientRedirectShared(Ref<WebProcessProxy>&&, const String& sourceURLString, const String& destinationURLString, uint64_t frameID);
     1430    void didNavigateWithNavigationDataShared(Ref<WebProcessProxy>&&, const WebNavigationDataStore&, uint64_t frameID);
     1431    void didChangeProvisionalURLForFrameShared(Ref<WebProcessProxy>&&, uint64_t frameID, uint64_t navigationID, URL&&);
     1432    void decidePolicyForNavigationActionAsyncShared(Ref<WebProcessProxy>&&, uint64_t frameID, WebCore::SecurityOriginData&& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, FrameInfoData&&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, IPC::FormDataReference&& requestBody, WebCore::ResourceResponse&& redirectResponse, const UserData&, uint64_t listenerID);
     1433    void decidePolicyForResponseShared(Ref<WebProcessProxy>&&, uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, bool canShowMIMEType, uint64_t listenerID, const UserData&);
     1434    void startURLSchemeTaskShared(Ref<WebProcessProxy>&&, URLSchemeTaskParameters&&);
     1435    void loadDataWithNavigationShared(Ref<WebProcessProxy>&&, API::Navigation&, const IPC::DataReference&, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData, WebCore::ShouldTreatAsContinuingLoad, Optional<WebsitePoliciesData>&& = WTF::nullopt);
     1436    void loadRequestWithNavigationShared(Ref<WebProcessProxy>&&, API::Navigation&, WebCore::ResourceRequest&&, WebCore::ShouldOpenExternalURLsPolicy, API::Object* userData, WebCore::ShouldTreatAsContinuingLoad, Optional<WebsitePoliciesData>&& = WTF::nullopt);
     1437    void backForwardGoToItemShared(Ref<WebProcessProxy>&&, const WebCore::BackForwardItemIdentifier&, SandboxExtension::Handle&);
    14381438
    14391439    // IPC::MessageReceiver
     
    15171517    void didDestroyNavigation(uint64_t navigationID);
    15181518
    1519     void decidePolicyForNavigationAction(WebProcessProxy&, WebFrameProxy&, WebCore::SecurityOriginData&& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, FrameInfoData&&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, IPC::FormDataReference&& requestBody, WebCore::ResourceResponse&& redirectResponse, const UserData&, Ref<PolicyDecisionSender>&&);
     1519    void decidePolicyForNavigationAction(Ref<WebProcessProxy>&&, WebFrameProxy&, WebCore::SecurityOriginData&& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, FrameInfoData&&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, IPC::FormDataReference&& requestBody, WebCore::ResourceResponse&& redirectResponse, const UserData&, Ref<PolicyDecisionSender>&&);
    15201520    void decidePolicyForNavigationActionAsync(uint64_t frameID, WebCore::SecurityOriginData&& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, FrameInfoData&&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, IPC::FormDataReference&& requestBody, WebCore::ResourceResponse&& redirectResponse, const UserData&, uint64_t listenerID);
    15211521    void decidePolicyForNavigationActionSync(uint64_t frameID, bool isMainFrame, WebCore::SecurityOriginData&& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, FrameInfoData&&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, IPC::FormDataReference&& requestBody, WebCore::ResourceResponse&& redirectResponse, const UserData&, Messages::WebPageProxy::DecidePolicyForNavigationActionSync::DelayedReply&&);
Note: See TracChangeset for help on using the changeset viewer.