Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 025e1d2fda31b65326961d5c99039356b2eb7ece https://github.com/WebKit/WebKit/commit/025e1d2fda31b65326961d5c99039356b2eb7ece Author: Alex Christensen <achristen...@apple.com> Date: 2024-05-10 (Fri, 10 May 2024)
Changed paths: M Source/WebKit/UIProcess/RemotePageProxy.cpp M Source/WebKit/UIProcess/RemotePageProxy.h M Source/WebKit/UIProcess/WebFrameProxy.cpp M Source/WebKit/UIProcess/WebFrameProxy.h M Source/WebKit/UIProcess/WebPageProxy.cpp M Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp M Source/WebKit/WebProcess/WebPage/WebFrame.cpp M Source/WebKit/WebProcess/WebPage/WebFrame.h M Source/WebKit/WebProcess/WebPage/WebPage.cpp M Source/WebKit/WebProcess/WebPage/WebPage.h M Source/WebKit/WebProcess/WebPage/WebPage.messages.in M Tools/TestWebKitAPI/Tests/WebKitCocoa/SiteIsolation.mm Log Message: ----------- Begin implementing provisional navigation cancelling with site isolation https://bugs.webkit.org/show_bug.cgi?id=273971 rdar://127836397 Reviewed by Charlie Wolfe. When more than two processes are involved, there is an unavoidable time between when the UI process tells one web process to start a provisional load and when it tells another web process to start another provisional load that the first web process may have sent a message to the UI process saying the provisional load has started. If we don't ignore this message, the UI process accounting of which frames are in a provisional load state and in which process gets messed up. In addition, when starting the second provisional load, we need to tell the first provisional load process to destroy its provisional frame. I renamed "prepareForProvisionalNavigationInProcess" to "prepareForProvisionalLoadInProcess" because "Navigation" is a term we use mostly consistently to refer to a main frame load. I renamed "provisionalLoadFailed" to "destroyProvisionalFrame" because it is now used for more than just when a provisional load fails. It's now used for when a provisional load is intentionally cancelled. This is just what it took to get the most controlled case of provisional load cancelling working reliably with a test. There's still more work to be done in this area, so I left a FIXME comment in the test indicating how to test those cases. I think we'll eventually have to come up with something better than using Navigation::currentRequestIsCrossSiteRedirect. * Source/WebKit/UIProcess/FrameLoadState.cpp: (WebKit::FrameLoadState::didStartProvisionalLoad): (WebKit::FrameLoadState::didFailProvisionalLoad): (WebKit::FrameLoadState::didCommitLoad): (WebKit::FrameLoadState::didFinishLoad): (WebKit::FrameLoadState::didFailLoad): * Source/WebKit/UIProcess/RemotePageProxy.cpp: (WebKit::RemotePageProxy::didReceiveMessage): (WebKit::RemotePageProxy::didStartProvisionalLoadForFrame): * Source/WebKit/UIProcess/RemotePageProxy.h: * Source/WebKit/UIProcess/WebFrameProxy.cpp: (WebKit::WebFrameProxy::prepareForProvisionalNavigationInProcess): * Source/WebKit/UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::receivedNavigationActionPolicyDecision): (WebKit::WebPageProxy::continueNavigationInNewProcess): (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared): * Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp: (WebKit::WebLocalFrameLoaderClient::dispatchDidStartProvisionalLoad): * Source/WebKit/WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::loadRequest): * Tools/TestWebKitAPI/Tests/WebKitCocoa/SiteIsolation.mm: (TestWebKitAPI::TEST(SiteIsolation, CancelProvisionalLoad)): Canonical link: https://commits.webkit.org/278624@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