[webkit-changes] [WebKit/WebKit] 1dff3b: [Site Isolation] http/tests/security/cors-post-red...

Charlie Wolfe noreply at github.com
Mon Mar 25 11:32:46 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 1dff3b6af5623c09f268b39c8b60b7c3cd90ce9c
      https://github.com/WebKit/WebKit/commit/1dff3b6af5623c09f268b39c8b60b7c3cd90ce9c
  Author: Charlie Wolfe <charliew at apple.com>
  Date:   2024-03-25 (Mon, 25 Mar 2024)

  Changed paths:
    M LayoutTests/platform/mac-site-isolation/TestExpectations
    M Source/WebKit/UIProcess/ProvisionalFrameProxy.cpp
    M Source/WebKit/UIProcess/ProvisionalFrameProxy.h
    M Source/WebKit/UIProcess/RemotePageProxy.cpp
    M Source/WebKit/UIProcess/WebFrameProxy.cpp
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/SiteIsolation.mm
    M Tools/TestWebKitAPI/cocoa/TestNavigationDelegate.h
    M Tools/TestWebKitAPI/cocoa/TestNavigationDelegate.mm

  Log Message:
  -----------
  [Site Isolation] http/tests/security/cors-post-redirect-30* is a consistent crash
https://bugs.webkit.org/show_bug.cgi?id=271628
rdar://125336415

Reviewed by Alex Christensen.

When a site-isolated iframe navigates and receives a cross-site redirect, we skip the
`DidStartProvisionalLoadForFrame` message in the new process because we have already received it from
the old process. However, if the old process is hosting another frame on the page, the process will stay
alive and send a `DidFailProvisionalLoadForFrame` message. Then, when the load is committed in the new
process we fail an assertion because the UI process thinks the load already failed.

If we receive a `DidFailProvisionalLoadForFrame` message and a provisional frame exists that was created
by a cross-site redirect, we know that the load did not fail; it is just happening in a new process.

I also added a test to verify that when a provisional load actually fails on a cross-site redirect, the
delegate is still called.

* LayoutTests/platform/mac-site-isolation/TestExpectations:
* Source/WebKit/UIProcess/ProvisionalFrameProxy.cpp:
(WebKit::ProvisionalFrameProxy::ProvisionalFrameProxy):
* Source/WebKit/UIProcess/ProvisionalFrameProxy.h:
(WebKit::ProvisionalFrameProxy::isCrossSiteRedirect const):
* Source/WebKit/UIProcess/RemotePageProxy.cpp:
(WebKit::RemotePageProxy::didFailProvisionalLoadForFrame):
* Source/WebKit/UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::prepareForProvisionalNavigationInProcess):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/SiteIsolation.mm:
(TestWebKitAPI::TEST):
* Tools/TestWebKitAPI/cocoa/TestNavigationDelegate.h:
* Tools/TestWebKitAPI/cocoa/TestNavigationDelegate.mm:
(-[TestNavigationDelegate _webView:didFailProvisionalLoadWithRequest:inFrame:withError:]):

Canonical link: https://commits.webkit.org/276637@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