Use global.get_referrer() when appropiate

This commit is contained in:
Matthias Deiml 2020-06-17 17:23:50 +02:00
parent 47355766ed
commit 25080e3fa5
3 changed files with 10 additions and 18 deletions

View file

@ -33,8 +33,8 @@ use net::http_loader::determine_request_referrer;
use net::resource_thread::AuthCacheEntry; use net::resource_thread::AuthCacheEntry;
use net::test::replace_host_table; use net::test::replace_host_table;
use net_traits::request::{ use net_traits::request::{
BodyChunkRequest, BodyChunkResponse, BodySource, CredentialsMode, Destination, RequestBody, Referrer BodyChunkRequest, BodyChunkResponse, BodySource, CredentialsMode, Destination, Referrer,
RequestBuilder, RequestMode, RequestBody, RequestBuilder, RequestMode,
}; };
use net_traits::response::{HttpsState, ResponseBody}; use net_traits::response::{HttpsState, ResponseBody};
use net_traits::{CookieSource, NetworkError, ReferrerPolicy}; use net_traits::{CookieSource, NetworkError, ReferrerPolicy};

View file

@ -160,7 +160,7 @@ pub struct XMLHttpRequest {
fetch_time: Cell<i64>, fetch_time: Cell<i64>,
generation_id: Cell<GenerationId>, generation_id: Cell<GenerationId>,
response_status: Cell<Result<(), ()>>, response_status: Cell<Result<(), ()>>,
referrer_url: Option<ServoUrl>, referrer: Referrer,
referrer_policy: Option<ReferrerPolicy>, referrer_policy: Option<ReferrerPolicy>,
canceller: DomRefCell<FetchCanceller>, canceller: DomRefCell<FetchCanceller>,
} }
@ -168,11 +168,11 @@ pub struct XMLHttpRequest {
impl XMLHttpRequest { impl XMLHttpRequest {
fn new_inherited(global: &GlobalScope) -> XMLHttpRequest { fn new_inherited(global: &GlobalScope) -> XMLHttpRequest {
//TODO - update this when referrer policy implemented for workers //TODO - update this when referrer policy implemented for workers
let (referrer_url, referrer_policy) = if let Some(window) = global.downcast::<Window>() { let referrer_policy = if let Some(window) = global.downcast::<Window>() {
let document = window.Document(); let document = window.Document();
(Some(document.url()), document.get_referrer_policy()) document.get_referrer_policy()
} else { } else {
(None, None) None
}; };
XMLHttpRequest { XMLHttpRequest {
@ -206,7 +206,7 @@ impl XMLHttpRequest {
fetch_time: Cell::new(0), fetch_time: Cell::new(0),
generation_id: Cell::new(GenerationId(0)), generation_id: Cell::new(GenerationId(0)),
response_status: Cell::new(Ok(())), response_status: Cell::new(Ok(())),
referrer_url: referrer_url, referrer: global.get_referrer(),
referrer_policy: referrer_policy, referrer_policy: referrer_policy,
canceller: DomRefCell::new(Default::default()), canceller: DomRefCell::new(Default::default()),
} }
@ -681,10 +681,7 @@ impl XMLHttpRequestMethods for XMLHttpRequest {
let mut request = RequestBuilder::new( let mut request = RequestBuilder::new(
self.request_url.borrow().clone().unwrap(), self.request_url.borrow().clone().unwrap(),
self.referrer_url self.referrer.clone(),
.clone()
.map(|url| Referrer::ReferrerUrl(url))
.unwrap_or_else(|| self.global().get_referrer()),
) )
.method(self.request_method.borrow().clone()) .method(self.request_method.borrow().clone())
.headers((*self.request_headers.borrow()).clone()) .headers((*self.request_headers.borrow()).clone())

View file

@ -60,7 +60,7 @@ use js::rust::CompileOptionsWrapper;
use js::rust::{Handle, HandleValue, IntoHandle}; use js::rust::{Handle, HandleValue, IntoHandle};
use mime::Mime; use mime::Mime;
use net_traits::request::{CredentialsMode, Destination, ParserMetadata}; 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::{FetchMetadata, Metadata};
use net_traits::{FetchResponseListener, NetworkError}; use net_traits::{FetchResponseListener, NetworkError};
use net_traits::{ResourceFetchTiming, ResourceTimingType}; use net_traits::{ResourceFetchTiming, ResourceTimingType};
@ -721,7 +721,6 @@ impl ModuleTree {
// Step 8. // Step 8.
let referrer = global.get_referrer();
for url in urls { for url in urls {
// https://html.spec.whatwg.org/multipage/#internal-module-script-graph-fetching-procedure // https://html.spec.whatwg.org/multipage/#internal-module-script-graph-fetching-procedure
// Step 1. // Step 1.
@ -733,7 +732,6 @@ impl ModuleTree {
url.clone(), url.clone(),
visited_urls.clone(), visited_urls.clone(),
destination.clone(), destination.clone(),
referrer.clone(),
ParserMetadata::NotParserInserted, ParserMetadata::NotParserInserted,
"".to_owned(), // integrity "".to_owned(), // integrity
credentials_mode.clone(), credentials_mode.clone(),
@ -1227,7 +1225,6 @@ pub fn fetch_external_module_script(
) { ) {
let mut visited_urls = HashSet::new(); let mut visited_urls = HashSet::new();
visited_urls.insert(url.clone()); visited_urls.insert(url.clone());
let referrer = owner.global().get_referrer();
// Step 1. // Step 1.
fetch_single_module_script( fetch_single_module_script(
@ -1235,7 +1232,6 @@ pub fn fetch_external_module_script(
url, url,
visited_urls, visited_urls,
destination, destination,
referrer,
ParserMetadata::NotParserInserted, ParserMetadata::NotParserInserted,
integrity_metadata, integrity_metadata,
credentials_mode, credentials_mode,
@ -1250,7 +1246,6 @@ pub fn fetch_single_module_script(
url: ServoUrl, url: ServoUrl,
visited_urls: HashSet<ServoUrl>, visited_urls: HashSet<ServoUrl>,
destination: Destination, destination: Destination,
referrer: Referrer,
parser_metadata: ParserMetadata, parser_metadata: ParserMetadata,
integrity_metadata: String, integrity_metadata: String,
credentials_mode: CredentialsMode, credentials_mode: CredentialsMode,
@ -1325,7 +1320,7 @@ pub fn fetch_single_module_script(
}; };
// Step 7-8. // Step 7-8.
let request = RequestBuilder::new(url.clone(), referrer) let request = RequestBuilder::new(url.clone(), global.get_referrer())
.destination(destination.clone()) .destination(destination.clone())
.origin(global.origin().immutable().clone()) .origin(global.origin().immutable().clone())
.parser_metadata(parser_metadata) .parser_metadata(parser_metadata)