Files
servo/components/script/url.rs
Josh Matthews 9334d3094b script: Use the global's origin when claiming blob tokens. (#44004)
`global.api_base_url().origin()` returns a unique opaque origin when the
base URL is an opaque origin. When we use the global's origin instead,
requests for claimed blobs can now pass the same-origin check.

Testing: Newly passing tests.
Fixes: #43326
Fixes: #43973

---------

Signed-off-by: Josh Matthews <josh@joshmatthews.net>
2026-04-07 19:40:15 +00:00

27 lines
845 B
Rust

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
use net_traits::blob_url_store::{BlobResolver, UrlWithBlobClaim};
use servo_url::ServoUrl;
use crate::dom::globalscope::GlobalScope;
pub(crate) fn ensure_blob_referenced_by_url_is_kept_alive(
global: &GlobalScope,
url: ServoUrl,
) -> UrlWithBlobClaim {
match UrlWithBlobClaim::for_url(url) {
Ok(lock) => lock,
Err(url) => {
let token = BlobResolver {
origin: global.origin().immutable().clone(),
resource_threads: global.resource_threads(),
}
.acquire_blob_token_for(&url);
UrlWithBlobClaim::new(url, token)
},
}
}