diff --git a/browser_patches/webkit/BUILD_NUMBER b/browser_patches/webkit/BUILD_NUMBER index 6db69eea01..2eaaceeccd 100644 --- a/browser_patches/webkit/BUILD_NUMBER +++ b/browser_patches/webkit/BUILD_NUMBER @@ -1,2 +1,2 @@ -1552 -Changed: dpino@igalia.com Mon Oct 4 18:29:29 HKT 2021 +1553 +Changed: yurys@chromium.org Mon 04 Oct 2021 01:38:38 PM PDT diff --git a/browser_patches/webkit/patches/bootstrap.diff b/browser_patches/webkit/patches/bootstrap.diff index fddb65c70d..e49dfac9b0 100644 --- a/browser_patches/webkit/patches/bootstrap.diff +++ b/browser_patches/webkit/patches/bootstrap.diff @@ -3960,7 +3960,7 @@ index 3386cb879f1178c1b9635775c9a0e864f5b94c52..d2350182f5f061855e8ca172779ad60e class Page; class SecurityOrigin; diff --git a/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp b/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp -index 37468432577f64e3d18bc3667ca298f43a3bf503..81e54d04c6142b29241ec5379470ef475a6983de 100644 +index 37468432577f64e3d18bc3667ca298f43a3bf503..1b1eb9737c87246c1e6b88875d031cf4aa26efff 100644 --- a/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp +++ b/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp @@ -45,6 +45,7 @@ @@ -4146,17 +4146,19 @@ index 37468432577f64e3d18bc3667ca298f43a3bf503..81e54d04c6142b29241ec5379470ef47 ResourceRequest request = loader.request(); if (!!url) request.setURL(URL({ }, url)); -@@ -1289,14 +1370,24 @@ Protocol::ErrorStringOr InspectorNetworkAgent::interceptRequestWithRespons +@@ -1289,14 +1370,25 @@ Protocol::ErrorStringOr InspectorNetworkAgent::interceptRequestWithRespons response.setHTTPStatusCode(status); response.setHTTPStatusText(statusText); HTTPHeaderMap explicitHeaders; + String setCookieValue; for (auto& header : headers.get()) { auto headerValue = header.value->asString(); - if (!!headerValue) - explicitHeaders.add(header.key, headerValue); +- if (!!headerValue) + if (equalIgnoringASCIICase(header.key, "Set-Cookie")) + setCookieValue = headerValue; ++ else if (!!headerValue) + explicitHeaders.add(header.key, headerValue); ++ } response.setHTTPHeaderFields(WTFMove(explicitHeaders)); response.setHTTPHeaderField(HTTPHeaderName::ContentType, response.mimeType()); @@ -4171,7 +4173,7 @@ index 37468432577f64e3d18bc3667ca298f43a3bf503..81e54d04c6142b29241ec5379470ef47 if (buffer->size()) loader->didReceiveBuffer(WTFMove(buffer), buffer->size(), DataPayloadWholeResource); loader->didFinishLoading(NetworkLoadMetrics()); -@@ -1337,6 +1428,12 @@ Protocol::ErrorStringOr InspectorNetworkAgent::interceptRequestWithError(c +@@ -1337,6 +1429,12 @@ Protocol::ErrorStringOr InspectorNetworkAgent::interceptRequestWithError(c return { }; } @@ -4184,7 +4186,7 @@ index 37468432577f64e3d18bc3667ca298f43a3bf503..81e54d04c6142b29241ec5379470ef47 bool InspectorNetworkAgent::shouldTreatAsText(const String& mimeType) { return startsWithLettersIgnoringASCIICase(mimeType, "text/") -@@ -1378,6 +1475,12 @@ std::optional InspectorNetworkAgent::textContentForCachedResource(Cached +@@ -1378,6 +1476,12 @@ std::optional InspectorNetworkAgent::textContentForCachedResource(Cached return std::nullopt; } @@ -8330,6 +8332,18 @@ index 39cb560e54bf9efd2dad6e1fb60dd0f609daf6bf..91c132460d4b466f61a8c579f70329fd else m_commonHeaders.append(CommonHeader { name, value }); } +diff --git a/Source/WebCore/platform/network/NetworkStorageSession.h b/Source/WebCore/platform/network/NetworkStorageSession.h +index 3cbe3f9473d4ef35b0577847bcb9f0c70355fc27..2505e327ddb9cd68af44df388aed789ae3f0aa15 100644 +--- a/Source/WebCore/platform/network/NetworkStorageSession.h ++++ b/Source/WebCore/platform/network/NetworkStorageSession.h +@@ -138,6 +138,7 @@ public: + void setCookieObserverHandler(Function&&); + void getCredentialFromPersistentStorage(const ProtectionSpace&, GCancellable*, Function&& completionHandler); + void saveCredentialToPersistentStorage(const ProtectionSpace&, const Credential&); ++ void setCookiesFromResponse(const URL& firstParty, const URL&, const String& setCookieValue); + #elif USE(CURL) + WEBCORE_EXPORT NetworkStorageSession(PAL::SessionID); + ~NetworkStorageSession(); diff --git a/Source/WebCore/platform/network/ResourceResponseBase.h b/Source/WebCore/platform/network/ResourceResponseBase.h index 262e53180d6dd7c4d133ddc1daf5652bd6f31c76..d09aed9c9c58afe3c2040e1d5d683374365e65f8 100644 --- a/Source/WebCore/platform/network/ResourceResponseBase.h @@ -8561,6 +8575,33 @@ index 4b9491c11543f2b60f12d36e9e6a0cbaae34a72e..e907fc00a2a426384ce1e471847911c9 } SocketStreamHandleImpl::~SocketStreamHandleImpl() +diff --git a/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp b/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp +index 5b32534e2bcaf1701331e9541013b8a5c38c4d36..efee59ab00e99bc0e5d4374cc0a474461c2c1386 100644 +--- a/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp ++++ b/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp +@@ -408,6 +408,22 @@ void NetworkStorageSession::setCookie(const Cookie& cookie) + soup_cookie_jar_add_cookie(cookieStorage(), cookie.toSoupCookie()); + } + ++void NetworkStorageSession::setCookiesFromResponse(const URL&, const URL& url, const String& setCookieValue) ++{ ++ auto origin = urlToSoupURI(url); ++ if (!origin) ++ return; ++ ++ for (auto& cookieString : setCookieValue.split('\n')) { ++ GUniquePtr cookie(soup_cookie_parse(cookieString.utf8().data(), origin.get())); ++ ++ if (!cookie) ++ continue; ++ ++ soup_cookie_jar_add_cookie(cookieStorage(), cookie.release()); ++ } ++} ++ + void NetworkStorageSession::deleteCookie(const Cookie& cookie) + { + GUniquePtr targetCookie(cookie.toSoupCookie()); diff --git a/Source/WebCore/platform/network/soup/SocketStreamHandleImpl.h b/Source/WebCore/platform/network/soup/SocketStreamHandleImpl.h index 88df3748e980a22e71bd835864caf24b6b7ea50b..f83c7f2535fd1abae7b1cccca946254b9407f86f 100644 --- a/Source/WebCore/platform/network/soup/SocketStreamHandleImpl.h @@ -9177,7 +9218,7 @@ index 694008e0451edc5770142a0a6d9eed52b04ded80..ec93869f9486bdf7bd3bb56478c62469 WEBCORE_EXPORT WTF::TextStream& operator<<(WTF::TextStream&, ScrollAlignment::Behavior); diff --git a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp -index aaa8731f9ecaa6a81f521dc0e7f84923faa81f06..9f0502c4058ce24e86b2c9e25775e78f9da078c6 100644 +index aaa8731f9ecaa6a81f521dc0e7f84923faa81f06..baad5424307be2e75ab3f1ce44741d64d543a1bd 100644 --- a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp +++ b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp @@ -76,6 +76,11 @@ @@ -9192,17 +9233,21 @@ index aaa8731f9ecaa6a81f521dc0e7f84923faa81f06..9f0502c4058ce24e86b2c9e25775e78f #if ENABLE(APPLE_PAY_REMOTE_UI) #include "WebPaymentCoordinatorProxyMessages.h" #endif -@@ -948,6 +953,15 @@ void NetworkConnectionToWebProcess::clearPageSpecificData(PageIdentifier pageID) +@@ -948,6 +953,19 @@ void NetworkConnectionToWebProcess::clearPageSpecificData(PageIdentifier pageID) #endif } +void NetworkConnectionToWebProcess::setCookieFromResponse(NetworkResourceLoadParameters&& parameters, const URL& mainDocumentURL, const String& setCookieValue) +{ -+ if (auto* session = networkSession()) { -+#if PLATFORM(COCOA) ++#if USE(SOUP) ++ auto* networkStorageSession = storageSession(); ++ if (!networkStorageSession) ++ return; ++ networkStorageSession->setCookiesFromResponse(mainDocumentURL, parameters.request.url(), setCookieValue); ++#elif PLATFORM(COCOA) ++ if (auto* session = networkSession()) + NetworkDataTaskCocoa::setCookieFromResponse(*static_cast(session), WTFMove(parameters), mainDocumentURL, setCookieValue); +#endif -+ } +} + #if ENABLE(INTELLIGENT_TRACKING_PREVENTION)