remove referrer field from ScriptFetchOptions (#43532)

Remove `referrer` field from `ScriptFetchOptions` and pass it directly
to `script_fetch_request`.

This keeps ScriptFetchOptions aligned with the HTML 
fixes #42875

---------

Signed-off-by: Kelechi Ebiri <ebiritg@gmail.com>
This commit is contained in:
Kelechi Ebiri
2026-03-22 17:41:29 +01:00
committed by GitHub
parent 9cbdf9d8b1
commit a63a00936f
9 changed files with 22 additions and 20 deletions

View File

@@ -16,7 +16,9 @@ use html5ever::{LocalName, Prefix, local_name};
use js::context::JSContext;
use js::rust::{HandleObject, Stencil};
use net_traits::http_status::HttpStatus;
use net_traits::request::{CorsSettings, Destination, ParserMetadata, RequestBuilder, RequestId};
use net_traits::request::{
CorsSettings, Destination, ParserMetadata, Referrer, RequestBuilder, RequestId,
};
use net_traits::{FetchMetadata, Metadata, NetworkError, ResourceFetchTiming};
use servo_url::ServoUrl;
use style::attr::AttrValue;
@@ -513,6 +515,7 @@ pub(crate) fn script_fetch_request(
url: ServoUrl,
cors_setting: Option<CorsSettings>,
options: ScriptFetchOptions,
referrer: Referrer,
) -> RequestBuilder {
// We intentionally ignore options' credentials_mode member for classic scripts.
// The mode is initialized by create_a_potential_cors_request.
@@ -522,7 +525,7 @@ pub(crate) fn script_fetch_request(
Destination::Script,
cors_setting,
None,
options.referrer,
referrer,
)
.parser_metadata(options.parser_metadata)
.integrity_metadata(options.integrity_metadata.clone())
@@ -542,9 +545,15 @@ fn fetch_a_classic_script(
// Step 1, 2.
let doc = script.owner_document();
let global = script.global();
let request =
script_fetch_request(doc.webview_id(), url.clone(), cors_setting, options.clone())
.with_global_scope(&global);
let referrer = global.get_referrer();
let request = script_fetch_request(
doc.webview_id(),
url.clone(),
cors_setting,
options.clone(),
referrer,
)
.with_global_scope(&global);
// TODO: Step 3, Add custom steps to perform fetch
@@ -789,7 +798,6 @@ impl HTMLScriptElement {
cryptographic_nonce,
integrity_metadata: integrity_metadata.to_owned(),
parser_metadata,
referrer: self.global().get_referrer(),
referrer_policy,
credentials_mode: module_credentials_mode,
};