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

@ -511,7 +511,7 @@ pub extern "C" fn Servo_StyleSheet_Empty(mode: SheetParsingMode) -> RawServoStyl
Arc::new(Stylesheet::from_str(
"", unsafe { dummy_url_data() }.clone(), origin,
Arc::new(shared_lock.wrap(MediaList::empty())),
shared_lock, None, &RustLogReporter, 0u64)
shared_lock, None, &RustLogReporter, QuirksMode::NoQuirks, Wh0u64)
).into_strong()
}
@ -554,7 +554,7 @@ pub extern "C" fn Servo_StyleSheet_FromUTF8Bytes(loader: *mut Loader,
Arc::new(Stylesheet::from_str(
input, url_data.clone(), origin, media,
shared_lock, loader, &RustLogReporter, 0u64)
shared_lock, loader, &RustLogReporter, QuirksMode::NoQuirks, 0u64)
).into_strong()
}
@ -1007,7 +1007,8 @@ pub extern "C" fn Servo_ParseProperty(property: nsCSSPropertyID, value: *const n
let url_data = unsafe { RefPtr::from_ptr_ref(&data) };
let reporter = RustLogReporter;
let context = ParserContext::new(Origin::Author, url_data, &reporter,
Some(CssRuleType::Style), LengthParsingMode::Default);
Some(CssRuleType::Style), LengthParsingMode::Default,
QuirksMode::NoQuirks);
match ParsedDeclaration::parse(id, &context, &mut Parser::new(value)) {
Ok(parsed) => {
@ -1030,7 +1031,8 @@ pub extern "C" fn Servo_ParseEasing(easing: *const nsAString,
let url_data = unsafe { RefPtr::from_ptr_ref(&data) };
let reporter = RustLogReporter;
let context = ParserContext::new(Origin::Author, url_data, &reporter,
Some(CssRuleType::Style), LengthParsingMode::Default);
Some(CssRuleType::Style), LengthParsingMode::Default,
QuirksMode::NoQuirks);
let easing = unsafe { (*easing).to_string() };
match transition_timing_function::single_value::parse(&context, &mut Parser::new(&easing)) {
Ok(parsed_easing) => {
@ -1171,7 +1173,7 @@ fn set_property(declarations: RawServoDeclarationBlockBorrowed, property_id: Pro
structs::LengthParsingMode::SVG => LengthParsingMode::SVG,
};
if let Ok(parsed) = parse_one_declaration(property_id, value, url_data, &RustLogReporter,
length_parsing_mode) {
length_parsing_mode, QuirksMode::NoQuirks) {
let importance = if is_important { Importance::Important } else { Importance::Normal };
write_locked_arc(declarations, |decls: &mut PropertyDeclarationBlock| {
parsed.expand_set_into(decls, importance)
@ -1238,7 +1240,7 @@ pub extern "C" fn Servo_MediaList_Matches(list: RawServoMediaListBorrowed,
-> bool {
let per_doc_data = PerDocumentStyleData::from_ffi(raw_data).borrow();
read_locked_arc(list, |list: &MediaList| {
list.evaluate(&per_doc_data.stylist.device)
list.evaluate(&per_doc_data.stylist.device, QuirksMode::NoQuirks)
})
}
@ -1265,7 +1267,8 @@ 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),
LengthParsingMode::Default);
LengthParsingMode::Default,
QuirksMode::NoQuirks);
write_locked_arc(list, |list: &mut MediaList| {
*list = parse_media_query_list(&context, &mut parser);
})
@ -1296,7 +1299,8 @@ 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),
LengthParsingMode::Default);
LengthParsingMode::Default,
QuirksMode::NoQuirks);
write_locked_arc(list, |list: &mut MediaList| {
list.append_medium(&context, new_medium);
})
@ -1309,7 +1313,8 @@ 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),
LengthParsingMode::Default);
LengthParsingMode::Default,
QuirksMode::NoQuirks);
write_locked_arc(list, |list: &mut MediaList| list.delete_medium(&context, old_medium))
}
@ -1662,7 +1667,8 @@ 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), LengthParsingMode::Default);
Some(CssRuleType::Style), LengthParsingMode::Default,
QuirksMode::NoQuirks);
if let Ok(url) = SpecifiedUrl::parse_from_string(string.into(), &context) {
let decl = PropertyDeclaration::BackgroundImage(BackgroundImage(
vec![SingleBackgroundImage(
@ -1700,7 +1706,12 @@ pub extern "C" fn Servo_CSSSupports2(property: *const nsACString, value: *const
let value = unsafe { value.as_ref().unwrap().as_str_unchecked() };
let url_data = unsafe { dummy_url_data() };
parse_one_declaration(id, &value, url_data, &RustLogReporter, LengthParsingMode::Default).is_ok()
parse_one_declaration(id,
&value,
url_data,
&RustLogReporter,
LengthParsingMode::Default,
QuirksMode::NoQuirks).is_ok()
}
#[no_mangle]
@ -1712,7 +1723,8 @@ 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),
LengthParsingMode::Default);
LengthParsingMode::Default,
QuirksMode::NoQuirks);
cond.eval(&context)
} else {
false
@ -1944,6 +1956,7 @@ pub extern "C" fn Servo_GetComputedKeyframeValues(keyframes: RawGeckoKeyframeLis
style: (**style).clone(),
font_metrics_provider: &metrics,
in_media_query: false,
quirks_mode: QuirksMode::NoQuirks,
};
for (index, keyframe) in keyframes.iter().enumerate() {