Title: [258851] branches/safari-609-branch/Source/WebKit

Diff

Modified: branches/safari-609-branch/Source/WebKit/ChangeLog (258850 => 258851)


--- branches/safari-609-branch/Source/WebKit/ChangeLog	2020-03-23 16:51:24 UTC (rev 258850)
+++ branches/safari-609-branch/Source/WebKit/ChangeLog	2020-03-23 16:52:30 UTC (rev 258851)
@@ -1,20 +1,22 @@
-b'2020-03-23  Russell Epstein  <[email protected]>\n\n        Apply patch. rdar://problem/60555343\n\n    Cherry-pick r258565. rdar://problem/60555343\n    \n        2020-03-17  David Kilzer  <[email protected]>\n    \n    REGRESSION (r258334): WebPasteboardProxy::setPasteboardBufferForType should allow zero-size buffers\n    <https://webkit.org/b/209167>\n    <rdar://problem/60516302>\n    \n    Reviewed by Geoffrey Garen.\n    \n    * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:\n    (WebKit::WebPasteboardProxy::setPasteboardBufferForType):\n    - Remove check for zero-size buffer to match\n      WebPageProxy::dataSelectionForPasteboard().\n\n    2020-03-17  David Kilzer  <[email protected]>\n\n            Cherry-pick r258565. rdar://problem/60555343\n\n        2020-03-17  David Kilzer  <[email protected]>\n\n            REGRESSION (r258334): WebPasteboardProxy::setPasteboardBufferForType should allow zero-size buffers\n          
   <https://webkit.org/b/209167>\n            <rdar://problem/60516302>\n\n            Reviewed by Geoffrey Garen.\n\n            * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:\n            (WebKit::WebPasteboardProxy::setPasteboardBufferForType):\n            - Remove check for zero-size buffer to match\n              WebPageProxy::dataSelectionForPasteboard().\n\n'2020-03-19  Russell Epstein  <[email protected]>
+2020-03-23 Russell Epstein  <[email protected]>
 
-        Apply patch. rdar://problem/60633852
+        Apply patch. rdar://problem/60756683
+    2020-03-23  John Wilander  <[email protected]>
+    Cherry-pick r258599. rdar://problem/60089022
+    2020-03-17  John Wilander  <[email protected]>
+    Add quirk for cookie blocking latch mode ymail.com redirecting to yahoo.com under yahoo.com
+    https://bugs.webkit.org/show_bug.cgi?id=209193
+    <rdar://problem/60089022>
+    
+    Reviewed by Brent Fulgham.
+    
+    No new tests. Site-specific quirk tested manually on the site in question.
+    * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
+    * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
+    (WebKit::NetworkDataTaskCocoa::unblockCookies):
+    (WebKit::NetworkDataTaskCocoa::needsFirstPartyCookieBlockingLatchModeQuirk const):
+    (WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
 
-    2020-03-19  Brent Fulgham  <[email protected]>
-
-         Terminate the WebContent process when receiving invalid IPC from a WebInspector session
-         https://bugs.webkit.org/show_bug.cgi?id=209157
-         <rdar://problem/58961055>
-
-         * UIProcess/WebPageProxy.cpp:
-         (WebKit::WebPageProxy::backForwardGoToItemShared): Add a message check that we are not receiving
-         the request from a WebInspector page.
-         (WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle): Switch to a release assert.
-
-2020-03-17  Kocsen Chung  <[email protected]>
-
         Apply patch. rdar://problem/60363244
 
     Crash in com.apple.WebKit.WebContent at WebKit::WebSWClientConnection::scheduleJobInServer <rdar://problem/60363244>

Modified: branches/safari-609-branch/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h (258850 => 258851)


--- branches/safari-609-branch/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h	2020-03-23 16:51:24 UTC (rev 258850)
+++ branches/safari-609-branch/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h	2020-03-23 16:52:30 UTC (rev 258851)
@@ -86,6 +86,8 @@
 #if ENABLE(RESOURCE_LOAD_STATISTICS)
     static NSHTTPCookieStorage *statelessCookieStorage();
     void blockCookies();
+    void unblockCookies();
+    bool needsFirstPartyCookieBlockingLatchModeQuirk(const URL& firstPartyURL, const URL& requestURL, const URL& redirectingURL) const;
 #endif
     bool isThirdPartyRequest(const WebCore::ResourceRequest&) const;
     bool isAlwaysOnLoggingAllowed() const;

Modified: branches/safari-609-branch/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm (258850 => 258851)


--- branches/safari-609-branch/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm	2020-03-23 16:51:24 UTC (rev 258850)
+++ branches/safari-609-branch/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm	2020-03-23 16:52:30 UTC (rev 258851)
@@ -200,6 +200,42 @@
     [m_task _setExplicitCookieStorage:statelessCookieStorage()._cookieStorage];
     m_hasBeenSetToUseStatelessCookieStorage = true;
 }
