diff options
-rw-r--r-- | components/style/gecko/media_queries.rs | 13 | ||||
-rw-r--r-- | components/style/parser.rs | 5 |
2 files changed, 16 insertions, 2 deletions
diff --git a/components/style/gecko/media_queries.rs b/components/style/gecko/media_queries.rs index ca967a866c0..e0be4e7423f 100644 --- a/components/style/gecko/media_queries.rs +++ b/components/style/gecko/media_queries.rs @@ -32,6 +32,7 @@ use string_cache::Atom; use style_traits::{CSSPixel, DevicePixel}; use style_traits::{ToCss, ParseError, StyleParseError}; use style_traits::viewport::ViewportConstraints; +use stylesheets::Origin; use values::{CSSFloat, CustomIdent, serialize_dimension}; use values::computed::{self, ToComputedValue}; use values::specified::Length; @@ -584,8 +585,10 @@ impl Expression { /// ``` /// (media-feature: media-value) /// ``` - pub fn parse<'i, 't>(context: &ParserContext, input: &mut Parser<'i, 't>) - -> Result<Self, ParseError<'i>> { + pub fn parse<'i, 't>( + context: &ParserContext, + input: &mut Parser<'i, 't>, + ) -> Result<Self, ParseError<'i>> { input.expect_parenthesis_block().map_err(|err| match err { BasicParseError::UnexpectedToken(t) => StyleParseError::ExpectedIdentifier(t), @@ -606,6 +609,12 @@ impl Expression { )?; let mut flags = 0; + + if context.in_chrome_stylesheet() || + context.stylesheet_origin == Origin::UserAgent { + flags |= nsMediaFeature_RequirementFlags::eUserAgentAndChromeOnly as u8; + } + let result = { let mut feature_name = &**ident; diff --git a/components/style/parser.rs b/components/style/parser.rs index 20ea720f613..6e08d937b76 100644 --- a/components/style/parser.rs +++ b/components/style/parser.rs @@ -130,6 +130,11 @@ impl<'a> ParserContext<'a> { }; context.error_reporter.report_error(self.url_data, location, error) } + + /// Returns whether this is a chrome stylesheets. + pub fn in_chrome_stylesheet(&self) -> bool { + self.url_data.is_chrome() + } } // XXXManishearth Replace all specified value parse impls with impls of this |