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

Reply via email to