[webkit-changes] [WebKit/WebKit] 3cb230: [Site Isolation] Take process assertions for ifram...
Charlie Wolfe
noreply at github.com
Tue Sep 10 12:09:29 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 3cb2304105dcdab874f0212055e3aac6da982499
https://github.com/WebKit/WebKit/commit/3cb2304105dcdab874f0212055e3aac6da982499
Author: Charlie Wolfe <charliew at apple.com>
Date: 2024-09-10 (Tue, 10 Sep 2024)
Changed paths:
M Source/WebKit/Sources.txt
M Source/WebKit/UIProcess/RemotePageProxy.cpp
M Source/WebKit/UIProcess/RemotePageProxy.h
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.h
A Source/WebKit/UIProcess/WebProcessActivityState.cpp
A Source/WebKit/UIProcess/WebProcessActivityState.h
M Source/WebKit/UIProcess/XR/PlatformXRSystem.cpp
M Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
Log Message:
-----------
[Site Isolation] Take process assertions for iframe processes
https://bugs.webkit.org/show_bug.cgi?id=279410
rdar://135639905
Reviewed by Alex Christensen.
This relands the process assertion fix (282064 at main) that was reverted. The original change was wrong
because I moved where we were holding process activity state to `WebProcessProxy`. Since multiple pages
can share a web process, this caused an issue where one page could release an assertion on a process
that was still in use by another page. This patch keeps the process activity state on `WebPageProxy` but
also adds it to RemotePageProxy to take assertions for web processes that are not hosting the main frame.
In the future, we may only want to take assertions for certain processes on a page, but for now, this
should match the behavior with site isolation disabled.
* Source/WebKit/Sources.txt:
* Source/WebKit/UIProcess/RemotePageProxy.cpp:
(WebKit::RemotePageProxy::RemotePageProxy):
(WebKit::RemotePageProxy::processActivityState):
* Source/WebKit/UIProcess/RemotePageProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::takeVisibleActivity):
(WebKit::WebPageProxy::takeAudibleActivity):
(WebKit::WebPageProxy::takeCapturingActivity):
(WebKit::WebPageProxy::takeMutedCaptureAssertion):
(WebKit::WebPageProxy::resetActivityState):
(WebKit::WebPageProxy::dropVisibleActivity):
(WebKit::WebPageProxy::dropAudibleActivity):
(WebKit::WebPageProxy::dropCapturingActivity):
(WebKit::WebPageProxy::dropMutedCaptureAssertion):
(WebKit::WebPageProxy::hasValidVisibleActivity const):
(WebKit::WebPageProxy::hasValidAudibleActivity const):
(WebKit::WebPageProxy::hasValidCapturingActivity const):
(WebKit::WebPageProxy::hasValidMutedCaptureAssertion const):
(WebKit::WebPageProxy::takeOpeningAppLinkActivity):
(WebKit::WebPageProxy::dropOpeningAppLinkActivity):
(WebKit::WebPageProxy::hasValidOpeningAppLinkActivity const):
(WebKit::WebPageProxy::close):
(WebKit::WebPageProxy::updateThrottleState):
(WebKit::WebPageProxy::clearAudibleActivity):
(WebKit::WebPageProxy::waitForDidUpdateActivityState):
(WebKit::WebPageProxy::resetStateAfterProcessExited):
(WebKit::WebPageProxy::processActivityState):
(WebKit::WebPageProxy::ProcessActivityState::ProcessActivityState): Deleted.
(WebKit::WebPageProxy::ProcessActivityState::takeVisibleActivity): Deleted.
(WebKit::WebPageProxy::ProcessActivityState::takeAudibleActivity): Deleted.
(WebKit::WebPageProxy::ProcessActivityState::takeCapturingActivity): Deleted.
(WebKit::WebPageProxy::ProcessActivityState::takeMutedCaptureAssertion): Deleted.
(WebKit::WebPageProxy::ProcessActivityState::reset): Deleted.
(WebKit::WebPageProxy::ProcessActivityState::dropVisibleActivity): Deleted.
(WebKit::WebPageProxy::ProcessActivityState::dropAudibleActivity): Deleted.
(WebKit::WebPageProxy::ProcessActivityState::dropCapturingActivity): Deleted.
(WebKit::WebPageProxy::ProcessActivityState::dropMutedCaptureAssertion): Deleted.
(WebKit::WebPageProxy::ProcessActivityState::hasValidVisibleActivity const): Deleted.
(WebKit::WebPageProxy::ProcessActivityState::hasValidAudibleActivity const): Deleted.
(WebKit::WebPageProxy::ProcessActivityState::hasValidCapturingActivity const): Deleted.
(WebKit::WebPageProxy::ProcessActivityState::hasValidMutedCaptureAssertion const): Deleted.
(WebKit::WebPageProxy::ProcessActivityState::takeOpeningAppLinkActivity): Deleted.
(WebKit::WebPageProxy::ProcessActivityState::dropOpeningAppLinkActivity): Deleted.
(WebKit::WebPageProxy::ProcessActivityState::hasValidOpeningAppLinkActivity const): Deleted.
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebProcessActivityState.cpp: Added.
(WebKit::WebProcessActivityState::WebProcessActivityState):
(WebKit::WebProcessActivityState::takeVisibleActivity):
(WebKit::WebProcessActivityState::takeAudibleActivity):
(WebKit::WebProcessActivityState::takeCapturingActivity):
(WebKit::WebProcessActivityState::takeMutedCaptureAssertion):
(WebKit::WebProcessActivityState::reset):
(WebKit::WebProcessActivityState::dropVisibleActivity):
(WebKit::WebProcessActivityState::dropAudibleActivity):
(WebKit::WebProcessActivityState::dropCapturingActivity):
(WebKit::WebProcessActivityState::dropMutedCaptureAssertion):
(WebKit::WebProcessActivityState::hasValidVisibleActivity const):
(WebKit::WebProcessActivityState::hasValidAudibleActivity const):
(WebKit::WebProcessActivityState::hasValidCapturingActivity const):
(WebKit::WebProcessActivityState::hasValidMutedCaptureAssertion const):
(WebKit::WebProcessActivityState::takeOpeningAppLinkActivity):
(WebKit::WebProcessActivityState::dropOpeningAppLinkActivity):
(WebKit::WebProcessActivityState::hasValidOpeningAppLinkActivity const):
(WebKit::WebProcessActivityState::process const):
(WebKit::WebProcessActivityState::protectedProcess const):
* Source/WebKit/UIProcess/WebProcessActivityState.h: Added.
* Source/WebKit/UIProcess/XR/PlatformXRSystem.cpp:
* Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::willOpenAppLink):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
Canonical link: https://commits.webkit.org/283432@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