Make ParsingMode bitflags.

assert_parsing_mode_match() is mostly the same as
assert_restyle_hints_match().
This commit is contained in:
Hiroyuki Ikezoe 2017-05-13 18:33:48 +09:00
parent fcc50ea421
commit b6b3187efa
19 changed files with 88 additions and 58 deletions

View file

@ -75,7 +75,7 @@ use style::gecko_properties::{self, style_structs};
use style::keyframes::KeyframesStepValue;
use style::media_queries::{MediaList, parse_media_query_list};
use style::parallel;
use style::parser::{ParsingMode, ParserContext};
use style::parser::{PARSING_MODE_DEFAULT, ParserContext};
use style::properties::{CascadeFlags, ComputedValues, Importance, ParsedDeclaration, StyleBuilder};
use style::properties::{LonghandIdSet, PropertyDeclarationBlock, PropertyId};
use style::properties::SKIP_ROOT_AND_ITEM_BASED_DISPLAY_FIXUP;
@ -115,6 +115,8 @@ static mut DUMMY_URL_DATA: *mut URLExtraData = 0 as *mut URLExtraData;
#[no_mangle]
pub extern "C" fn Servo_Initialize(dummy_url_data: *mut URLExtraData) {
use style::parser::assert_parsing_mode_match;
// Initialize logging.
let mut builder = LogBuilder::new();
let default_level = if cfg!(debug_assertions) { "warn" } else { "error" };
@ -128,6 +130,7 @@ pub extern "C" fn Servo_Initialize(dummy_url_data: *mut URLExtraData) {
// Perform some debug-only runtime assertions.
restyle_hints::assert_restyle_hints_match();
assert_parsing_mode_match();
// Initialize some static data.
gecko_properties::initialize();
@ -1134,12 +1137,11 @@ fn parse_property(property_id: PropertyId,
value: *const nsACString,
data: *mut URLExtraData,
parsing_mode: structs::ParsingMode) -> Result<ParsedDeclaration, ()> {
use style::parser::ParsingMode;
let value = unsafe { value.as_ref().unwrap().as_str_unchecked() };
let url_data = unsafe { RefPtr::from_ptr_ref(&data) };
let parsing_mode = match parsing_mode {
structs::ParsingMode::Default => ParsingMode::Default,
structs::ParsingMode::AllowUnitlessLength => ParsingMode::AllowUnitlessLength,
};
let parsing_mode = ParsingMode::from_bits_truncate(parsing_mode);
parse_one_declaration(property_id,
value,
@ -1180,7 +1182,7 @@ pub extern "C" fn Servo_ParseEasing(easing: *const nsAString,
url_data,
&reporter,
Some(CssRuleType::Style),
ParsingMode::Default,
PARSING_MODE_DEFAULT,
QuirksMode::NoQuirks);
let easing = unsafe { (*easing).to_string() };
match transition_timing_function::single_value::parse(&context, &mut Parser::new(&easing)) {
@ -1410,7 +1412,7 @@ pub extern "C" fn Servo_MediaList_SetText(list: RawServoMediaListBorrowed, text:
let url_data = unsafe { dummy_url_data() };
let reporter = RustLogReporter;
let context = ParserContext::new_for_cssom(url_data, &reporter, Some(CssRuleType::Media),
ParsingMode::Default,
PARSING_MODE_DEFAULT,
QuirksMode::NoQuirks);
write_locked_arc(list, |list: &mut MediaList| {
*list = parse_media_query_list(&context, &mut parser);
@ -1442,7 +1444,7 @@ pub extern "C" fn Servo_MediaList_AppendMedium(list: RawServoMediaListBorrowed,
let url_data = unsafe { dummy_url_data() };
let reporter = RustLogReporter;
let context = ParserContext::new_for_cssom(url_data, &reporter, Some(CssRuleType::Media),
ParsingMode::Default,
PARSING_MODE_DEFAULT,
QuirksMode::NoQuirks);
write_locked_arc(list, |list: &mut MediaList| {
list.append_medium(&context, new_medium);
@ -1456,7 +1458,7 @@ pub extern "C" fn Servo_MediaList_DeleteMedium(list: RawServoMediaListBorrowed,
let url_data = unsafe { dummy_url_data() };
let reporter = RustLogReporter;
let context = ParserContext::new_for_cssom(url_data, &reporter, Some(CssRuleType::Media),
ParsingMode::Default,
PARSING_MODE_DEFAULT,
QuirksMode::NoQuirks);
write_locked_arc(list, |list: &mut MediaList| list.delete_medium(&context, old_medium))
}
@ -1810,7 +1812,7 @@ pub extern "C" fn Servo_DeclarationBlock_SetBackgroundImage(declarations:
let string = unsafe { (*value).to_string() };
let error_reporter = RustLogReporter;
let context = ParserContext::new(Origin::Author, url_data, &error_reporter,
Some(CssRuleType::Style), ParsingMode::Default,
Some(CssRuleType::Style), PARSING_MODE_DEFAULT,
QuirksMode::NoQuirks);
if let Ok(url) = SpecifiedUrl::parse_from_string(string.into(), &context) {
let decl = PropertyDeclaration::BackgroundImage(BackgroundImage(
@ -1842,7 +1844,7 @@ pub extern "C" fn Servo_DeclarationBlock_SetTextDecorationColorOverride(declarat
pub extern "C" fn Servo_CSSSupports2(property: *const nsACString, value: *const nsACString) -> bool {
let id = get_property_id_from_property!(property, false);
parse_property(id, value, unsafe { DUMMY_URL_DATA }, structs::ParsingMode::Default).is_ok()
parse_property(id, value, unsafe { DUMMY_URL_DATA }, structs::ParsingMode_Default).is_ok()
}
#[no_mangle]
@ -1854,7 +1856,7 @@ pub extern "C" fn Servo_CSSSupports(cond: *const nsACString) -> bool {
let url_data = unsafe { dummy_url_data() };
let reporter = RustLogReporter;
let context = ParserContext::new_for_cssom(url_data, &reporter, Some(CssRuleType::Style),
ParsingMode::Default,
PARSING_MODE_DEFAULT,
QuirksMode::NoQuirks);
cond.eval(&context)
} else {