Title: [255034] branches/safari-609-branch
Revision
255034
Author
[email protected]
Date
2020-01-23 13:44:55 -0800 (Thu, 23 Jan 2020)

Log Message

Cherry-pick r254884. rdar://problem/58807972

    ProvisionalPageProxy::loadData should pass last navigation's shouldOpenExternalURLsPolicy flag to WebPageProxy
    https://bugs.webkit.org/show_bug.cgi?id=206462
    <rdar://problem/57468718>

    Reviewed by Chris Dumez.

    Source/WebKit:

    Covered by API tests.

    This patch also does it for ProvisionalPageProxy::loadRequest.

    * UIProcess/ProvisionalPageProxy.cpp:
    (WebKit::ProvisionalPageProxy::loadData):
    (WebKit::ProvisionalPageProxy::loadRequest):
    * UIProcess/ProvisionalPageProxy.h:
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::continueNavigationInNewProcess):

    Tools:

    * TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm:
    (TestWebKitAPI::TEST):

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@254884 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Modified Paths

Diff

Modified: branches/safari-609-branch/Source/WebKit/ChangeLog (255033 => 255034)


--- branches/safari-609-branch/Source/WebKit/ChangeLog	2020-01-23 21:44:52 UTC (rev 255033)
+++ branches/safari-609-branch/Source/WebKit/ChangeLog	2020-01-23 21:44:55 UTC (rev 255034)
@@ -1,5 +1,55 @@
 2020-01-23  Russell Epstein  <[email protected]>
 
+        Cherry-pick r254884. rdar://problem/58807972
+
+    ProvisionalPageProxy::loadData should pass last navigation's shouldOpenExternalURLsPolicy flag to WebPageProxy
+    https://bugs.webkit.org/show_bug.cgi?id=206462
+    <rdar://problem/57468718>
+    
+    Reviewed by Chris Dumez.
+    
+    Source/WebKit:
+    
+    Covered by API tests.
+    
+    This patch also does it for ProvisionalPageProxy::loadRequest.
+    
+    * UIProcess/ProvisionalPageProxy.cpp:
+    (WebKit::ProvisionalPageProxy::loadData):
+    (WebKit::ProvisionalPageProxy::loadRequest):
+    * UIProcess/ProvisionalPageProxy.h:
+    * UIProcess/WebPageProxy.cpp:
+    (WebKit::WebPageProxy::continueNavigationInNewProcess):
+    
+    Tools:
+    
+    * TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm:
+    (TestWebKitAPI::TEST):
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@254884 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2020-01-21  Jiewen Tan  <[email protected]>
+
+            ProvisionalPageProxy::loadData should pass last navigation's shouldOpenExternalURLsPolicy flag to WebPageProxy
+            https://bugs.webkit.org/show_bug.cgi?id=206462
+            <rdar://problem/57468718>
+
+            Reviewed by Chris Dumez.
+
+            Covered by API tests.
+
+            This patch also does it for ProvisionalPageProxy::loadRequest.
+
+            * UIProcess/ProvisionalPageProxy.cpp:
+            (WebKit::ProvisionalPageProxy::loadData):
+            (WebKit::ProvisionalPageProxy::loadRequest):
+            * UIProcess/ProvisionalPageProxy.h:
+            * UIProcess/WebPageProxy.cpp:
+            (WebKit::WebPageProxy::continueNavigationInNewProcess):
+
+2020-01-23  Russell Epstein  <[email protected]>
+
         Cherry-pick r254880. rdar://problem/58816328
 
     [macOS] Add managed preference to allow synchronous XHR during page dismissal

Modified: branches/safari-609-branch/Source/WebKit/UIProcess/ProvisionalPageProxy.cpp (255033 => 255034)


--- branches/safari-609-branch/Source/WebKit/UIProcess/ProvisionalPageProxy.cpp	2020-01-23 21:44:52 UTC (rev 255033)
+++ branches/safari-609-branch/Source/WebKit/UIProcess/ProvisionalPageProxy.cpp	2020-01-23 21:44:55 UTC (rev 255034)
@@ -152,10 +152,10 @@
 {
     RELEASE_LOG_IF_ALLOWED(ProcessSwapping, "loadData: pageProxyID=%" PRIu64 " webPageID=%" PRIu64, m_page.identifier().toUInt64(), m_webPageID.toUInt64());
 
-    m_page.loadDataWithNavigationShared(m_process.copyRef(), m_webPageID, navigation, data, MIMEType, encoding, baseURL, userData, WebCore::ShouldTreatAsContinuingLoad::Yes, WTFMove(websitePolicies));
+    m_page.loadDataWithNavigationShared(m_process.copyRef(), m_webPageID, navigation, data, MIMEType, encoding, baseURL, userData, WebCore::ShouldTreatAsContinuingLoad::Yes, WTFMove(websitePolicies), navigation.lastNavigationAction().shouldOpenExternalURLsPolicy);
 }
 
