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

Reply via email to