Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit 65d7b348 authored by Carmelo Messina's avatar Carmelo Messina
Browse files

Partition blobs by top frame URL: allows the use of blobs within a third-party...

Partition blobs by top frame URL: allows the use of blobs within a third-party iframe workers (#2722)
parent c946bfcc
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -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<WorkerGlobalScope>(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<mojom::blink::Blob> 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),