Title: [231200] branches/safari-605-branch
Revision
231200
Author
[email protected]
Date
2018-05-01 10:23:03 -0700 (Tue, 01 May 2018)

Log Message

Apply patch. rdar://problem/39741039

Modified Paths


Added Paths

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);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to