Propagate quirks mode all the way to ParserContext

The quirks mode is still not properly propagated in geckolib.
This commit is contained in:
Anthony Ramine 2017-04-23 11:07:48 +02:00
parent 10fb8e61c7
commit f68e2fded9
39 changed files with 225 additions and 100 deletions

View file

@ -6,6 +6,7 @@
#![deny(missing_docs)]
use context::QuirksMode;
use cssparser::{Parser, SourcePosition, UnicodeRange};
use error_reporting::ParseErrorReporter;
use style_traits::OneOrMoreCommaSeparated;
@ -44,6 +45,8 @@ pub struct ParserContext<'a> {
pub line_number_offset: u64,
/// The mode to use when parsing lengths.
pub length_parsing_mode: LengthParsingMode,
/// The quirks mode of this stylesheet.
pub quirks_mode: QuirksMode,
}
impl<'a> ParserContext<'a> {
@ -52,7 +55,8 @@ impl<'a> ParserContext<'a> {
url_data: &'a UrlExtraData,
error_reporter: &'a ParseErrorReporter,
rule_type: Option<CssRuleType>,
length_parsing_mode: LengthParsingMode)
length_parsing_mode: LengthParsingMode,
quirks_mode: QuirksMode)
-> ParserContext<'a> {
ParserContext {
stylesheet_origin: stylesheet_origin,
@ -61,6 +65,7 @@ impl<'a> ParserContext<'a> {
rule_type: rule_type,
line_number_offset: 0u64,
length_parsing_mode: length_parsing_mode,
quirks_mode: quirks_mode,
}
}
@ -68,9 +73,10 @@ impl<'a> ParserContext<'a> {
pub fn new_for_cssom(url_data: &'a UrlExtraData,
error_reporter: &'a ParseErrorReporter,
rule_type: Option<CssRuleType>,
length_parsing_mode: LengthParsingMode)
length_parsing_mode: LengthParsingMode,
quirks_mode: QuirksMode)
-> ParserContext<'a> {
Self::new(Origin::Author, url_data, error_reporter, rule_type, length_parsing_mode)
Self::new(Origin::Author, url_data, error_reporter, rule_type, length_parsing_mode, quirks_mode)
}
/// Create a parser context based on a previous context, but with a modified rule type.
@ -84,6 +90,7 @@ impl<'a> ParserContext<'a> {
rule_type: rule_type,
line_number_offset: context.line_number_offset,
length_parsing_mode: context.length_parsing_mode,
quirks_mode: context.quirks_mode,
}
}
@ -92,7 +99,8 @@ impl<'a> ParserContext<'a> {
url_data: &'a UrlExtraData,
error_reporter: &'a ParseErrorReporter,
line_number_offset: u64,
length_parsing_mode: LengthParsingMode)
length_parsing_mode: LengthParsingMode,
quirks_mode: QuirksMode)
-> ParserContext<'a> {
ParserContext {
stylesheet_origin: stylesheet_origin,
@ -101,6 +109,7 @@ impl<'a> ParserContext<'a> {
rule_type: None,
line_number_offset: line_number_offset,
length_parsing_mode: length_parsing_mode,
quirks_mode: quirks_mode,
}
}