[webkit-changes] [WebKit/WebKit] eb56cc: window.open should be able to handle redirects wit...

Alex Christensen noreply at github.com
Thu Nov 16 15:13:20 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: eb56cc4bf825d449e4c0673a2a4fecaa8dbd6847
      https://github.com/WebKit/WebKit/commit/eb56cc4bf825d449e4c0673a2a4fecaa8dbd6847
  Author: Alex Christensen <achristensen at apple.com>
  Date:   2023-11-16 (Thu, 16 Nov 2023)

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

  Log Message:
  -----------
  window.open should be able to handle redirects with site isolation enabled
https://bugs.webkit.org/show_bug.cgi?id=264970
rdar://118522568

Reviewed by Pascoe.

3 things were needed to make this work correctly.

1. In WebPageProxy::decidePolicyForNavigationAction we need to get the correct
   frameProcessBeforeNavigation whether we use a ProvisionalFrameProxy (for non-main frame
   site-isolated navigation) or a ProvisionalPageProxy (for main frame site-isolated
   navigation like window.open).
2. In ProvisionalPageProxy::didCreateMainFrame we need to call didReceiveServerRedirectForProvisionalLoad
   instead of didStartProvisionalLoad because after multiple HTTP redirects we make a ProvisionalPageProxy
   for each redirect.  Future work is already scheduled to fix this, but until then we can make the
   FrameLoadState have the correct state by adding some site-isolation specific logic here.
3. In WebPageProxy::addOpenedRemotePageProxy we need to remove an assertion until that same work is
   complete because we currently make a RemotePageProxy to communicate with each web content process
   along an HTTP redirect chain.

* Source/WebKit/UIProcess/ProvisionalPageProxy.cpp:
(WebKit::ProvisionalPageProxy::didCreateMainFrame):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::addOpenedRemotePageProxy):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/SiteIsolation.mm:
(TestWebKitAPI::openerAndOpenedViews):
(TestWebKitAPI::TEST):

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




More information about the webkit-changes mailing list