Skip to content

Commit a63a009

Browse files
authored
remove referrer field from ScriptFetchOptions (servo#43532)
Remove `referrer` field from `ScriptFetchOptions` and pass it directly to `script_fetch_request`. This keeps ScriptFetchOptions aligned with the HTML fixes servo#42875 --------- Signed-off-by: Kelechi Ebiri <ebiritg@gmail.com>
1 parent 9cbdf9d commit a63a009

File tree

9 files changed

+22
-20
lines changed

9 files changed

+22
-20
lines changed

components/script/dom/globalscope.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2871,7 +2871,7 @@ impl GlobalScope {
28712871

28722872
run_a_script::<DomTypeHolder, _>(self, || {
28732873
let url = self.api_base_url();
2874-
let fetch_options = ScriptFetchOptions::default_classic_script(self);
2874+
let fetch_options = ScriptFetchOptions::default_classic_script();
28752875

28762876
let no_script_rval = rval.is_none();
28772877

components/script/dom/html/htmllinkelement.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1032,7 +1032,6 @@ impl HTMLLinkElement {
10321032
parser_metadata: ParserMetadata::NotParserInserted,
10331033
credentials_mode,
10341034
referrer_policy,
1035-
referrer: global.get_referrer(),
10361035
};
10371036

10381037
let link = DomRoot::from_ref(self);

components/script/dom/html/htmlscriptelement.rs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ use html5ever::{LocalName, Prefix, local_name};
1616
use js::context::JSContext;
1717
use js::rust::{HandleObject, Stencil};
1818
use net_traits::http_status::HttpStatus;
19-
use net_traits::request::{CorsSettings, Destination, ParserMetadata, RequestBuilder, RequestId};
19+
use net_traits::request::{
20+
CorsSettings, Destination, ParserMetadata, Referrer, RequestBuilder, RequestId,
21+
};
2022
use net_traits::{FetchMetadata, Metadata, NetworkError, ResourceFetchTiming};
2123
use servo_url::ServoUrl;
2224
use style::attr::AttrValue;
@@ -513,6 +515,7 @@ pub(crate) fn script_fetch_request(
513515
url: ServoUrl,
514516
cors_setting: Option<CorsSettings>,
515517
options: ScriptFetchOptions,
518+
referrer: Referrer,
516519
) -> RequestBuilder {
517520
// We intentionally ignore options' credentials_mode member for classic scripts.
518521
// The mode is initialized by create_a_potential_cors_request.
@@ -522,7 +525,7 @@ pub(crate) fn script_fetch_request(
522525
Destination::Script,
523526
cors_setting,
524527
None,
525-
options.referrer,
528+
referrer,
526529
)
527530
.parser_metadata(options.parser_metadata)
528531
.integrity_metadata(options.integrity_metadata.clone())
@@ -542,9 +545,15 @@ fn fetch_a_classic_script(
542545
// Step 1, 2.
543546
let doc = script.owner_document();
544547
let global = script.global();
545-
let request =
546-
script_fetch_request(doc.webview_id(), url.clone(), cors_setting, options.clone())
547-
.with_global_scope(&global);
548+
let referrer = global.get_referrer();
549+
let request = script_fetch_request(
550+
doc.webview_id(),
551+
url.clone(),
552+
cors_setting,
553+
options.clone(),
554+
referrer,
555+
)
556+
.with_global_scope(&global);
548557

549558
// TODO: Step 3, Add custom steps to perform fetch
550559

@@ -789,7 +798,6 @@ impl HTMLScriptElement {
789798
cryptographic_nonce,
790799
integrity_metadata: integrity_metadata.to_owned(),
791800
parser_metadata,
792-
referrer: self.global().get_referrer(),
793801
referrer_policy,
794802
credentials_mode: module_credentials_mode,
795803
};

components/script/dom/servoparser/prefetch.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,13 +149,13 @@ impl TokenSink for PrefetchSink {
149149
url,
150150
cors_setting,
151151
ScriptFetchOptions {
152-
referrer: self.referrer.clone(),
153152
referrer_policy: self.referrer_policy,
154153
integrity_metadata,
155154
cryptographic_nonce,
156155
credentials_mode: CredentialsMode::CredentialsSameOrigin,
157156
parser_metadata: ParserMetadata::ParserInserted,
158157
},
158+
self.referrer.clone(),
159159
)
160160
.insecure_requests_policy(self.insecure_requests_policy)
161161
.has_trustworthy_ancestor_origin(self.has_trustworthy_ancestor_origin)

components/script/dom/workers/serviceworkerglobalscope.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,7 @@ impl ServiceWorkerGlobalScope {
414414
&mut realm,
415415
String::from_utf8_lossy(&source),
416416
url,
417-
ScriptFetchOptions::default_classic_script(global_scope),
417+
ScriptFetchOptions::default_classic_script(),
418418
ErrorReporting::Unmuted,
419419
Some(IntroductionType::WORKER),
420420
1,

components/script/dom/workers/workerglobalscope.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ impl FetchResponseListener for ScriptFetchContext {
211211
cx,
212212
source,
213213
scope.worker_url.borrow().clone(),
214-
ScriptFetchOptions::default_classic_script(global_scope),
214+
ScriptFetchOptions::default_classic_script(),
215215
ErrorReporting::Unmuted,
216216
Some(IntroductionType::WORKER),
217217
1,
@@ -743,7 +743,7 @@ impl WorkerGlobalScopeMethods<crate::DomTypeHolder> for WorkerGlobalScope {
743743
cx,
744744
source,
745745
url,
746-
ScriptFetchOptions::default_classic_script(&self.globalscope),
746+
ScriptFetchOptions::default_classic_script(),
747747
ErrorReporting::from(muted_errors),
748748
Some(IntroductionType::WORKER),
749749
1,

components/script/module_loading.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,7 @@ pub(crate) fn host_load_imported_module(
447447
),
448448
None => (
449449
// Step 4. Let originalFetchOptions be the default script fetch options.
450-
ScriptFetchOptions::default_classic_script(&global_scope),
450+
ScriptFetchOptions::default_classic_script(),
451451
// Step 5. Let fetchReferrer be "client".
452452
global_scope.get_referrer(),
453453
),

components/script/script_module.rs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -957,8 +957,6 @@ pub(crate) unsafe extern "C" fn host_import_module_dynamically(
957957
#[derive(Clone, Debug, JSTraceable, MallocSizeOf)]
958958
/// <https://html.spec.whatwg.org/multipage/#script-fetch-options>
959959
pub(crate) struct ScriptFetchOptions {
960-
#[no_trace]
961-
pub(crate) referrer: Referrer,
962960
pub(crate) integrity_metadata: String,
963961
#[no_trace]
964962
pub(crate) credentials_mode: CredentialsMode,
@@ -971,11 +969,10 @@ pub(crate) struct ScriptFetchOptions {
971969

972970
impl ScriptFetchOptions {
973971
/// <https://html.spec.whatwg.org/multipage/#default-classic-script-fetch-options>
974-
pub(crate) fn default_classic_script(global: &GlobalScope) -> ScriptFetchOptions {
972+
pub(crate) fn default_classic_script() -> ScriptFetchOptions {
975973
Self {
976974
cryptographic_nonce: String::new(),
977975
integrity_metadata: String::new(),
978-
referrer: global.get_referrer(),
979976
parser_metadata: ParserMetadata::NotParserInserted,
980977
credentials_mode: CredentialsMode::CredentialsSameOrigin,
981978
referrer_policy: ReferrerPolicy::EmptyString,
@@ -994,7 +991,6 @@ impl ScriptFetchOptions {
994991
// Step 1. Let newOptions be a copy of originalOptions.
995992
// TODO Step 4. Set newOptions's fetch priority to "auto".
996993
Self {
997-
referrer: self.referrer.clone(),
998994
// Step 3. Set newOptions's integrity metadata to integrity.
999995
integrity_metadata: integrity,
1000996
cryptographic_nonce: self.cryptographic_nonce.clone(),
@@ -1208,7 +1204,6 @@ pub(crate) fn fetch_a_module_worker_script_graph(
12081204
// metadata is "not-parser-inserted", credentials mode is credentialsMode,
12091205
// referrer policy is the empty string, and fetch priority is "auto".
12101206
let options = ScriptFetchOptions {
1211-
referrer: referrer.clone(),
12121207
integrity_metadata: "".into(),
12131208
credentials_mode,
12141209
cryptographic_nonce: "".into(),

components/script/timers.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -792,7 +792,7 @@ impl JsTimerTask {
792792
// TODO Step 7. Let initiating script be the active script.
793793

794794
// Step 9.6.5. Let fetch options be the default script fetch options.
795-
let fetch_options = ScriptFetchOptions::default_classic_script(&global);
795+
let fetch_options = ScriptFetchOptions::default_classic_script();
796796

797797
// Step 9.6.6. Let base URL be settings object's API base URL.
798798
let base_url = global.api_base_url();

0 commit comments

Comments
 (0)