aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmllinkelement.rs
diff options
context:
space:
mode:
authorJ. Ryan Stinnett <jryans@gmail.com>2017-04-11 16:00:37 +0800
committerJ. Ryan Stinnett <jryans@gmail.com>2017-04-12 16:40:48 +0800
commit1a31b87c22adbd2b7a7350500e089fad3fa49453 (patch)
treeec991601022825c1534b2d7a265c735febfef067 /components/script/dom/htmllinkelement.rs
parent1ae1d370f23d5b74902a1f7dc87421e516b5ac2e (diff)
downloadservo-1a31b87c22adbd2b7a7350500e089fad3fa49453.tar.gz
servo-1a31b87c22adbd2b7a7350500e089fad3fa49453.zip
Pass ParserContext down to lengths
To make it possible to check the rule type when parsing lengths, we need to pass the `ParserContext` down through many layers to the place where length units are parsed. This change leaves it unused, so it's only to prepare for the next change. MozReview-Commit-ID: 70YwtcCxnWw
Diffstat (limited to 'components/script/dom/htmllinkelement.rs')
-rw-r--r--components/script/dom/htmllinkelement.rs12
1 files changed, 8 insertions, 4 deletions
diff --git a/components/script/dom/htmllinkelement.rs b/components/script/dom/htmllinkelement.rs
index d29a94a11f0..d22a24d2e17 100644
--- a/components/script/dom/htmllinkelement.rs
+++ b/components/script/dom/htmllinkelement.rs
@@ -32,8 +32,9 @@ use std::default::Default;
use std::sync::Arc;
use style::attr::AttrValue;
use style::media_queries::parse_media_query_list;
+use style::parser::ParserContext as CssParserContext;
use style::str::HTML_SPACE_CHARACTERS;
-use style::stylesheets::Stylesheet;
+use style::stylesheets::{CssRuleType, Stylesheet};
use stylesheet_loader::{StylesheetLoader, StylesheetContextSource, StylesheetOwner};
unsafe_no_jsmanaged_fields!(Stylesheet);
@@ -255,7 +256,7 @@ impl HTMLLinkElement {
}
// Step 2.
- let url = match document.base_url().join(href) {
+ let link_url = match document.base_url().join(href) {
Ok(url) => url,
Err(e) => {
debug!("Parsing url {} failed: {}", href, e);
@@ -276,7 +277,10 @@ impl HTMLLinkElement {
};
let mut css_parser = CssParser::new(&mq_str);
- let media = parse_media_query_list(&mut css_parser);
+ let win = document.window();
+ let doc_url = document.url();
+ let context = CssParserContext::new_for_cssom(&doc_url, win.css_error_reporter(), Some(CssRuleType::Media));
+ let media = parse_media_query_list(&context, &mut css_parser);
let im_attribute = element.get_attribute(&ns!(), &local_name!("integrity"));
let integrity_val = im_attribute.r().map(|a| a.value());
@@ -292,7 +296,7 @@ impl HTMLLinkElement {
let loader = StylesheetLoader::for_element(self.upcast());
loader.load(StylesheetContextSource::LinkElement {
media: Some(media),
- }, url, cors_setting, integrity_metadata.to_owned());
+ }, link_url, cors_setting, integrity_metadata.to_owned());
}
fn handle_favicon_url(&self, rel: &str, href: &str, sizes: &Option<String>) {