stylo: Add argument to Servo_ResolveStyle to allow stale styles to be returned.

This commit is contained in:
Cameron McCormack 2017-03-28 15:32:35 +08:00
parent 0ebb9ec9e8
commit 13c49606a4
2 changed files with 12 additions and 4 deletions

View file

@ -1812,7 +1812,8 @@ extern "C" {
} }
extern "C" { extern "C" {
pub fn Servo_ResolveStyle(element: RawGeckoElementBorrowed, pub fn Servo_ResolveStyle(element: RawGeckoElementBorrowed,
set: RawServoStyleSetBorrowed) set: RawServoStyleSetBorrowed,
allow_stale: bool)
-> ServoComputedValuesStrong; -> ServoComputedValuesStrong;
} }
extern "C" { extern "C" {

View file

@ -1473,15 +1473,22 @@ pub extern "C" fn Servo_TakeChangeHint(element: RawGeckoElementBorrowed) -> nsCh
#[no_mangle] #[no_mangle]
pub extern "C" fn Servo_ResolveStyle(element: RawGeckoElementBorrowed, pub extern "C" fn Servo_ResolveStyle(element: RawGeckoElementBorrowed,
raw_data: RawServoStyleSetBorrowed) raw_data: RawServoStyleSetBorrowed,
allow_stale: bool)
-> ServoComputedValuesStrong -> ServoComputedValuesStrong
{ {
let element = GeckoElement(element); let element = GeckoElement(element);
debug!("Servo_ResolveStyle: {:?}", element); debug!("Servo_ResolveStyle: {:?}", element);
let data = unsafe { element.ensure_data() }.borrow_mut(); let data = unsafe { element.ensure_data() }.borrow_mut();
if !data.has_current_styles() { let valid_styles = if allow_stale {
warn!("Resolving style on unstyled element with lazy computation forbidden."); data.has_styles()
} else {
data.has_current_styles()
};
if !valid_styles {
warn!("Resolving style on element without current styles with lazy computation forbidden.");
let per_doc_data = PerDocumentStyleData::from_ffi(raw_data).borrow(); let per_doc_data = PerDocumentStyleData::from_ffi(raw_data).borrow();
return per_doc_data.default_computed_values().clone().into_strong(); return per_doc_data.default_computed_values().clone().into_strong();
} }