Diff
Modified: branches/safari-605-branch/LayoutTests/ChangeLog (231199 => 231200)
--- branches/safari-605-branch/LayoutTests/ChangeLog 2018-05-01 17:09:06 UTC (rev 231199)
+++ branches/safari-605-branch/LayoutTests/ChangeLog 2018-05-01 17:23:03 UTC (rev 231200)
@@ -1,3 +1,18 @@
+2018-04-30 Jason Marcell <[email protected]>
+
+ Apply patch. rdar://problem/39741039
+
+ 2018-04-30 Brent Fulgham <[email protected]>
+
+ Don't Block First Party Cookies on Redirects
+ https://bugs.webkit.org/show_bug.cgi?id=184948
+ <rdar://problem/39534099>
+
+ Reviewed by Youenn Fablet.
+
+ * http/tests/resourceLoadStatistics/do-not-block-top-level-navigation-redirect-expected.txt: Added.
+ * http/tests/resourceLoadStatistics/do-not-block-top-level-navigation-redirect.html: Added.
+
2018-04-17 Kocsen Chung <[email protected]>
Cherry-pick r230530. rdar://problem/39462749
Added: branches/safari-605-branch/LayoutTests/http/tests/resourceLoadStatistics/do-not-block-top-level-navigation-redirect-expected.txt (0 => 231200)
--- branches/safari-605-branch/LayoutTests/http/tests/resourceLoadStatistics/do-not-block-top-level-navigation-redirect-expected.txt (rev 0)
+++ branches/safari-605-branch/LayoutTests/http/tests/resourceLoadStatistics/do-not-block-top-level-navigation-redirect-expected.txt 2018-05-01 17:23:03 UTC (rev 231200)
@@ -0,0 +1 @@
+PASSED: Cookie successfully set
Added: branches/safari-605-branch/LayoutTests/http/tests/resourceLoadStatistics/do-not-block-top-level-navigation-redirect.html (0 => 231200)
--- branches/safari-605-branch/LayoutTests/http/tests/resourceLoadStatistics/do-not-block-top-level-navigation-redirect.html (rev 0)
+++ branches/safari-605-branch/LayoutTests/http/tests/resourceLoadStatistics/do-not-block-top-level-navigation-redirect.html 2018-05-01 17:23:03 UTC (rev 231200)
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <script src=""
+<script>
+ description("Tests that blocking is not applied to top-level navigation redirects.");
+ jsTestIsAsync = true;
+
+ internals.setResourceLoadStatisticsEnabled(true);
+ testRunner.setCookieStoragePartitioningEnabled(true);
+
+ function doRedirect()
+ {
+ testRunner.setStatisticsPrevalentResource("http://localhost", true);
+ if (!testRunner.isStatisticsPrevalentResource("http://localhost")) {
+ testFailed("Host did not get set as prevalent resource.");
+ finishJSTest();
+ }
+ else
+ window.location = "http://localhost:8000/cookies/resources/set-cookie-on-redirect.php?step=1";
+ }
+</script>
+</head>
+<body _onload_="doRedirect()">
+</body>
+</html>
Modified: branches/safari-605-branch/Source/WebCore/ChangeLog (231199 => 231200)
--- branches/safari-605-branch/Source/WebCore/ChangeLog 2018-05-01 17:09:06 UTC (rev 231199)
+++ branches/safari-605-branch/Source/WebCore/ChangeLog 2018-05-01 17:23:03 UTC (rev 231200)
@@ -1,3 +1,21 @@
+2018-04-30 Jason Marcell <[email protected]>
+
+ Apply patch. rdar://problem/39741039
+
+ 2018-04-30 Brent Fulgham <[email protected]>
+
+ Don't Block First Party Cookies on Redirects
+ https://bugs.webkit.org/show_bug.cgi?id=184948
+ <rdar://problem/39534099>
+
+ Reviewed by Youenn Fablet.
+
+ The Navigation scheduler looses the 'requester' value when performing a ScheduledRedirect.
+
+ Test: http/tests/resourceLoadStatistics/do-not-block-top-level-navigation-redirect.html
+
+ * loader/NavigationScheduler.cpp:
+
2018-04-26 Jason Marcell <[email protected]>
Cherry-pick r231002. rdar://problem/39762191
Modified: branches/safari-605-branch/Source/WebCore/loader/NavigationScheduler.cpp (231199 => 231200)
--- branches/safari-605-branch/Source/WebCore/loader/NavigationScheduler.cpp 2018-05-01 17:09:06 UTC (rev 231199)
+++ branches/safari-605-branch/Source/WebCore/loader/NavigationScheduler.cpp 2018-05-01 17:23:03 UTC (rev 231200)
@@ -184,6 +184,8 @@
bool refresh = equalIgnoringFragmentIdentifier(frame.document()->url(), url());
ResourceRequest resourceRequest { url(), referrer(), refresh ? ReloadIgnoringCacheData : UseProtocolCachePolicy };
+ if (initiatedByMainFrame() == InitiatedByMainFrame::Yes)
+ resourceRequest.setRequester(ResourceRequest::Requester::Main);
FrameLoadRequest frameLoadRequest { initiatingDocument(), *securityOrigin(), resourceRequest, "_self", lockHistory(), lockBackForwardList(), MaybeSendReferrer, AllowNavigationToInvalidURL::No, NewFrameOpenerPolicy::Allow, shouldOpenExternalURLs(), initiatedByMainFrame() };
frame.loader().changeLocation(WTFMove(frameLoadRequest));
Modified: branches/safari-605-branch/Source/WebKit/ChangeLog (231199 => 231200)
--- branches/safari-605-branch/Source/WebKit/ChangeLog 2018-05-01 17:09:06 UTC (rev 231199)
+++ branches/safari-605-branch/Source/WebKit/ChangeLog 2018-05-01 17:23:03 UTC (rev 231200)
@@ -1,3 +1,50 @@
+2018-04-30 Jason Marcell <[email protected]>
+
+ Apply patch. rdar://problem/39741039
+
+ 2018-04-30 Brent Fulgham <[email protected]>
+
+ Don't Block First Party Cookies on Redirects
+ https://bugs.webkit.org/show_bug.cgi?id=184948
+ <rdar://problem/39534099>
+
+ Reviewed by Youenn Fablet.
+
+ Top-level navigations should not be subject to cookie blocking behavior. When performing redirects for main frame
+ navigation we are blocking cookies, leading to site breakage.
+
+ We need to keep track of which NetworkDataTasks are due to a main frame navigation. When a redirect is performed
+ on the main frame, we should treat the new origin as the 'first party for cookies' and avoid blocking cookies for
+ that URL.
+
+ * NetworkProcess/NetworkConnectionToWebProcess.cpp:
+ (WebKit::NetworkConnectionToWebProcess::preconnectTo): Use the correct parameter type. We actually serialize
+ NetworkResourceLoadParameters over IPC, so we should get access to all the members of this child class.
+ * NetworkProcess/NetworkConnectionToWebProcess.h:
+ * NetworkProcess/NetworkDataTask.cpp:
+ (WebKit::NetworkDataTask::create): Pass new 'loadIsForNavigation' flag to create methods.
+ (WebKit::NetworkDataTask::NetworkDataTask): Capture 'loadIsForNavigation' in constructor.
+ * NetworkProcess/NetworkDataTask.h:
+ (WebKit::NetworkDataTask::isTopLevelNavigation const): Added.
+ * NetworkProcess/NetworkDataTaskBlob.cpp:
+ (WebKit::NetworkDataTaskBlob::NetworkDataTaskBlob): Accept new constructor argument.
+ * NetworkProcess/NetworkDataTaskBlob.h:
+ * NetworkProcess/NetworkLoad.cpp:
+ (WebKit::NetworkLoad::willPerformHTTPRedirection): Retain requester value from old request during redirect.
+ * NetworkProcess/NetworkResourceLoadParameters.cpp:
+ (NetworkResourceLoadParameters::decode): Update to pass new flag.
+ (NetworkResourceLoadParameters::encode): Ditto.
+ * NetworkProcess/NetworkLoadParameters.h:
+ * NetworkProcess/capture/NetworkDataTaskReplay.cpp:
+ (WebKit::NetworkCapture::NetworkDataTaskReplay::NetworkDataTaskReplay): Accept new constructor argument.
+ * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
+ * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
+ (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): Accept new constructor argument.
+ (WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
+ * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
+ (WebKit::NetworkDataTaskSoup::NetworkDataTaskSoup): Accept new constructor argument.
+ * NetworkProcess/soup/NetworkDataTaskSoup.h:
+
2018-04-27 Jason Marcell <[email protected]>
Cherry-pick r230903. rdar://problem/39766220
Modified: branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp (231199 => 231200)
--- branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp 2018-05-01 17:09:06 UTC (rev 231199)
+++ branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp 2018-05-01 17:23:03 UTC (rev 231200)
@@ -291,7 +291,7 @@
NetworkProcess::singleton().prefetchDNS(hostname);
}
-void NetworkConnectionToWebProcess::preconnectTo(uint64_t preconnectionIdentifier, NetworkLoadParameters&& parameters)
+void NetworkConnectionToWebProcess::preconnectTo(uint64_t preconnectionIdentifier, NetworkResourceLoadParameters&& parameters)
{
#if ENABLE(SERVER_PRECONNECT)
new PreconnectTask(WTFMove(parameters), [this, protectedThis = makeRef(*this), identifier = preconnectionIdentifier] (const ResourceError& error) {
Modified: branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h (231199 => 231200)
--- branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h 2018-05-01 17:09:06 UTC (rev 231199)
+++ branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h 2018-05-01 17:23:03 UTC (rev 231200)
@@ -93,7 +93,7 @@
void performSynchronousLoad(const NetworkResourceLoadParameters&, Ref<Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad::DelayedReply>&&);
void loadPing(NetworkResourceLoadParameters&&, WebCore::HTTPHeaderMap&& originalRequestHeaders);
void prefetchDNS(const String&);
- void preconnectTo(uint64_t preconnectionIdentifier, NetworkLoadParameters&&);
+ void preconnectTo(uint64_t preconnectionIdentifier, NetworkResourceLoadParameters&&);
void removeLoadIdentifier(ResourceLoadIdentifier);
void setDefersLoading(ResourceLoadIdentifier, bool);
Modified: branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkDataTask.cpp (231199 => 231200)
--- branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkDataTask.cpp 2018-05-01 17:09:06 UTC (rev 231199)
+++ branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkDataTask.cpp 2018-05-01 17:23:03 UTC (rev 231200)
@@ -53,14 +53,14 @@
return NetworkDataTaskBlob::create(session, client, parameters.request, parameters.contentSniffingPolicy, parameters.blobFileReferences);
#if PLATFORM(COCOA)
- return NetworkDataTaskCocoa::create(session, client, parameters.request, parameters.webFrameID, parameters.webPageID, parameters.storedCredentialsPolicy, parameters.contentSniffingPolicy, parameters.contentEncodingSniffingPolicy, parameters.shouldClearReferrerOnHTTPSToHTTPRedirect, parameters.shouldPreconnectOnly);
+ return NetworkDataTaskCocoa::create(session, client, parameters.request, parameters.webFrameID, parameters.webPageID, parameters.storedCredentialsPolicy, parameters.contentSniffingPolicy, parameters.contentEncodingSniffingPolicy, parameters.shouldClearReferrerOnHTTPSToHTTPRedirect, parameters.shouldPreconnectOnly, parameters.isMainFrameNavigation);
#endif
#if USE(SOUP)
- return NetworkDataTaskSoup::create(session, client, parameters.request, parameters.storedCredentialsPolicy, parameters.contentSniffingPolicy, parameters.contentEncodingSniffingPolicy, parameters.shouldClearReferrerOnHTTPSToHTTPRedirect);
+ return NetworkDataTaskCurl::create(session, client, parameters.request, parameters.storedCredentialsPolicy, parameters.contentSniffingPolicy, parameters.contentEncodingSniffingPolicy, parameters.shouldClearReferrerOnHTTPSToHTTPRedirect, parameters.isMainFrameNavigation);
#endif
}
-NetworkDataTask::NetworkDataTask(NetworkSession& session, NetworkDataTaskClient& client, const ResourceRequest& requestWithCredentials, StoredCredentialsPolicy storedCredentialsPolicy, bool shouldClearReferrerOnHTTPSToHTTPRedirect)
+NetworkDataTask::NetworkDataTask(NetworkSession& session, NetworkDataTaskClient& client, const ResourceRequest& requestWithCredentials, StoredCredentialsPolicy storedCredentialsPolicy, bool shouldClearReferrerOnHTTPSToHTTPRedirect, bool dataTaskIsForMainFrameNavigation)
: m_failureTimer(*this, &NetworkDataTask::failureTimerFired)
, m_session(session)
, m_client(&client)
@@ -69,6 +69,7 @@
, m_lastHTTPMethod(requestWithCredentials.httpMethod())
, m_firstRequest(requestWithCredentials)
, m_shouldClearReferrerOnHTTPSToHTTPRedirect(shouldClearReferrerOnHTTPSToHTTPRedirect)
+ , m_dataTaskIsForMainFrameNavigation(dataTaskIsForMainFrameNavigation)
{
ASSERT(RunLoop::isMain());
Modified: branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkDataTask.h (231199 => 231200)
--- branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkDataTask.h 2018-05-01 17:09:06 UTC (rev 231199)
+++ branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkDataTask.h 2018-05-01 17:23:03 UTC (rev 231200)
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2016 Apple Inc. All rights reserved.
+ * Copyright (C) 2016-2018 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -128,8 +128,10 @@
void setSuggestedFilename(const String& suggestedName) { m_suggestedFilename = suggestedName; }
const String& partition() { return m_partition; }
+ bool isTopLevelNavigation() const { return m_dataTaskIsForMainFrameNavigation; }
+
protected:
- NetworkDataTask(NetworkSession&, NetworkDataTaskClient&, const WebCore::ResourceRequest&, WebCore::StoredCredentialsPolicy, bool shouldClearReferrerOnHTTPSToHTTPRedirect);
+ NetworkDataTask(NetworkSession&, NetworkDataTaskClient&, const WebCore::ResourceRequest&, WebCore::StoredCredentialsPolicy, bool shouldClearReferrerOnHTTPSToHTTPRedirect, bool dataTaskIsForMainFrameNavigation);
enum FailureType {
NoFailure,
@@ -157,6 +159,7 @@
WebCore::ResourceRequest m_firstRequest;
bool m_shouldClearReferrerOnHTTPSToHTTPRedirect { true };
String m_suggestedFilename;
+ bool m_dataTaskIsForMainFrameNavigation { false };
};
} // namespace WebKit
Modified: branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkDataTaskBlob.cpp (231199 => 231200)
--- branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkDataTaskBlob.cpp 2018-05-01 17:09:06 UTC (rev 231199)
+++ branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkDataTaskBlob.cpp 2018-05-01 17:23:03 UTC (rev 231200)
@@ -74,7 +74,7 @@
static const char* const webKitBlobResourceDomain = "WebKitBlobResource";
NetworkDataTaskBlob::NetworkDataTaskBlob(NetworkSession& session, NetworkDataTaskClient& client, const ResourceRequest& request, ContentSniffingPolicy shouldContentSniff, const Vector<RefPtr<WebCore::BlobDataFileReference>>& fileReferences)
- : NetworkDataTask(session, client, request, StoredCredentialsPolicy::DoNotUse, false)
+ : NetworkDataTask(session, client, request, StoredCredentialsPolicy::DoNotUse, false, false)
, m_stream(std::make_unique<AsyncFileStream>(*this))
, m_fileReferences(fileReferences)
{
Modified: branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkLoad.cpp (231199 => 231200)
--- branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkLoad.cpp 2018-05-01 17:09:06 UTC (rev 231199)
+++ branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkLoad.cpp 2018-05-01 17:23:03 UTC (rev 231200)
@@ -267,6 +267,8 @@
#endif
auto oldRequest = WTFMove(m_currentRequest);
+ request.setRequester(oldRequest.requester());
+
m_currentRequest = request;
m_client.get().willSendRedirectedRequest(WTFMove(oldRequest), WTFMove(request), WTFMove(redirectResponse));
}
Modified: branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkLoadParameters.h (231199 => 231200)
--- branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkLoadParameters.h 2018-05-01 17:09:06 UTC (rev 231199)
+++ branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkLoadParameters.h 2018-05-01 17:23:03 UTC (rev 231200)
@@ -48,6 +48,7 @@
bool shouldFollowRedirects { true };
bool shouldClearReferrerOnHTTPSToHTTPRedirect { true };
bool defersLoading { false };
+ bool isMainFrameNavigation { false };
bool needsCertificateInfo { false };
#if USE(NETWORK_SESSION)
Vector<RefPtr<WebCore::BlobDataFileReference>> blobFileReferences;
Modified: branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp (231199 => 231200)
--- branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp 2018-05-01 17:09:06 UTC (rev 231199)
+++ branches/safari-605-branch/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp 2018-05-01 17:23:03 UTC (rev 231200)
@@ -82,6 +82,7 @@
encoder << shouldClearReferrerOnHTTPSToHTTPRedirect;
encoder << defersLoading;
encoder << needsCertificateInfo;
+ encoder << isMainFrameNavigation;
encoder << maximumBufferingTime;
encoder << derivedCachedDataTypesToRetrieve;
@@ -159,6 +160,8 @@
return false;
if (!decoder.decode(result.needsCertificateInfo))
return false;
+ if (!decoder.decode(result.isMainFrameNavigation))
+ return false;
if (!decoder.decode(result.maximumBufferingTime))
return false;
if (!decoder.decode(result.derivedCachedDataTypesToRetrieve))
Modified: branches/safari-605-branch/Source/WebKit/NetworkProcess/PingLoad.cpp (231199 => 231200)
--- branches/safari-605-branch/Source/WebKit/NetworkProcess/PingLoad.cpp 2018-05-01 17:09:06 UTC (rev 231199)
+++ branches/safari-605-branch/Source/WebKit/NetworkProcess/PingLoad.cpp 2018-05-01 17:23:03 UTC (rev 231200)
@@ -89,6 +89,7 @@
if (auto* networkSession = SessionTracker::networkSession(m_parameters.sessionID)) {
auto loadParameters = m_parameters;
loadParameters.request = WTFMove(request);
+ loadParameters.isMainFrameNavigation = m_parameters.mode == FetchOptions::Mode::Navigate;
m_task = NetworkDataTask::create(*networkSession, *this, WTFMove(loadParameters));
m_task->resume();
} else
Modified: branches/safari-605-branch/Source/WebKit/NetworkProcess/capture/NetworkDataTaskReplay.cpp (231199 => 231200)
--- branches/safari-605-branch/Source/WebKit/NetworkProcess/capture/NetworkDataTaskReplay.cpp 2018-05-01 17:09:06 UTC (rev 231199)
+++ branches/safari-605-branch/Source/WebKit/NetworkProcess/capture/NetworkDataTaskReplay.cpp 2018-05-01 17:23:03 UTC (rev 231200)
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2016 Apple Inc. All rights reserved.
+ * Copyright (C) 2016-2018 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -46,7 +46,7 @@
static const char* const webKitRelayDomain = "WebKitReplay";
NetworkDataTaskReplay::NetworkDataTaskReplay(NetworkSession& session, NetworkDataTaskClient& client, const NetworkLoadParameters& parameters, Resource* resource)
- : NetworkDataTask(session, client, parameters.request, parameters.storedCredentialsPolicy, parameters.shouldClearReferrerOnHTTPSToHTTPRedirect)
+ : NetworkDataTask(session, client, parameters.request, parameters.storedCredentialsPolicy, parameters.shouldClearReferrerOnHTTPSToHTTPRedirect, parameters.isMainFrameNavigation)
, m_currentRequest(m_firstRequest)
, m_resource(resource)
{
Modified: branches/safari-605-branch/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h (231199 => 231200)
--- branches/safari-605-branch/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h 2018-05-01 17:09:06 UTC (rev 231199)
+++ branches/safari-605-branch/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h 2018-05-01 17:23:03 UTC (rev 231200)
@@ -42,9 +42,9 @@
class NetworkDataTaskCocoa final : public NetworkDataTask {
friend class NetworkSessionCocoa;
public:
- static Ref<NetworkDataTask> create(NetworkSession& session, NetworkDataTaskClient& client, const WebCore::ResourceRequest& request, uint64_t frameID, uint64_t pageID, WebCore::StoredCredentialsPolicy storedCredentialsPolicy, WebCore::ContentSniffingPolicy shouldContentSniff, WebCore::ContentEncodingSniffingPolicy shouldContentEncodingSniff, bool shouldClearReferrerOnHTTPSToHTTPRedirect, PreconnectOnly shouldPreconnectOnly)
+ static Ref<NetworkDataTask> create(NetworkSession& session, NetworkDataTaskClient& client, const WebCore::ResourceRequest& request, uint64_t frameID, uint64_t pageID, WebCore::StoredCredentialsPolicy storedCredentialsPolicy, WebCore::ContentSniffingPolicy shouldContentSniff, WebCore::ContentEncodingSniffingPolicy shouldContentEncodingSniff, bool shouldClearReferrerOnHTTPSToHTTPRedirect, PreconnectOnly shouldPreconnectOnly, bool dataTaskIsForMainFrameNavigation)
{
- return adoptRef(*new NetworkDataTaskCocoa(session, client, request, frameID, pageID, storedCredentialsPolicy, shouldContentSniff, shouldContentEncodingSniff, shouldClearReferrerOnHTTPSToHTTPRedirect, shouldPreconnectOnly));
+ return adoptRef(*new NetworkDataTaskCocoa(session, client, request, frameID, pageID, storedCredentialsPolicy, shouldContentSniff, shouldContentEncodingSniff, shouldClearReferrerOnHTTPSToHTTPRedirect, shouldPreconnectOnly, dataTaskIsForMainFrameNavigation));
}
~NetworkDataTaskCocoa();
@@ -74,7 +74,7 @@
uint64_t pageID() const { return m_pageID; };
private:
- NetworkDataTaskCocoa(NetworkSession&, NetworkDataTaskClient&, const WebCore::ResourceRequest&, uint64_t frameID, uint64_t pageID, WebCore::StoredCredentialsPolicy, WebCore::ContentSniffingPolicy, WebCore::ContentEncodingSniffingPolicy, bool shouldClearReferrerOnHTTPSToHTTPRedirect, PreconnectOnly);
+ NetworkDataTaskCocoa(NetworkSession&, NetworkDataTaskClient&, const WebCore::ResourceRequest&, uint64_t frameID, uint64_t pageID, WebCore::StoredCredentialsPolicy, WebCore::ContentSniffingPolicy, WebCore::ContentEncodingSniffingPolicy, bool shouldClearReferrerOnHTTPSToHTTPRedirect, PreconnectOnly, bool dataTaskIsForMainFrameNavigation);
bool tryPasswordBasedAuthentication(const WebCore::AuthenticationChallenge&, ChallengeCompletionHandler&);
void applySniffingPoliciesAndBindRequestToInferfaceIfNeeded(NSURLRequest*&, bool shouldContentSniff, bool shouldContentEncodingSniff);
Modified: branches/safari-605-branch/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm (231199 => 231200)
--- branches/safari-605-branch/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm 2018-05-01 17:09:06 UTC (rev 231199)
+++ branches/safari-605-branch/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm 2018-05-01 17:23:03 UTC (rev 231200)
@@ -143,8 +143,8 @@
}
#endif
-NetworkDataTaskCocoa::NetworkDataTaskCocoa(NetworkSession& session, NetworkDataTaskClient& client, const WebCore::ResourceRequest& requestWithCredentials, uint64_t frameID, uint64_t pageID, WebCore::StoredCredentialsPolicy storedCredentialsPolicy, WebCore::ContentSniffingPolicy shouldContentSniff, WebCore::ContentEncodingSniffingPolicy shouldContentEncodingSniff, bool shouldClearReferrerOnHTTPSToHTTPRedirect, PreconnectOnly shouldPreconnectOnly)
- : NetworkDataTask(session, client, requestWithCredentials, storedCredentialsPolicy, shouldClearReferrerOnHTTPSToHTTPRedirect)
+NetworkDataTaskCocoa::NetworkDataTaskCocoa(NetworkSession& session, NetworkDataTaskClient& client, const WebCore::ResourceRequest& requestWithCredentials, uint64_t frameID, uint64_t pageID, WebCore::StoredCredentialsPolicy storedCredentialsPolicy, WebCore::ContentSniffingPolicy shouldContentSniff, WebCore::ContentEncodingSniffingPolicy shouldContentEncodingSniff, bool shouldClearReferrerOnHTTPSToHTTPRedirect, PreconnectOnly shouldPreconnectOnly, bool dataTaskIsForMainFrameNavigation)
+ : NetworkDataTask(session, client, requestWithCredentials, storedCredentialsPolicy, shouldClearReferrerOnHTTPSToHTTPRedirect, dataTaskIsForMainFrameNavigation)
, m_frameID(frameID)
, m_pageID(pageID)
{
@@ -304,7 +304,10 @@
}
#endif
}
-
+
+ if (isTopLevelNavigation())
+ request.setFirstPartyForCookies(request.url());
+
#if HAVE(CFNETWORK_STORAGE_PARTITIONING)
auto shouldBlockCookies = m_session->networkStorageSession().shouldBlockCookies(request);
LOG(NetworkSession, "%llu %s cookies for redirect URL %s", [m_task taskIdentifier], (shouldBlockCookies ? "Blocking" : "Not blocking"), request.url().string().utf8().data());
Modified: branches/safari-605-branch/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp (231199 => 231200)
--- branches/safari-605-branch/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp 2018-05-01 17:09:06 UTC (rev 231199)
+++ branches/safari-605-branch/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp 2018-05-01 17:23:03 UTC (rev 231200)
@@ -49,8 +49,8 @@
static const size_t gDefaultReadBufferSize = 8192;
-NetworkDataTaskSoup::NetworkDataTaskSoup(NetworkSession& session, NetworkDataTaskClient& client, const ResourceRequest& requestWithCredentials, StoredCredentialsPolicy storedCredentialsPolicy, ContentSniffingPolicy shouldContentSniff, WebCore::ContentEncodingSniffingPolicy, bool shouldClearReferrerOnHTTPSToHTTPRedirect)
- : NetworkDataTask(session, client, requestWithCredentials, storedCredentialsPolicy, shouldClearReferrerOnHTTPSToHTTPRedirect)
+NetworkDataTaskSoup::NetworkDataTaskSoup(NetworkSession& session, NetworkDataTaskClient& client, const ResourceRequest& requestWithCredentials, StoredCredentialsPolicy storedCredentialsPolicy, ContentSniffingPolicy shouldContentSniff, WebCore::ContentEncodingSniffingPolicy, bool shouldClearReferrerOnHTTPSToHTTPRedirect, bool dataTaskIsForMainFrameNavigation)
+ : NetworkDataTask(session, client, requestWithCredentials, storedCredentialsPolicy, shouldClearReferrerOnHTTPSToHTTPRedirect, dataTaskIsForMainFrameNavigation)
, m_shouldContentSniff(shouldContentSniff)
, m_timeoutSource(RunLoop::main(), this, &NetworkDataTaskSoup::timeoutFired)
{
Modified: branches/safari-605-branch/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.h (231199 => 231200)
--- branches/safari-605-branch/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.h 2018-05-01 17:09:06 UTC (rev 231199)
+++ branches/safari-605-branch/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.h 2018-05-01 17:23:03 UTC (rev 231200)
@@ -36,15 +36,15 @@
class NetworkDataTaskSoup final : public NetworkDataTask {
public:
- static Ref<NetworkDataTask> create(NetworkSession& session, NetworkDataTaskClient& client, const WebCore::ResourceRequest& request, WebCore::StoredCredentialsPolicy storedCredentialsPolicy, WebCore::ContentSniffingPolicy shouldContentSniff, WebCore::ContentEncodingSniffingPolicy shouldContentEncodingSniff, bool shouldClearReferrerOnHTTPSToHTTPRedirect)
+ static Ref<NetworkDataTask> create(NetworkSession& session, NetworkDataTaskClient& client, const WebCore::ResourceRequest& request, WebCore::StoredCredentialsPolicy storedCredentialsPolicy, WebCore::ContentSniffingPolicy shouldContentSniff, WebCore::ContentEncodingSniffingPolicy shouldContentEncodingSniff, bool shouldClearReferrerOnHTTPSToHTTPRedirect, bool dataTaskIsForMainFrameNavigation)
{
- return adoptRef(*new NetworkDataTaskSoup(session, client, request, storedCredentialsPolicy, shouldContentSniff, shouldContentEncodingSniff, shouldClearReferrerOnHTTPSToHTTPRedirect));
+ return adoptRef(*new NetworkDataTaskSoup(session, client, request, storedCredentialsPolicy, shouldContentSniff, shouldContentEncodingSniff, shouldClearReferrerOnHTTPSToHTTPRedirect, dataTaskIsForMainFrameNavigation));
}
~NetworkDataTaskSoup();
private:
- NetworkDataTaskSoup(NetworkSession&, NetworkDataTaskClient&, const WebCore::ResourceRequest&, WebCore::StoredCredentialsPolicy, WebCore::ContentSniffingPolicy, WebCore::ContentEncodingSniffingPolicy, bool shouldClearReferrerOnHTTPSToHTTPRedirect);
+ NetworkDataTaskSoup(NetworkSession&, NetworkDataTaskClient&, const WebCore::ResourceRequest&, WebCore::StoredCredentialsPolicy, WebCore::ContentSniffingPolicy, WebCore::ContentEncodingSniffingPolicy, bool shouldClearReferrerOnHTTPSToHTTPRedirect, bool dataTaskIsForMainFrameNavigation);
void suspend() override;
void cancel() override;
Modified: branches/safari-605-branch/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp (231199 => 231200)
--- branches/safari-605-branch/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp 2018-05-01 17:09:06 UTC (rev 231199)
+++ branches/safari-605-branch/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp 2018-05-01 17:23:03 UTC (rev 231200)
@@ -277,6 +277,8 @@
loadParameters.maximumBufferingTime = maximumBufferingTime;
loadParameters.derivedCachedDataTypesToRetrieve = resourceLoader.options().derivedCachedDataTypesToRetrieve;
+ loadParameters.isMainFrameNavigation = resourceLoader.frame() && resourceLoader.frame()->isMainFrame() && resourceLoader.options().mode == FetchOptions::Mode::Navigate;
+
ASSERT((loadParameters.webPageID && loadParameters.webFrameID) || loadParameters.clientCredentialPolicy == ClientCredentialPolicy::CannotAskClientForCredentials);
RELEASE_LOG_IF_ALLOWED(resourceLoader, "scheduleLoad: Resource is being scheduled with the NetworkProcess (frame = %p, priority = %d, pageID = %" PRIu64 ", frameID = %" PRIu64 ", resourceID = %" PRIu64 ")", resourceLoader.frame(), static_cast<int>(resourceLoader.request().priority()), loadParameters.webPageID, loadParameters.webFrameID, loadParameters.identifier);