+
+void NetworkDataTaskCocoa::unblockCookies()
+{
+    ASSERT(hasProcessPrivilege(ProcessPrivilege::CanAccessRawCookies));
+
+    if (!m_hasBeenSetToUseStatelessCookieStorage)
+        return;
+
+    if (auto* storageSession = m_session->networkStorageSession()) {
+        [m_task _setExplicitCookieStorage:storageSession->nsCookieStorage()._cookieStorage];
+        m_hasBeenSetToUseStatelessCookieStorage = false;
+    }
+}
+
+// FIXME: Temporary fix for <rdar://problem/60089022> until content can be updated.
+bool NetworkDataTaskCocoa::needsFirstPartyCookieBlockingLatchModeQuirk(const URL& firstPartyURL, const URL& requestURL, const URL& redirectingURL) const
+{
+    using RegistrableDomain = WebCore::RegistrableDomain;
+    static NeverDestroyed<HashMap<RegistrableDomain, RegistrableDomain>> quirkPairs = [] {
+        HashMap<RegistrableDomain, RegistrableDomain> map;
+        map.add(RegistrableDomain::uncheckedCreateFromRegistrableDomainString("ymail.com"_s), RegistrableDomain::uncheckedCreateFromRegistrableDomainString("yahoo.com"_s));
+        return map;
+    }();
+
+    RegistrableDomain firstPartyDomain { firstPartyURL };
+    RegistrableDomain requestDomain { requestURL };
+    if (firstPartyDomain != requestDomain)
+        return false;
+
+    RegistrableDomain redirectingDomain { redirectingURL };
+    auto quirk = quirkPairs.get().find(redirectingDomain);
+    if (quirk == quirkPairs.get().end())
+        return false;
+
+    return quirk->value == requestDomain;
+}
 #endif
 
 bool NetworkDataTaskCocoa::isThirdPartyRequest(const WebCore::ResourceRequest& request) const
@@ -434,7 +470,8 @@
         if (m_storedCredentialsPolicy == WebCore::StoredCredentialsPolicy::EphemeralStateless
             || (m_session->networkStorageSession() && m_session->networkStorageSession()->shouldBlockCookies(request, m_frameID, m_pageID)))
             blockCookies();
-    }
+    } else if (m_storedCredentialsPolicy != WebCore::StoredCredentialsPolicy::EphemeralStateless && needsFirstPartyCookieBlockingLatchModeQuirk(request.firstPartyForCookies(), request.url(), redirectResponse.url()))
+        unblockCookies();
 #if !RELEASE_LOG_DISABLED
     if (m_session->shouldLogCookieInformation())
         RELEASE_LOG_IF(isAlwaysOnLoggingAllowed(), Network, "%p - NetworkDataTaskCocoa::willPerformHTTPRedirection::logCookieInformation: pageID = %llu, frameID = %llu, taskID = %lu: %s cookies for redirect URL %s", this, m_pageID.toUInt64(), m_frameID.toUInt64(), (unsigned long)[m_task taskIdentifier], (m_hasBeenSetToUseStatelessCookieStorage ? "Blocking" : "Not blocking"), request.url().string().utf8().data());
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to