-void ProvisionalPageProxy::loadRequest(API::Navigation& navigation, WebCore::ResourceRequest&& request, WebCore::ShouldOpenExternalURLsPolicy shouldOpenExternalURLsPolicy, API::Object* userData, Optional<WebsitePoliciesData>&& websitePolicies)
+void ProvisionalPageProxy::loadRequest(API::Navigation& navigation, WebCore::ResourceRequest&& request, API::Object* userData, Optional<WebsitePoliciesData>&& websitePolicies)
 {
     RELEASE_LOG_IF_ALLOWED(ProcessSwapping, "loadRequest: pageProxyID=%" PRIu64 " webPageID=%" PRIu64, m_page.identifier().toUInt64(), m_webPageID.toUInt64());
 
@@ -165,7 +165,7 @@
     if (navigation.fromItem() && navigation.lockBackForwardList() == WebCore::LockBackForwardList::Yes)
         navigation.fromItem()->setLastProcessIdentifier(m_process->coreProcessIdentifier());
 
-    m_page.loadRequestWithNavigationShared(m_process.copyRef(), m_webPageID, navigation, WTFMove(request), shouldOpenExternalURLsPolicy, userData, WebCore::ShouldTreatAsContinuingLoad::Yes, WTFMove(websitePolicies));
+    m_page.loadRequestWithNavigationShared(m_process.copyRef(), m_webPageID, navigation, WTFMove(request), navigation.lastNavigationAction().shouldOpenExternalURLsPolicy, userData, WebCore::ShouldTreatAsContinuingLoad::Yes, WTFMove(websitePolicies));
 }
 
 void ProvisionalPageProxy::goToBackForwardItem(API::Navigation& navigation, WebBackForwardListItem& item, Optional<WebsitePoliciesData>&& websitePolicies)

Modified: branches/safari-609-branch/Source/WebKit/UIProcess/ProvisionalPageProxy.h (255033 => 255034)


--- branches/safari-609-branch/Source/WebKit/UIProcess/ProvisionalPageProxy.h	2020-01-23 21:44:52 UTC (rev 255033)
+++ branches/safari-609-branch/Source/WebKit/UIProcess/ProvisionalPageProxy.h	2020-01-23 21:44:55 UTC (rev 255034)
@@ -92,7 +92,7 @@
 #endif
 
     void loadData(API::Navigation&, const IPC::DataReference&, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData, Optional<WebsitePoliciesData>&& = WTF::nullopt);
-    void loadRequest(API::Navigation&, WebCore::ResourceRequest&&, WebCore::ShouldOpenExternalURLsPolicy, API::Object* userData, Optional<WebsitePoliciesData>&& = WTF::nullopt);
+    void loadRequest(API::Navigation&, WebCore::ResourceRequest&&, API::Object* userData, Optional<WebsitePoliciesData>&& = WTF::nullopt);
     void goToBackForwardItem(API::Navigation&, WebBackForwardListItem&, Optional<WebsitePoliciesData>&&);
     void cancel();
 

Modified: branches/safari-609-branch/Source/WebKit/UIProcess/WebPageProxy.cpp (255033 => 255034)


--- branches/safari-609-branch/Source/WebKit/UIProcess/WebPageProxy.cpp	2020-01-23 21:44:52 UTC (rev 255033)
+++ branches/safari-609-branch/Source/WebKit/UIProcess/WebPageProxy.cpp	2020-01-23 21:44:55 UTC (rev 255034)
@@ -3185,7 +3185,7 @@
         if (auto& substituteData = navigation->substituteData())
             m_provisionalPage->loadData(navigation, { substituteData->content.data(), substituteData->content.size() }, substituteData->MIMEType, substituteData->encoding, substituteData->baseURL, substituteData->userData.get(), WTFMove(websitePolicies));
         else
-            m_provisionalPage->loadRequest(navigation, ResourceRequest { navigation->currentRequest() }, WebCore::ShouldOpenExternalURLsPolicy::ShouldAllowExternalSchemes, nullptr, WTFMove(websitePolicies));
+            m_provisionalPage->loadRequest(navigation, ResourceRequest { navigation->currentRequest() }, nullptr, WTFMove(websitePolicies));
     };
     if (m_inspectorController->shouldPauseLoading(*m_provisionalPage))
         m_inspectorController->setContinueLoadingCallback(*m_provisionalPage, WTFMove(continuation));

Modified: branches/safari-609-branch/Tools/ChangeLog (255033 => 255034)


