Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 11ce3debf28778630d5dd1d6f21425df86b003f8
https://github.com/WebKit/WebKit/commit/11ce3debf28778630d5dd1d6f21425df86b003f8
Author: Per Arne Vollan <[email protected]>
Date: 2026-09-15 (Tue, 15 Sep 2026)
Changed paths:
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.h
M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm
Log Message:
-----------
[Site Isolation] Safari crashes after navigating to Instagram through
embedded post
https://bugs.webkit.org/show_bug.cgi?id=323912
rdar://185925090
Reviewed by Sihui Liu.
This is caused by a failing message check in
WebPageProxy::didSameDocumentNavigationForFrameViaJS,
because the URL sent from the WebContent process does not match the URL of the
frame.
The URL sent from the WebContent is correct, but the URL in the frame returned
by WebFrameProxy::url()
is returning about:blank. It was set to about:blank because
ProvisionalPageProxy reused the main frame
(m_shouldReuseMainFrame) since the page was opened by DOM, and
WebPageProxy::commitProvisionalPage
found the current page eligible for suspension. When the page is found eligible
for suspension,
WebPageProxy::suspendCurrentPageIfPossible calls didSuspend on the main frame's
FrameLoadState, which
resets the provisonal URL member in FrameLoadState. Later, in
FrameLoadState::didCommitLoad(), the URL
is derived from the provisional URL, which is now empty, so the URL in
FrameLoadState is set to
about:blank, triggering the failing message check.
Test: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::suspendCurrentPageIfPossible):
(WebKit::WebPageProxy::commitProvisionalPage):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm:
(TestWebKitAPI::suspendedReusedMainFrameResponses):
(TestWebKitAPI::checkSameDocumentNavigationAfterSuspendingReusedMainFrame):
(TestWebKitAPI::TEST(SiteIsolation,
ReplaceStateAfterSuspendingReusedMainFrame)):
(TestWebKitAPI::TEST(SiteIsolation, PushStateAfterSuspendingReusedMainFrame)):
Canonical link: https://commits.webkit.org/321195@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications