Changeset 229617 in webkit
- Timestamp:
- Mar 14, 2018 3:58:29 PM (6 years ago)
- Location:
- trunk
- Files:
-
- 39 deleted
- 11 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r229614 r229617 1 2018-03-14 Ryan Haddad <ryanhaddad@apple.com> 2 3 Unreviewed, rolling out r229613. 4 5 Caused API test failures 6 7 Reverted changeset: 8 9 "Make policy decisions asynchronous" 10 https://bugs.webkit.org/show_bug.cgi?id=180568 11 https://trac.webkit.org/changeset/229613 12 1 13 2018-03-14 Youenn Fablet <youenn@apple.com> 2 14 -
trunk/LayoutTests/TestExpectations
r229613 r229617 1717 1717 imported/w3c/web-platform-tests/workers/worker-performance.worker.html [ Pass Failure ] 1718 1718 1719 # We sometimes get 2 console log messages about CSP instead of 1 due to preloading.1720 http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-main-frame.html [ DumpJSConsoleLogInStdErr ]1721 1722 1719 media/event-queue-crash.html [ DumpJSConsoleLogInStdErr ] 1723 1720 -
trunk/LayoutTests/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-main-frame-expected.txt
r229613 r229617 4 4 main frame - didFinishLoadForFrame 5 5 main frame - didCommitLoadForFrame 6 CONSOLE MESSAGE: Blocked mixed content http://127.0.0.1:8000/security/mixedContent/resources/style.css because 'block-all-mixed-content' appears in the Content Security Policy. 6 7 main frame - didFinishDocumentLoadForFrame 7 8 main frame - didHandleOnloadEventsForFrame -
trunk/LayoutTests/platform/ios/http/tests/loading/simple-subframe-expected.txt
r229613 r229617 1 1 main frame - didStartProvisionalLoadForFrame 2 2 main frame - didCommitLoadForFrame 3 frame "f1" - didStartProvisionalLoadForFrame 3 4 main frame - didFinishDocumentLoadForFrame 4 frame "f1" - didStartProvisionalLoadForFrame5 5 frame "f1" - didCommitLoadForFrame 6 6 frame "f1" - didFinishDocumentLoadForFrame -
trunk/LayoutTests/platform/mac/webarchive/loading/mainresource-null-mimetype-crash-expected.txt
r229616 r229617 2 2 main frame - didCommitLoadForFrame 3 3 main frame - didFinishDocumentLoadForFrame 4 frame "<!--framePath //<!--frame0-->-->" - didStartProvisionalLoadForFrame 4 5 main frame - didHandleOnloadEventsForFrame 5 frame "<!--framePath //<!--frame0-->-->" - didStartProvisionalLoadForFrame6 6 frame "<!--framePath //<!--frame0-->-->" - didCommitLoadForFrame 7 7 frame "<!--framePath //<!--frame0-->-->" - didFinishDocumentLoadForFrame -
trunk/LayoutTests/platform/wk2/http/tests/loading/authentication-after-redirect-stores-wrong-credentials/authentication-after-redirect-stores-wrong-credentials-expected.txt
r229613 r229617 1 1 main frame - didStartProvisionalLoadForFrame 2 2 main frame - didCommitLoadForFrame 3 frame "<!--framePath //<!--frame0-->-->" - didStartProvisionalLoadForFrame 3 4 main frame - didFinishDocumentLoadForFrame 4 frame "<!--framePath //<!--frame0-->-->" - didStartProvisionalLoadForFrame5 5 frame "<!--framePath //<!--frame0-->-->" - didReceiveServerRedirectForProvisionalLoadForFrame 6 6 127.0.0.1:8000 - didReceiveAuthenticationChallenge - Responding with httpUsername:httpPassword -
trunk/LayoutTests/platform/wk2/http/tests/loading/basic-auth-load-URL-with-consecutive-slashes-expected.txt
r229613 r229617 1 1 main frame - didStartProvisionalLoadForFrame 2 2 main frame - didCommitLoadForFrame 3 frame "frame" - didStartProvisionalLoadForFrame 3 4 main frame - didFinishDocumentLoadForFrame 4 frame "frame" - didStartProvisionalLoadForFrame5 5 127.0.0.1:8000 - didReceiveAuthenticationChallenge - Responding with webkit:rocks 6 6 frame "frame" - didCommitLoadForFrame -
trunk/Source/WebKit/ChangeLog
r229615 r229617 1 2018-03-14 Ryan Haddad <ryanhaddad@apple.com> 2 3 Unreviewed, rolling out r229613. 4 5 Caused API test failures 6 7 Reverted changeset: 8 9 "Make policy decisions asynchronous" 10 https://bugs.webkit.org/show_bug.cgi?id=180568 11 https://trac.webkit.org/changeset/229613 12 1 13 2018-03-14 Chris Dumez <cdumez@apple.com> 2 14 -
trunk/Source/WebKit/UIProcess/WebPageProxy.cpp
r229613 r229617 2333 2333 if (action == PolicyAction::Download) { 2334 2334 // Create a download proxy. 2335 auto* download = m_process->processPool().createDownloadProxy(m_decidePolicyForResponseRequest, this); 2335 const ResourceRequest& downloadRequest = m_decidePolicyForResponseRequest ? *m_decidePolicyForResponseRequest : ResourceRequest(); 2336 DownloadProxy* download = m_process->processPool().createDownloadProxy(downloadRequest, this); 2336 2337 if (navigation) { 2337 2338 download->setWasUserInitiated(navigation->wasUserInitiated()); … … 2341 2342 downloadID = download->downloadID(); 2342 2343 handleDownloadRequest(download); 2343 m_decidePolicyForResponseRequest = { }; 2344 } 2345 2344 } 2345 2346 // If we received a policy decision while in decidePolicyForResponse the decision will 2347 // be sent back to the web process by decidePolicyForResponse. 2348 if (m_inDecidePolicyForResponseSync) { 2349 m_syncMimeTypePolicyActionIsValid = true; 2350 m_syncMimeTypePolicyAction = action; 2351 m_syncMimeTypePolicyDownloadID = downloadID; 2352 return; 2353 } 2354 2355 // If we received a policy decision while in decidePolicyForNavigationAction the decision will 2356 // be sent back to the web process by decidePolicyForNavigationAction. 2357 if (m_inDecidePolicyForNavigationAction) { 2358 m_syncNavigationActionPolicyActionIsValid = true; 2359 m_syncNavigationActionPolicyAction = action; 2360 m_syncNavigationActionPolicyDownloadID = downloadID; 2361 m_syncNavigationActionPolicyWebsitePolicies = WTFMove(websitePolicies); 2362 return; 2363 } 2364 2346 2365 m_process->send(Messages::WebPage::DidReceivePolicyDecision(frame.frameID(), listenerID, action, navigation ? navigation->navigationID() : 0, downloadID, websitePolicies), m_pageID); 2347 2366 } … … 3737 3756 } 3738 3757 3739 void WebPageProxy::decidePolicyForNavigationAction(uint64_t frameID, const SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&& navigationActionData, const FrameInfoData& originatingFrameInfoData, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, ResourceRequest&& request, uint64_t listenerID, const UserData& userData )3758 void WebPageProxy::decidePolicyForNavigationAction(uint64_t frameID, const SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&& navigationActionData, const FrameInfoData& originatingFrameInfoData, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, ResourceRequest&& request, uint64_t listenerID, const UserData& userData, bool& receivedPolicyAction, uint64_t& newNavigationID, WebCore::PolicyAction& policyAction, DownloadID& downloadID, std::optional<WebsitePoliciesData>& websitePolicies) 3740 3759 { 3741 3760 PageClientProtector protector(m_pageClient); … … 3752 3771 MESSAGE_CHECK_URL(originalRequest.url()); 3753 3772 3754 uint64_t newNavigationID { 0 };3755 3773 Ref<WebFramePolicyListenerProxy> listener = frame->setUpPolicyListenerProxy(listenerID); 3756 3774 if (!navigationID) { … … 3762 3780 } else { 3763 3781 auto& navigation = m_navigationState->navigation(navigationID); 3764 newNavigationID = navigationID;3765 3782 navigation.setWasUserInitiated(!!navigationActionData.userGestureTokenIdentifier); 3766 3783 navigation.setShouldForceDownload(!navigationActionData.downloadAttribute.isNull()); … … 3769 3786 3770 3787 #if ENABLE(CONTENT_FILTERING) 3771 if (frame->didHandleContentFilterUnblockNavigation(request)) 3772 return receivedPolicyDecision(PolicyAction::Ignore, *frame, listenerID, &m_navigationState->navigation(newNavigationID), { }); 3773 #endif 3788 if (frame->didHandleContentFilterUnblockNavigation(request)) { 3789 receivedPolicyAction = true; 3790 policyAction = PolicyAction::Ignore; 3791 return; 3792 } 3793 #endif 3794 3795 ASSERT(!m_inDecidePolicyForNavigationAction); 3796 3797 m_inDecidePolicyForNavigationAction = true; 3798 m_syncNavigationActionPolicyActionIsValid = false; 3774 3799 3775 3800 WebFrameProxy* originatingFrame = m_process->webFrame(originatingFrameInfoData.frameID); … … 3793 3818 3794 3819 m_shouldSuppressAppLinksInNextNavigationPolicyDecision = false; 3820 m_inDecidePolicyForNavigationAction = false; 3821 3822 // Check if we received a policy decision already. If we did, we can just pass it back. 3823 receivedPolicyAction = m_syncNavigationActionPolicyActionIsValid; 3824 if (m_syncNavigationActionPolicyActionIsValid) { 3825 policyAction = m_syncNavigationActionPolicyAction; 3826 downloadID = m_syncNavigationActionPolicyDownloadID; 3827 websitePolicies = WTFMove(m_syncNavigationActionPolicyWebsitePolicies); 3828 } 3795 3829 } 3796 3830 … … 3823 3857 { 3824 3858 PageClientProtector protector(m_pageClient); 3825 3826 m_decidePolicyForResponseRequest = request;3827 3859 3828 3860 WebFrameProxy* frame = m_process->webFrame(frameID); … … 3840 3872 } else 3841 3873 m_policyClient->decidePolicyForResponse(*this, *frame, response, request, canShowMIMEType, WTFMove(listener), m_process->transformHandlesToObjects(userData.object()).get()); 3874 } 3875 3876 void WebPageProxy::decidePolicyForResponseSync(uint64_t frameID, const SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, const ResourceResponse& response, const ResourceRequest& request, bool canShowMIMEType, uint64_t listenerID, const UserData& userData, bool& receivedPolicyAction, WebCore::PolicyAction& policyAction, DownloadID& downloadID) 3877 { 3878 PageClientProtector protector(m_pageClient); 3879 3880 ASSERT(!m_inDecidePolicyForResponseSync); 3881 3882 m_inDecidePolicyForResponseSync = true; 3883 m_decidePolicyForResponseRequest = &request; 3884 m_syncMimeTypePolicyActionIsValid = false; 3885 3886 decidePolicyForResponse(frameID, frameSecurityOrigin, navigationID, response, request, canShowMIMEType, listenerID, userData); 3887 3888 m_inDecidePolicyForResponseSync = false; 3889 m_decidePolicyForResponseRequest = nullptr; 3890 3891 // Check if we received a policy decision already. If we did, we can just pass it back. 3892 receivedPolicyAction = m_syncMimeTypePolicyActionIsValid; 3893 if (m_syncMimeTypePolicyActionIsValid) { 3894 policyAction = m_syncMimeTypePolicyAction; 3895 downloadID = m_syncMimeTypePolicyDownloadID; 3896 } 3842 3897 } 3843 3898 -
trunk/Source/WebKit/UIProcess/WebPageProxy.h
r229613 r229617 1363 1363 void didDestroyNavigation(uint64_t navigationID); 1364 1364 1365 void decidePolicyForNavigationAction(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, const FrameInfoData&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, uint64_t listenerID, const UserData& );1365 void decidePolicyForNavigationAction(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, const FrameInfoData&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, uint64_t listenerID, const UserData&, bool& receivedPolicyAction, uint64_t& newNavigationID, WebCore::PolicyAction&, DownloadID&, std::optional<WebsitePoliciesData>&); 1366 1366 void decidePolicyForNewWindowAction(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, NavigationActionData&&, WebCore::ResourceRequest&&, const String& frameName, uint64_t listenerID, const UserData&); 1367 1367 void decidePolicyForResponse(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, bool canShowMIMEType, uint64_t listenerID, const UserData&); 1368 void decidePolicyForResponseSync(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, bool canShowMIMEType, uint64_t listenerID, const UserData&, bool& receivedPolicyAction, WebCore::PolicyAction&, DownloadID&); 1368 1369 void unableToImplementPolicy(uint64_t frameID, const WebCore::ResourceError&, const UserData&); 1369 1370 … … 1906 1907 bool m_isPerformingDOMPrintOperation { false }; 1907 1908 1908 WebCore::ResourceRequest m_decidePolicyForResponseRequest; 1909 bool m_inDecidePolicyForResponseSync { false }; 1910 const WebCore::ResourceRequest* m_decidePolicyForResponseRequest { nullptr }; 1911 bool m_syncMimeTypePolicyActionIsValid { false }; 1912 WebCore::PolicyAction m_syncMimeTypePolicyAction { WebCore::PolicyAction::Use }; 1913 DownloadID m_syncMimeTypePolicyDownloadID { 0 }; 1914 bool m_inDecidePolicyForNavigationAction { false }; 1915 bool m_syncNavigationActionPolicyActionIsValid { false }; 1916 WebCore::PolicyAction m_syncNavigationActionPolicyAction { WebCore::PolicyAction::Use }; 1917 DownloadID m_syncNavigationActionPolicyDownloadID { 0 }; 1918 std::optional<WebsitePoliciesData> m_syncNavigationActionPolicyWebsitePolicies; 1919 1909 1920 bool m_shouldSuppressAppLinksInNextNavigationPolicyDecision { false }; 1910 1921 -
trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in
r229613 r229617 99 99 100 100 # Policy messages 101 DecidePolicyForResponse (uint64_t frameID, struct WebCore::SecurityOriginData frameSecurityOrigin, uint64_t navigationID, WebCore::ResourceResponse response, WebCore::ResourceRequest request, bool canShowMIMEType, uint64_t listenerID, WebKit::UserData userData)102 DecidePolicyForNavigationAction(uint64_t frameID, struct WebCore::SecurityOriginData frameSecurityOrigin, uint64_t navigationID, struct WebKit::NavigationActionData navigationActionData, struct WebKit::FrameInfoData originatingFrameInfoData, uint64_t originatingPageID, WebCore::ResourceRequest originalRequest, WebCore::ResourceRequest request, uint64_t listenerID, WebKit::UserData userData) 101 DecidePolicyForResponseSync(uint64_t frameID, struct WebCore::SecurityOriginData frameSecurityOrigin, uint64_t navigationID, WebCore::ResourceResponse response, WebCore::ResourceRequest request, bool canShowMIMEType, uint64_t listenerID, WebKit::UserData userData) -> (bool receivedPolicyAction, enum WebCore::PolicyAction policyAction, WebKit::DownloadID downloadID) 102 DecidePolicyForNavigationAction(uint64_t frameID, struct WebCore::SecurityOriginData frameSecurityOrigin, uint64_t navigationID, struct WebKit::NavigationActionData navigationActionData, struct WebKit::FrameInfoData originatingFrameInfoData, uint64_t originatingPageID, WebCore::ResourceRequest originalRequest, WebCore::ResourceRequest request, uint64_t listenerID, WebKit::UserData userData) -> (bool receivedPolicyAction, uint64_t newNavigationID, enum WebCore::PolicyAction policyAction, WebKit::DownloadID downloadID, std::optional<WebKit::WebsitePoliciesData> websitePolicies) 103 103 DecidePolicyForNewWindowAction(uint64_t frameID, struct WebCore::SecurityOriginData frameSecurityOrigin, struct WebKit::NavigationActionData navigationActionData, WebCore::ResourceRequest request, String frameName, uint64_t listenerID, WebKit::UserData userData) 104 104 UnableToImplementPolicy(uint64_t frameID, WebCore::ResourceError error, WebKit::UserData userData) -
trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
r229613 r229617 749 749 Ref<WebFrame> protector(*m_frame); 750 750 uint64_t listenerID = m_frame->setUpPolicyListener(WTFMove(function), WebFrame::ForNavigationAction::No); 751 bool receivedPolicyAction; 752 PolicyAction policyAction; 753 DownloadID downloadID; 754 751 755 auto navigationID = static_cast<WebDocumentLoader&>(*policyDocumentLoader).navigationID(); 752 if (!webPage->send (Messages::WebPageProxy::DecidePolicyForResponse(m_frame->frameID(), SecurityOriginData::fromFrame(coreFrame), navigationID, response, request, canShowMIMEType, listenerID, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get()))))756 if (!webPage->sendSync(Messages::WebPageProxy::DecidePolicyForResponseSync(m_frame->frameID(), SecurityOriginData::fromFrame(coreFrame), navigationID, response, request, canShowMIMEType, listenerID, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get())), Messages::WebPageProxy::DecidePolicyForResponseSync::Reply(receivedPolicyAction, policyAction, downloadID), Seconds::infinity(), IPC::SendSyncOption::InformPlatformProcessWillSuspend)) { 753 757 m_frame->didReceivePolicyDecision(listenerID, PolicyAction::Ignore, 0, { }, { }); 758 return; 759 } 760 761 // We call this synchronously because CFNetwork can only convert a loading connection to a download from its didReceiveResponse callback. 762 if (receivedPolicyAction) 763 m_frame->didReceivePolicyDecision(listenerID, policyAction, 0, downloadID, { }); 754 764 } 755 765 … … 834 844 835 845 uint64_t listenerID = m_frame->setUpPolicyListener(WTFMove(function), WebFrame::ForNavigationAction::Yes); 846 bool receivedPolicyAction; 847 uint64_t newNavigationID; 848 PolicyAction policyAction; 849 DownloadID downloadID; 836 850 837 851 ASSERT(navigationAction.sourceDocument()); … … 872 886 // Notify the UIProcess. 873 887 Ref<WebFrame> protect(*m_frame); 874 if (!webPage->send(Messages::WebPageProxy::DecidePolicyForNavigationAction(m_frame->frameID(), SecurityOriginData::fromFrame(coreFrame), documentLoader->navigationID(), navigationActionData, originatingFrameInfoData, originatingFrame && originatingFrame->page() ? originatingFrame->page()->pageID() : 0, navigationAction.resourceRequest(), request, listenerID, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get())))) 888 std::optional<WebsitePoliciesData> websitePolicies; 889 if (!webPage->sendSync(Messages::WebPageProxy::DecidePolicyForNavigationAction(m_frame->frameID(), SecurityOriginData::fromFrame(coreFrame), documentLoader->navigationID(), navigationActionData, originatingFrameInfoData, originatingFrame && originatingFrame->page() ? originatingFrame->page()->pageID() : 0, navigationAction.resourceRequest(), request, listenerID, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get())), Messages::WebPageProxy::DecidePolicyForNavigationAction::Reply(receivedPolicyAction, newNavigationID, policyAction, downloadID, websitePolicies))) { 875 890 m_frame->didReceivePolicyDecision(listenerID, PolicyAction::Ignore, 0, { }, { }); 891 return; 892 } 893 894 // We call this synchronously because WebCore cannot gracefully handle a frame load without a synchronous navigation policy reply. 895 if (receivedPolicyAction) 896 m_frame->didReceivePolicyDecision(listenerID, policyAction, newNavigationID, downloadID, WTFMove(websitePolicies)); 876 897 } 877 898
Note: See TracChangeset
for help on using the changeset viewer.