From 25080e3fa5ebbb82401d089c0227cd9c9acd358a Mon Sep 17 00:00:00 2001 From: Matthias Deiml Date: Wed, 17 Jun 2020 17:23:50 +0200 Subject: [PATCH] Use global.get_referrer() when appropiate --- components/net/tests/http_loader.rs | 4 ++-- components/script/dom/xmlhttprequest.rs | 15 ++++++--------- components/script/script_module.rs | 9 ++------- 3 files changed, 10 insertions(+), 18 deletions(-) diff --git a/components/net/tests/http_loader.rs b/components/net/tests/http_loader.rs index f5b5a82cb5a5..0cea1e3add6d 100644 --- a/components/net/tests/http_loader.rs +++ b/components/net/tests/http_loader.rs @@ -33,8 +33,8 @@ use net::http_loader::determine_request_referrer; use net::resource_thread::AuthCacheEntry; use net::test::replace_host_table; use net_traits::request::{ - BodyChunkRequest, BodyChunkResponse, BodySource, CredentialsMode, Destination, RequestBody, Referrer - RequestBuilder, RequestMode, + BodyChunkRequest, BodyChunkResponse, BodySource, CredentialsMode, Destination, Referrer, + RequestBody, RequestBuilder, RequestMode, }; use net_traits::response::{HttpsState, ResponseBody}; use net_traits::{CookieSource, NetworkError, ReferrerPolicy}; diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs index 2e8a37ea240e..06b6699d3a99 100644 --- a/components/script/dom/xmlhttprequest.rs +++ b/components/script/dom/xmlhttprequest.rs @@ -160,7 +160,7 @@ pub struct XMLHttpRequest { fetch_time: Cell, generation_id: Cell, response_status: Cell>, - referrer_url: Option, + referrer: Referrer, referrer_policy: Option, canceller: DomRefCell, } @@ -168,11 +168,11 @@ pub struct XMLHttpRequest { impl XMLHttpRequest { fn new_inherited(global: &GlobalScope) -> XMLHttpRequest { //TODO - update this when referrer policy implemented for workers - let (referrer_url, referrer_policy) = if let Some(window) = global.downcast::() { + let referrer_policy = if let Some(window) = global.downcast::() { let document = window.Document(); - (Some(document.url()), document.get_referrer_policy()) + document.get_referrer_policy() } else { - (None, None) + None }; XMLHttpRequest { @@ -206,7 +206,7 @@ impl XMLHttpRequest { fetch_time: Cell::new(0), generation_id: Cell::new(GenerationId(0)), response_status: Cell::new(Ok(())), - referrer_url: referrer_url, + referrer: global.get_referrer(), referrer_policy: referrer_policy, canceller: DomRefCell::new(Default::default()), } @@ -681,10 +681,7 @@ impl XMLHttpRequestMethods for XMLHttpRequest { let mut request = RequestBuilder::new( self.request_url.borrow().clone().unwrap(), - self.referrer_url - .clone() - .map(|url| Referrer::ReferrerUrl(url)) - .unwrap_or_else(|| self.global().get_referrer()), + self.referrer.clone(), ) .method(self.request_method.borrow().clone()) .headers((*self.request_headers.borrow()).clone()) diff --git a/components/script/script_module.rs b/components/script/script_module.rs index 0a890623e625..185a96c5d863 100644 --- a/components/script/script_module.rs +++ b/components/script/script_module.rs @@ -60,7 +60,7 @@ use js::rust::CompileOptionsWrapper; use js::rust::{Handle, HandleValue, IntoHandle}; use mime::Mime; use net_traits::request::{CredentialsMode, Destination, ParserMetadata}; -use net_traits::request::{Referrer, RequestBuilder, RequestMode}; +use net_traits::request::{RequestBuilder, RequestMode}; use net_traits::{FetchMetadata, Metadata}; use net_traits::{FetchResponseListener, NetworkError}; use net_traits::{ResourceFetchTiming, ResourceTimingType}; @@ -721,7 +721,6 @@ impl ModuleTree { // Step 8. - let referrer = global.get_referrer(); for url in urls { // https://html.spec.whatwg.org/multipage/#internal-module-script-graph-fetching-procedure // Step 1. @@ -733,7 +732,6 @@ impl ModuleTree { url.clone(), visited_urls.clone(), destination.clone(), - referrer.clone(), ParserMetadata::NotParserInserted, "".to_owned(), // integrity credentials_mode.clone(), @@ -1227,7 +1225,6 @@ pub fn fetch_external_module_script( ) { let mut visited_urls = HashSet::new(); visited_urls.insert(url.clone()); - let referrer = owner.global().get_referrer(); // Step 1. fetch_single_module_script( @@ -1235,7 +1232,6 @@ pub fn fetch_external_module_script( url, visited_urls, destination, - referrer, ParserMetadata::NotParserInserted, integrity_metadata, credentials_mode, @@ -1250,7 +1246,6 @@ pub fn fetch_single_module_script( url: ServoUrl, visited_urls: HashSet, destination: Destination, - referrer: Referrer, parser_metadata: ParserMetadata, integrity_metadata: String, credentials_mode: CredentialsMode, @@ -1325,7 +1320,7 @@ pub fn fetch_single_module_script( }; // Step 7-8. - let request = RequestBuilder::new(url.clone(), referrer) + let request = RequestBuilder::new(url.clone(), global.get_referrer()) .destination(destination.clone()) .origin(global.origin().immutable().clone()) .parser_metadata(parser_metadata)