From 65d7b3483c91e7a637ee760caaf1274a9827bf56 Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Tue, 24 Feb 2026 17:52:06 +0100 Subject: [PATCH] Partition blobs by top frame URL: allows the use of blobs within a third-party iframe workers (#2722) --- .../Partition-blobs-by-top-frame-URL.patch | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/build/patches/Partition-blobs-by-top-frame-URL.patch b/build/patches/Partition-blobs-by-top-frame-URL.patch index 3c91ecdf..f2ea541e 100644 --- a/build/patches/Partition-blobs-by-top-frame-URL.patch +++ b/build/patches/Partition-blobs-by-top-frame-URL.patch @@ -16,8 +16,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html storage/browser/blob/blob_url_store_impl.h | 15 ++++- storage/browser/blob/features.cc | 1 + .../public/mojom/blob/blob_url_store.mojom | 13 +++- - .../core/fileapi/public_url_manager.cc | 33 +++++++++- - 9 files changed, 154 insertions(+), 15 deletions(-) + .../core/fileapi/public_url_manager.cc | 37 ++++++++++- + 9 files changed, 158 insertions(+), 15 deletions(-) create mode 100644 cromite_flags/third_party/blink/common/features_cc/Partition-blobs-by-top-frame-URL.inc diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc @@ -371,7 +371,7 @@ diff --git a/third_party/blink/public/mojom/blob/blob_url_store.mojom b/third_pa diff --git a/third_party/blink/renderer/core/fileapi/public_url_manager.cc b/third_party/blink/renderer/core/fileapi/public_url_manager.cc --- a/third_party/blink/renderer/core/fileapi/public_url_manager.cc +++ b/third_party/blink/renderer/core/fileapi/public_url_manager.cc -@@ -61,6 +61,21 @@ static void RemoveFromNullOriginMapIfNecessary(const KURL& blob_url) { +@@ -61,6 +61,25 @@ static void RemoveFromNullOriginMapIfNecessary(const KURL& blob_url) { BlobURLNullOriginMap::GetInstance()->Remove(blob_url); } @@ -386,6 +386,10 @@ diff --git a/third_party/blink/renderer/core/fileapi/public_url_manager.cc b/thi + ->GetSecurityContext() + ->GetSecurityOrigin()); + } ++ } else if (auto* worker_global_scope = ++ DynamicTo(execution_context)) { ++ top_level_site = BlinkSchemefulSite( ++ worker_global_scope->top_level_frame_security_origin()); + } + return top_level_site; +} @@ -393,7 +397,7 @@ diff --git a/third_party/blink/renderer/core/fileapi/public_url_manager.cc b/thi } // namespace PublicURLManager::PublicURLManager(ExecutionContext* execution_context) -@@ -158,7 +173,17 @@ String PublicURLManager::RegisterURL(URLRegistrable* registrable) { +@@ -158,7 +177,17 @@ String PublicURLManager::RegisterURL(URLRegistrable* registrable) { mojo::PendingReceiver blob_receiver = blob_remote.InitWithNewPipeAndPassReceiver(); @@ -412,7 +416,7 @@ diff --git a/third_party/blink/renderer/core/fileapi/public_url_manager.cc b/thi mojo_urls_.insert(url_string); registrable->CloneMojoBlob(std::move(blob_receiver)); -@@ -208,7 +233,8 @@ void PublicURLManager::Resolve( +@@ -208,7 +237,8 @@ void PublicURLManager::Resolve( DCHECK(url.ProtocolIs("blob")); @@ -422,7 +426,7 @@ diff --git a/third_party/blink/renderer/core/fileapi/public_url_manager.cc b/thi } void PublicURLManager::ResolveAsBlobURLToken( -@@ -221,7 +247,8 @@ void PublicURLManager::ResolveAsBlobURLToken( +@@ -221,7 +251,8 @@ void PublicURLManager::ResolveAsBlobURLToken( DCHECK(url.ProtocolIs("blob")); GetBlobURLStore().ResolveAsBlobURLToken(url, std::move(token_receiver),