LibWeb+LibURL: Get blob's environments origin from URL's blob entry

This closer matches specification - and removes any dependency on
LibWeb in the implementation of DOMURL::url_origin.

It is also one step closer to moving BlobURLRegistry to a singleton
process to match LibWeb's multiprocess Worker architecture.
This commit is contained in:
Shannon Booth
2024-10-05 16:54:27 +13:00
committed by Andreas Kling
parent 43973f2d0a
commit 12ea470417
Notes: github-actions[bot] 2024-10-05 08:47:38 +00:00
4 changed files with 7 additions and 2 deletions

View File

@@ -489,8 +489,8 @@ URL::Origin url_origin(URL::URL const& url)
auto url_string = url.to_string().release_value_but_fixme_should_propagate_errors();
// 1. If urls blob URL entry is non-null, then return urls blob URL entrys environments origin.
if (auto blob_url_entry = FileAPI::blob_url_store().get(url_string); blob_url_entry.has_value())
return blob_url_entry->environment->origin();
if (url.blob_url_entry().has_value())
return url.blob_url_entry()->environment_origin;
// 2. Let pathURL be the result of parsing the result of URL path serializing url.
auto path_url = parse(url.serialize_path());
@@ -582,6 +582,7 @@ URL::URL parse(StringView input, Optional<URL::URL> const& base_url, Optional<St
url.set_blob_url_entry(URL::BlobURLEntry {
.type = blob_url_entry->object->type(),
.byte_buffer = MUST(ByteBuffer::copy(blob_url_entry->object->raw_bytes())),
.environment_origin = blob_url_entry->environment->origin(),
});
}