diff options
author | Alan Jeffrey <ajeffrey@mozilla.com> | 2019-09-11 12:13:41 -0500 |
---|---|---|
committer | Alan Jeffrey <ajeffrey@mozilla.com> | 2019-09-11 12:13:41 -0500 |
commit | 2e6f14ffeae1a678bd8bba10e1ef14dba049bab6 (patch) | |
tree | b565cc8384e5c4218a9659f0eb0b028cb715989f /components/script/dom/servoparser | |
parent | 49a5e84fb12f86c470ee61a0249a7883f4bdb0a8 (diff) | |
download | servo-2e6f14ffeae1a678bd8bba10e1ef14dba049bab6.tar.gz servo-2e6f14ffeae1a678bd8bba10e1ef14dba049bab6.zip |
Responding to review comments
Diffstat (limited to 'components/script/dom/servoparser')
-rw-r--r-- | components/script/dom/servoparser/prefetch.rs | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/components/script/dom/servoparser/prefetch.rs b/components/script/dom/servoparser/prefetch.rs index b249c695ab2..a2977cc15b1 100644 --- a/components/script/dom/servoparser/prefetch.rs +++ b/components/script/dom/servoparser/prefetch.rs @@ -50,7 +50,8 @@ impl Tokenizer { let sink = PrefetchSink { origin: document.origin().immutable().clone(), pipeline_id: document.global().pipeline_id(), - base: document.url(), + base_url: None, + document_url: document.url(), referrer: Referrer::ReferrerUrl(document.url()), referrer_policy: document.get_referrer_policy(), resource_threads: document.loader().resource_threads().clone(), @@ -73,7 +74,8 @@ impl Tokenizer { struct PrefetchSink { origin: ImmutableOrigin, pipeline_id: PipelineId, - base: ServoUrl, + document_url: ServoUrl, + base_url: Option<ServoUrl>, referrer: Referrer, referrer_policy: Option<ReferrerPolicy>, resource_threads: ResourceThreads, @@ -166,8 +168,10 @@ impl TokenSink for PrefetchSink { }, (TagKind::StartTag, local_name!("base")) => { if let Some(url) = self.get_url(tag, local_name!("href")) { - debug!("Setting base {}", url); - self.base = url; + if self.base_url.is_none() { + debug!("Setting base {}", url); + self.base_url = Some(url); + } } TokenSinkResult::Continue }, @@ -182,8 +186,9 @@ impl PrefetchSink { } fn get_url(&self, tag: &Tag, name: LocalName) -> Option<ServoUrl> { - self.get_attr(tag, name) - .and_then(|attr| ServoUrl::parse_with_base(Some(&self.base), &attr.value).ok()) + let attr = self.get_attr(tag, name)?; + let base = self.base_url.as_ref().unwrap_or(&self.document_url); + ServoUrl::parse_with_base(Some(base), &attr.value).ok() } fn get_cors_settings(&self, tag: &Tag, name: LocalName) -> Option<CorsSettings> { |