Skip to content

Commit

Permalink
Use global.get_referrer() when appropiate
Browse files Browse the repository at this point in the history
  • Loading branch information
MDeiml committed Jun 17, 2020
1 parent 4735576 commit 25080e3
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 18 deletions.
4 changes: 2 additions & 2 deletions components/net/tests/http_loader.rs
Expand Up @@ -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};
Expand Down
15 changes: 6 additions & 9 deletions components/script/dom/xmlhttprequest.rs
Expand Up @@ -160,19 +160,19 @@ pub struct XMLHttpRequest {
fetch_time: Cell<i64>,
generation_id: Cell<GenerationId>,
response_status: Cell<Result<(), ()>>,
referrer_url: Option<ServoUrl>,
referrer: Referrer,
referrer_policy: Option<ReferrerPolicy>,
canceller: DomRefCell<FetchCanceller>,
}

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::<Window>() {
let referrer_policy = if let Some(window) = global.downcast::<Window>() {
let document = window.Document();
(Some(document.url()), document.get_referrer_policy())
document.get_referrer_policy()
} else {
(None, None)
None
};

XMLHttpRequest {
Expand Down Expand Up @@ -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()),
}
Expand Down Expand Up @@ -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())
Expand Down
9 changes: 2 additions & 7 deletions components/script/script_module.rs
Expand Up @@ -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};
Expand Down Expand Up @@ -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.
Expand All @@ -733,7 +732,6 @@ impl ModuleTree {
url.clone(),
visited_urls.clone(),
destination.clone(),
referrer.clone(),
ParserMetadata::NotParserInserted,
"".to_owned(), // integrity
credentials_mode.clone(),
Expand Down Expand Up @@ -1227,15 +1225,13 @@ 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(
owner,
url,
visited_urls,
destination,
referrer,
ParserMetadata::NotParserInserted,
integrity_metadata,
credentials_mode,
Expand All @@ -1250,7 +1246,6 @@ pub fn fetch_single_module_script(
url: ServoUrl,
visited_urls: HashSet<ServoUrl>,
destination: Destination,
referrer: Referrer,
parser_metadata: ParserMetadata,
integrity_metadata: String,
credentials_mode: CredentialsMode,
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit 25080e3

Please sign in to comment.