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();