Partition blobs by top frame URL: allows the use of blobs within a third-party iframe workers (#2722)
This commit is contained in:
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user