aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/servoparser
diff options
context:
space:
mode:
authorAlan Jeffrey <ajeffrey@mozilla.com>2019-09-11 12:13:41 -0500
committerAlan Jeffrey <ajeffrey@mozilla.com>2019-09-11 12:13:41 -0500
commit2e6f14ffeae1a678bd8bba10e1ef14dba049bab6 (patch)
treeb565cc8384e5c4218a9659f0eb0b028cb715989f /components/script/dom/servoparser
parent49a5e84fb12f86c470ee61a0249a7883f4bdb0a8 (diff)
downloadservo-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.rs17
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> {