Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 9c771fce0a906f72dba484655193f91a369f78d3
https://github.com/WebKit/WebKit/commit/9c771fce0a906f72dba484655193f91a369f78d3
Author: Brady Eidson <[email protected]>
Date: 2026-08-18 (Tue, 18 Aug 2026)
Changed paths:
M Source/WebKit/Shared/WebPageCreationParameters.h
M Source/WebKit/Shared/WebPageCreationParameters.serialization.in
M Source/WebKit/UIProcess/WebFrameProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebPageProxyInternals.h
M Source/WebKit/WebProcess/WebPage/WebPage.cpp
M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm
Log Message:
-----------
[Site Isolation] Some WKWebView-level APIs don't message all processes
associated with the page
rdar://184640337
https://bugs.webkit.org/show_bug.cgi?id=321529
Reviewed by Sihui Liu.
With site isolation a page is usually backed by more than one web content
process.
But `stopLoading`, the media playback commands, and the suspend and resume
commands
are only sent to the main frame's process.
Cross-site iframes keep loading, keep playing, and kept running timers after
the app
is told the work is done.
Fix this by sending the relevant IPC to every process backing the page, as well
as
including relevant state information when creating new pages in new processes.
Test: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm
* Source/WebKit/Shared/WebPageCreationParameters.h:
* Source/WebKit/Shared/WebPageCreationParameters.serialization.in:
* Source/WebKit/UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::prepareForProvisionalLoadInProcess):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::stopLoading):
(WebKit::WebPageProxy::receivedNavigationActionPolicyDecision):
(WebKit::WebPageProxy::resumeActiveDOMObjectsAndAnimations):
(WebKit::WebPageProxy::suspendActiveDOMObjectsAndAnimations):
(WebKit::WebPageProxy::suspend):
(WebKit::WebPageProxy::resume):
(WebKit::WebPageProxy::requestMediaPlaybackState):
(WebKit::WebPageProxy::pauseAllMediaPlayback):
(WebKit::WebPageProxy::suspendAllMediaPlayback):
(WebKit::WebPageProxy::resumeAllMediaPlayback):
(WebKit::WebPageProxy::creationParameters):
* Source/WebKit/UIProcess/WebPageProxyInternals.h:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::m_allowsImmersiveEnvironments):
(WebKit::WebPage::stopLoading):
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm:
(TestWebKitAPI::(SiteIsolation, StopLoadingStopsCrossSiteIframe)):
(TestWebKitAPI::(SiteIsolation, PauseAllMediaPlaybackPausesCrossSiteIframe)):
(TestWebKitAPI::(SiteIsolation,
SetAllMediaPlaybackSuspendedSuspendsCrossSiteIframe)):
(TestWebKitAPI::(SiteIsolation, ResumeAllMediaPlaybackResumesCrossSiteIframe)):
(TestWebKitAPI::(SiteIsolation,
RequestMediaPlaybackStateReflectsCrossSiteIframe)):
(TestWebKitAPI::(SiteIsolation, SuspendPageSuspendsCrossSiteIframeProcess)):
(TestWebKitAPI::(SiteIsolation, SuspendedPageDoesNotLetANewProcessJoin)):
Canonical link: https://commits.webkit.org/319380@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications