Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 0d45dd47678b531c0ac56c34953f12bf3e8a111a
https://github.com/WebKit/WebKit/commit/0d45dd47678b531c0ac56c34953f12bf3e8a111a
Author: Rupin Mittal <[email protected]>
Date: 2026-03-04 (Wed, 04 Mar 2026)
Changed paths:
M LayoutTests/platform/ios-site-isolation/TestExpectations
M LayoutTests/platform/mac-site-isolation/TestExpectations
M Source/WebCore/platform/Site.cpp
M Tools/TestWebKitAPI/Tests/WebKitCocoa/SiteIsolation.mm
Log Message:
-----------
[Site Isolation] COOP test blob-popup.https.html is crashing
https://bugs.webkit.org/show_bug.cgi?id=309099
rdar://171659374
Reviewed by Charlie Wolfe.
In this test:
1. A main page at https://example.com creates a blob URL and opens it as a popup
2. The blob popup's content opens a second popup to a cross-site origin
The test crashes with site isolation enabled when opening the blob popup at this
assertion in WebProcessProxy::didStartUsingProcessForSiteIsolation:
ASSERT(m_site ? (m_site.value().isEmpty() || m_site.value() == *site) ...
because m_site is not equal to site.
When the blob popup is created, its process is initially tagged with the
WebCore::Site ("https", "example.com"), which is the opener's site (m_site
above).
But when the blob URL actually loads, it's WebCore::Site is computed as
("blob", "example.com"). These are not equal and we crash in the above
assertion.
To fix this, we amend the WebCore::Site constructor so that when the URL is a
blob
URL, it extracts the inner origin's protocol (https in this case) instead of
using
blob as the protocol (this is what we already do for m_domain). This makes
Site("blob:https://example.com/uuid") correctly produce ("https",
"example.com"),
which matches the site of the page that created the blob.
With this fix, the test SiteIsolation.CrossSiteIframeOpenWindowWithBlobURL fails
because the blob popup and the iframe are now in the same web process. Given
that
they are same site, it's indeed correct for them to be in the same web process,
and so we amend the test to expect that.
* LayoutTests/platform/ios-site-isolation/TestExpectations:
* LayoutTests/platform/mac-site-isolation/TestExpectations:
* Source/WebCore/platform/Site.cpp:
(WebCore::protocolForURL):
(WebCore::Site::Site):
(WebCore::Site::matches const):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/SiteIsolation.mm:
(TestWebKitAPI::(SiteIsolation, CrossSiteIframeOpenWindowWithBlobURL)):
Canonical link: https://commits.webkit.org/308680@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications