[webkit-changes] [WebKit/WebKit] ce9d6a: Unable to opt out of lockdown mode on sites that s...

Chris Dumez noreply at github.com
Fri Jan 19 15:19:23 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ce9d6af9dc1ab3e2c33a7908c9913007866d6de0
      https://github.com/WebKit/WebKit/commit/ce9d6af9dc1ab3e2c33a7908c9913007866d6de0
  Author: Chris Dumez <cdumez at apple.com>
  Date:   2024-01-19 (Fri, 19 Jan 2024)

  Changed paths:
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm

  Log Message:
  -----------
  Unable to opt out of lockdown mode on sites that serve COOP + COEP HTTP headers
https://bugs.webkit.org/show_bug.cgi?id=267766
rdar://119503109

Reviewed by Brent Fulgham.

If lockdown mode is enabled system-wide and the user attempts to navigate to
a site where lockdown mode has been disabled by the user, we expect this
request to be satisfied. However, in the event where the site serves the
proper COOP + COEP HTTP headers to trigger a process-swap, we would fail to
disable lockdown mode.

The reason is that WebPageProxy::triggerBrowsingContextGroupSwitchForNavigation(),
which gets called on network response in case of a COOP + COEP process swap,
would not carry over correctly the lockdown mode state from the old WebProcess
to the new one. In particular, if there is a ProvisionalPageProxy (because the
current navigation caused a PSON process-swap), we should be getting the lockdown
mode from this ProvisionalPageProxy's WebProcessProxy, instead of from the
WebPageProxy's WebPageProxy (which is the committed process, not the provisional
one associated with the current navigation).

* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::triggerBrowsingContextGroupSwitchForNavigation):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

Canonical link: https://commits.webkit.org/273243@main




More information about the webkit-changes mailing list