[webkit-changes] [WebKit/WebKit] 1482ed: Enable WebProcessCache with site isolation
Alex Christensen
noreply at github.com
Wed Dec 4 09:35:49 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 1482ed013984a4c7f18e03a32ec5040334f827c5
https://github.com/WebKit/WebKit/commit/1482ed013984a4c7f18e03a32ec5040334f827c5
Author: Alex Christensen <achristensen at apple.com>
Date: 2024-12-04 (Wed, 04 Dec 2024)
Changed paths:
M Source/WebKit/UIProcess/BrowsingContextGroup.cpp
M Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm
M Source/WebKit/UIProcess/FrameProcess.cpp
M Source/WebKit/UIProcess/RemotePageProxy.cpp
M Source/WebKit/UIProcess/RemotePageProxy.h
M Source/WebKit/UIProcess/SuspendedPageProxy.cpp
M Source/WebKit/UIProcess/WebProcessCache.cpp
M Source/WebKit/UIProcess/WebProcessPool.cpp
M Source/WebKit/UIProcess/WebProcessProxy.cpp
M Source/WebKit/UIProcess/WebProcessProxy.h
M Source/WebKit/WebProcess/WebPage/WebPage.cpp
Log Message:
-----------
Enable WebProcessCache with site isolation
https://bugs.webkit.org/show_bug.cgi?id=283984
rdar://129038322
Reviewed by Charlie Wolfe.
This removes code to disable WebProcessCache when site isolation is enabled
and adds code to support it. The biggest omission was that
BrowsingContextGroup::addFrameProcess calls injectPageIntoNewProcess but
BrowsingContextGroup::removeFrameProcess had no corresponding call that removes
the Page from the process, so I introduced RemotePageProxy::removePageFromProcess
for that purpose. It wasn't an issue before because once we were done using
a process we would never use that process again, so it didn't matter what pages
or frames were left in that process. Now we need to clear out that state
so we can reuse the process without the state.
* Source/WebKit/UIProcess/BrowsingContextGroup.cpp:
(WebKit::BrowsingContextGroup::removeFrameProcess):
* Source/WebKit/UIProcess/FrameProcess.cpp:
(WebKit::FrameProcess::FrameProcess):
* Source/WebKit/UIProcess/RemotePageProxy.cpp:
(WebKit::RemotePageProxy::injectPageIntoNewProcess):
(WebKit::RemotePageProxy::removePageFromProcess):
* Source/WebKit/UIProcess/RemotePageProxy.h:
* Source/WebKit/UIProcess/SuspendedPageProxy.cpp:
(WebKit::SuspendedPageProxy::findReusableSuspendedPageProcess):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
* Source/WebKit/UIProcess/WebProcessCache.cpp:
(WebKit::WebProcessCache::canCacheProcess const):
* Source/WebKit/UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::establishRemoteWorkerContextConnectionToNetworkProcess):
(WebKit::WebProcessPool::processForNavigationInternal):
* Source/WebKit/UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::canBeAddedToWebProcessCache const):
(WebKit::WebProcessProxy::didStartProvisionalLoadForMainFrame):
(WebKit::WebProcessProxy::didStartUsingProcessForSiteIsolation):
* Source/WebKit/UIProcess/WebProcessProxy.h:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::close):
Canonical link: https://commits.webkit.org/287345@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list