--- branches/safari-609-branch/Tools/ChangeLog	2020-01-23 21:44:52 UTC (rev 255033)
+++ branches/safari-609-branch/Tools/ChangeLog	2020-01-23 21:44:55 UTC (rev 255034)
@@ -1,5 +1,47 @@
 2020-01-23  Russell Epstein  <[email protected]>
 
+        Cherry-pick r254884. rdar://problem/58807972
+
+    ProvisionalPageProxy::loadData should pass last navigation's shouldOpenExternalURLsPolicy flag to WebPageProxy
+    https://bugs.webkit.org/show_bug.cgi?id=206462
+    <rdar://problem/57468718>
+    
+    Reviewed by Chris Dumez.
+    
+    Source/WebKit:
+    
+    Covered by API tests.
+    
+    This patch also does it for ProvisionalPageProxy::loadRequest.
+    
+    * UIProcess/ProvisionalPageProxy.cpp:
+    (WebKit::ProvisionalPageProxy::loadData):
+    (WebKit::ProvisionalPageProxy::loadRequest):
+    * UIProcess/ProvisionalPageProxy.h:
+    * UIProcess/WebPageProxy.cpp:
+    (WebKit::WebPageProxy::continueNavigationInNewProcess):
+    
+    Tools:
+    
+    * TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm:
+    (TestWebKitAPI::TEST):
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@254884 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2020-01-21  Jiewen Tan  <[email protected]>
+
+            ProvisionalPageProxy::loadData should pass last navigation's shouldOpenExternalURLsPolicy flag to WebPageProxy
+            https://bugs.webkit.org/show_bug.cgi?id=206462
+            <rdar://problem/57468718>
+
+            Reviewed by Chris Dumez.
+
+            * TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm:
+            (TestWebKitAPI::TEST):
+
+2020-01-23  Russell Epstein  <[email protected]>
+
         Cherry-pick r254711. rdar://problem/58816343
 
     Regression(r253224) No longer able to prevent a tab from closing via the beforeunload prompt

Modified: branches/safari-609-branch/Tools/TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm (255033 => 255034)


--- branches/safari-609-branch/Tools/TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm	2020-01-23 21:44:52 UTC (rev 255033)
+++ branches/safari-609-branch/Tools/TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm	2020-01-23 21:44:55 UTC (rev 255034)
@@ -1016,6 +1016,39 @@
     [webView waitForMessage:@"SAML"];
 }
 
+TEST(SOAuthorizationRedirect, InterceptionSucceedSAMLWithPSON)
+{
+    resetState();
+    ClassMethodSwizzler swizzler1(PAL::getSOAuthorizationClass(), @selector(canPerformAuthorizationWithURL:responseCode:), reinterpret_cast<IMP>(overrideCanPerformAuthorizationWithURL));
+    InstanceMethodSwizzler swizzler2(PAL::getSOAuthorizationClass(), @selector(setDelegate:), reinterpret_cast<IMP>(overrideSetDelegate));
+    InstanceMethodSwizzler swizzler3(PAL::getSOAuthorizationClass(), @selector(beginAuthorizationWithURL:httpHeaders:httpBody:), reinterpret_cast<IMP>(overrideBeginAuthorizationWithURL));
+
+    RetainPtr<NSURL> baseURL = [[NSBundle mainBundle] URLForResource:@"simple3" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"];
+    auto testURL = URL(URL(), "http://www.example.com");
+
+    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 500)]);
+    auto delegate = adoptNS([[TestSOAuthorizationDelegate alloc] init]);
+    configureSOAuthorizationWebView(webView.get(), delegate.get(), OpenExternalSchemesPolicy::Allow);
+
+    [webView loadRequest:[NSURLRequest requestWithURL:baseURL.get()]];
+    Util::run(&navigationCompleted);
+
+    // PSON: file:/// => example.com
+    [webView loadRequest:[NSURLRequest requestWithURL:(NSURL *)testURL]];
+    Util::run(&authorizationPerformed);
+
+    navigationCompleted = false;
+    // Pass a HTTP 200 response with a html to mimic a SAML response.
+    auto response = adoptNS([[NSHTTPURLResponse alloc] initWithURL:(NSURL *)testURL statusCode:200 HTTPVersion:@"HTTP/1.1" headerFields:nil]);
+    [gDelegate authorization:gAuthorization didCompleteWithHTTPResponse:response.get() httpBody:adoptNS([[NSData alloc] initWithBytes:samlResponse length:strlen(samlResponse)]).get()];
+    Util::run(&navigationCompleted);
+
+    authorizationPerformed = false;
+    navigationPolicyDecided = false;
+    [webView _evaluateJavaScriptWithoutUserGesture:@"location = 'http://www.example.com'" completionHandler:nil];
+    Util::run(&navigationPolicyDecided);
+}
+
 TEST(SOAuthorizationRedirect, AuthorizationOptions)
 {
     resetState();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to