[webkit-changes] [WebKit/WebKit] 46bc2c: Don't reload when a site isolated iframe process c...
Alex Christensen
noreply at github.com
Wed Dec 11 10:11:33 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 46bc2ca6ccfcf2fd72830180a1693fce497d7d14
https://github.com/WebKit/WebKit/commit/46bc2ca6ccfcf2fd72830180a1693fce497d7d14
Author: Alex Christensen <achristensen at apple.com>
Date: 2024-12-11 (Wed, 11 Dec 2024)
Changed paths:
M Source/WebKit/Shared/ProcessTerminationReason.cpp
M Source/WebKit/Shared/ProcessTerminationReason.h
M Source/WebKit/UIProcess/API/C/WKAPICast.h
M Source/WebKit/UIProcess/API/C/WKPage.cpp
M Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm
M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
M Source/WebKit/UIProcess/API/glib/WebKitNavigationClient.cpp
M Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp
M Source/WebKit/UIProcess/Cocoa/NavigationState.mm
M Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp
M Source/WebKit/UIProcess/Model/ModelProcessProxy.cpp
M Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebProcessPool.cpp
M Source/WebKit/UIProcess/WebProcessProxy.cpp
M Source/WebKit/UIProcess/WebProcessProxy.h
M Source/WebKit/UIProcess/ios/WKPDFView.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/SiteIsolation.mm
Log Message:
-----------
Don't reload when a site isolated iframe process crashes
https://bugs.webkit.org/show_bug.cgi?id=284411
rdar://141248423
Reviewed by Charlie Wolfe.
When a web content process crashes in WebKit, we automatically reload the page.
When an iframe process crashes in other browsers with site isolation enabled,
the user only loses the iframe process's content and the user's interaction with
the main frame content is uninterrupted. This new behavior will give WebKit
a similar user experience when site isolation is enabled.
I needed a new WKNavigationDelgate class for testing because on Cocoa platforms
NavigationState::NavigationClient::processDidTerminate returns true if the delegate
implements the webViewWebContentProcessDidTerminate selector, but we need to test
WebPageProxy::dispatchProcessDidTerminate when it returns false like it does in
iOS Safari.
* Source/WebKit/Shared/ProcessTerminationReason.cpp:
(WebKit::processTerminationReasonToString):
* Source/WebKit/Shared/ProcessTerminationReason.h:
* Source/WebKit/UIProcess/API/C/WKAPICast.h:
(WebKit::toAPI):
* Source/WebKit/UIProcess/API/C/WKPage.cpp:
* Source/WebKit/UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
* Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm:
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
* Source/WebKit/UIProcess/Cocoa/NavigationState.mm:
(WebKit::wkProcessTerminationReason):
* Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp:
(WebKit::GPUProcessProxy::gpuProcessExited):
* Source/WebKit/UIProcess/Model/ModelProcessProxy.cpp:
(WebKit::ModelProcessProxy::modelProcessExited):
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::shouldReloadAfterProcessTermination):
* Source/WebKit/UIProcess/WebProcessPool.cpp:
(WebKit::shouldReportNetworkOrGPUProcessCrash):
(WebKit::WebProcessPool::networkProcessDidTerminate):
(WebKit::WebProcessPool::gpuProcessExited):
(WebKit::shouldReportAuxiliaryProcessCrash): Deleted.
* Source/WebKit/UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::terminationReason const):
(WebKit::WebProcessProxy::didClose):
(WebKit::WebProcessProxy::didFinishLaunching):
* Source/WebKit/UIProcess/WebProcessProxy.h:
* Source/WebKit/UIProcess/ios/WKPDFView.mm:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/SiteIsolation.mm:
(TestWebKitAPI::TEST(SiteIsolation, ProcessTerminationReason)):
Canonical link: https://commits.webkit.org/287680@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