diff options
Diffstat (limited to 'components/style/parser.rs')
-rw-r--r-- | components/style/parser.rs | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/components/style/parser.rs b/components/style/parser.rs index b044367e8dd..eadb778db55 100644 --- a/components/style/parser.rs +++ b/components/style/parser.rs @@ -5,20 +5,47 @@ use cssparser::{Parser, SourcePosition}; use error_reporting::ParseErrorReporter; +#[cfg(feature = "gecko")] +use gecko_bindings::ptr::{GeckoArcPrincipal, GeckoArcURI}; use selectors::parser::ParserContext as SelectorParserContext; use stylesheets::Origin; use url::Url; +#[cfg(not(feature = "gecko"))] +pub struct ParserContextExtraData; + +#[cfg(feature = "gecko")] +pub struct ParserContextExtraData { + pub base: Option<GeckoArcURI>, + pub referrer: Option<GeckoArcURI>, + pub principal: Option<GeckoArcPrincipal>, +} + +impl ParserContextExtraData { + #[cfg(not(feature = "gecko"))] + pub fn default() -> ParserContextExtraData { + ParserContextExtraData + } + + #[cfg(feature = "gecko")] + pub fn default() -> ParserContextExtraData { + ParserContextExtraData { base: None, referrer: None, principal: None } + } +} + pub struct ParserContext<'a> { pub stylesheet_origin: Origin, pub base_url: &'a Url, pub selector_context: SelectorParserContext, pub error_reporter: Box<ParseErrorReporter + Send>, + pub extra_data: ParserContextExtraData, } impl<'a> ParserContext<'a> { - pub fn new(stylesheet_origin: Origin, base_url: &'a Url, error_reporter: Box<ParseErrorReporter + Send>) - -> ParserContext<'a> { + pub fn new_with_extra_data(stylesheet_origin: Origin, base_url: &'a Url, + error_reporter: Box<ParseErrorReporter + Send>, + extra_data: ParserContextExtraData) + -> ParserContext<'a> { let mut selector_context = SelectorParserContext::new(); selector_context.in_user_agent_stylesheet = stylesheet_origin == Origin::UserAgent; ParserContext { @@ -26,8 +53,15 @@ impl<'a> ParserContext<'a> { base_url: base_url, selector_context: selector_context, error_reporter: error_reporter, + extra_data: extra_data, } } + + pub fn new(stylesheet_origin: Origin, base_url: &'a Url, error_reporter: Box<ParseErrorReporter + Send>) + -> ParserContext<'a> { + let extra_data = ParserContextExtraData::default(); + ParserContext::new_with_extra_data(stylesheet_origin, base_url, error_reporter, extra_data) + } } |