[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