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

Reply via email to