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