Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 9c2ad9a13f9314412d153d7ab7b1444ac74290c7
      
https://github.com/WebKit/WebKit/commit/9c2ad9a13f9314412d153d7ab7b1444ac74290c7
  Author: Alex Christensen <[email protected]>
  Date:   2023-01-13 (Fri, 13 Jan 2023)

  Changed paths:
    M Source/WebKit/NetworkProcess/NetworkProcess.cpp
    M Source/WebKit/NetworkProcess/NetworkProcess.h
    M Source/WebKit/NetworkProcess/NetworkProcess.messages.in
    M Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp
    M Source/WebKit/NetworkProcess/NetworkSession.cpp
    M Source/WebKit/NetworkProcess/SharedWorker/WebSharedWorkerServer.cpp
    A Source/WebKit/Shared/LoadedWebArchive.h
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebProcessPool.cpp
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/CreateWebArchive.mm

  Log Message:
  -----------
  WebArchive content should not terminate web process when accessing cookies
https://bugs.webkit.org/show_bug.cgi?id=250537
rdar://103003585

Reviewed by Chris Dumez.

There are 3 different ways I'm aware of to load WebArchives.  All of them 
needed fixing.
When we load a web archive, it is only parsed in the web process, which is the 
only place
we can find out what domain it was originally fetched from, which is contained 
inside the
web archive data, which only has a way to parse it in its entirety.  Rather 
than parse
the whole thing in the UI process or buffer it in the network process memory 
then parse it,
I just disable cookie domain checks when a web archive has been loaded, which 
is rare.

* Source/WebCore/loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::maybeCreateArchive):
* Source/WebCore/loader/FrameLoaderClient.h:
* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::allowCookieAccessForWebArchive):
* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:
* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* Source/WebKit/NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::addAllowedFirstPartyForCookies):
(WebKit::NetworkProcess::webProcessWillLoadWebArchive):
(WebKit::NetworkProcess::webProcessDidLoadWebArchive):
(WebKit::NetworkProcess::allowsFirstPartyForCookies):
* Source/WebKit/NetworkProcess/NetworkProcess.h:
* Source/WebKit/NetworkProcess/NetworkProcess.messages.in:
* Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::didReceiveMainResourceResponse):
* Source/WebKit/NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::ensureSWServer):
* Source/WebKit/NetworkProcess/SharedWorker/WebSharedWorkerServer.cpp:
(WebKit::WebSharedWorkerServer::createContextConnection):
* Source/WebKit/Shared/LoadedWebArchive.h: Added.
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::loadAlternateHTML):
(WebKit::WebPageProxy::loadWebArchiveData):
(WebKit::WebPageProxy::triggerBrowsingContextGroupSwitchForNavigation):
* Source/WebKit/UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::processForNavigation):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::allowCookieAccessForWebArchive):
* Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/CreateWebArchive.mm:

Canonical link: https://commits.webkit.org/258901@main


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to