Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 3cb2304105dcdab874f0212055e3aac6da982499 https://github.com/WebKit/WebKit/commit/3cb2304105dcdab874f0212055e3aac6da982499 Author: Charlie Wolfe <charl...@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@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 _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes