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

Reply via email to