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" {
pub fn Servo_ResolveStyle(element: RawGeckoElementBorrowed,
set: RawServoStyleSetBorrowed)
set: RawServoStyleSetBorrowed,
allow_stale: bool)
-> ServoComputedValuesStrong;
}
extern "C" {

View file

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