Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 1dff3b6af5623c09f268b39c8b60b7c3cd90ce9c
https://github.com/WebKit/WebKit/commit/1dff3b6af5623c09f268b39c8b60b7c3cd90ce9c
Author: Charlie Wolfe <[email protected]>
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
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes