stylo: Fix propagation of quirks mode information to servo side

It was getting inial value from gecko side before and that was always
eCompatibility_NavQuirks. Created an FFI to fetch quirks mode.
This commit is contained in:
Nazım Can Altınova 2017-06-10 17:22:23 +03:00
parent 15fe48f3f6
commit 309531e5b3
No known key found for this signature in database
GPG key ID: AF9BCD7CE6449954
2 changed files with 20 additions and 0 deletions

View file

@ -1874,6 +1874,10 @@ extern "C" {
pub fn Servo_StyleSet_MediumFeaturesChanged(set: RawServoStyleSetBorrowed)
-> bool;
}
extern "C" {
pub fn Servo_StyleSet_CompatModeChanged(raw_data:
RawServoStyleSetBorrowed);
}
extern "C" {
pub fn Servo_StyleSet_AppendStyleSheet(set: RawServoStyleSetBorrowed,
sheet: RawServoStyleSheetBorrowed,

View file

@ -81,6 +81,7 @@ use style::gecko_bindings::structs::StyleRuleInclusion;
use style::gecko_bindings::structs::URLExtraData;
use style::gecko_bindings::structs::nsCSSValueSharedList;
use style::gecko_bindings::structs::nsCompatibility;
use style::gecko_bindings::structs::nsIDocument;
use style::gecko_bindings::structs::nsStyleTransformMatrix::MatrixTransformOperator;
use style::gecko_bindings::structs::nsresult;
use style::gecko_bindings::sugar::ownership::{FFIArcHelpers, HasFFI, HasArcFFI, HasBoxFFI};
@ -1546,6 +1547,21 @@ pub extern "C" fn Servo_StyleSet_Drop(data: RawServoStyleSetOwned) {
let _ = data.into_box::<PerDocumentStyleData>();
}
/// Updating the stylesheets and redoing selector matching is always happens
/// before the document element is inserted. Therefore we don't need to call
/// `force_dirty` here.
#[no_mangle]
pub extern "C" fn Servo_StyleSet_CompatModeChanged(raw_data: RawServoStyleSetBorrowed) {
let mut data = PerDocumentStyleData::from_ffi(raw_data).borrow_mut();
let quirks_mode = unsafe {
(*(*data.stylist.device().pres_context).mDocument
.raw::<nsIDocument>()).mCompatMode
};
data.stylist.set_quirks_mode(quirks_mode.into());
}
fn parse_property_into(declarations: &mut SourcePropertyDeclaration,
property_id: PropertyId,
value: *const nsACString,