Bug 1298588 part 7, servo piece. Stop using initial_values in general in Gecko glue code. r=bholley

This commit is contained in:
Boris Zbarsky 2017-01-04 13:45:15 -05:00
parent c313c8d17e
commit d3e34db508
2 changed files with 6 additions and 3 deletions

View file

@ -1387,6 +1387,7 @@ extern "C" {
} }
extern "C" { extern "C" {
pub fn Servo_ResolveStyle(element: RawGeckoElementBorrowed, pub fn Servo_ResolveStyle(element: RawGeckoElementBorrowed,
set: RawServoStyleSetBorrowed,
consume: ConsumeStyleBehavior) consume: ConsumeStyleBehavior)
-> ServoComputedValuesStrong; -> ServoComputedValuesStrong;
} }

View file

@ -544,6 +544,7 @@ pub extern "C" fn Servo_ResolvePseudoStyle(element: RawGeckoElementBorrowed,
{ {
let element = GeckoElement(element); let element = GeckoElement(element);
let data = unsafe { element.ensure_data() }.borrow_mut(); let data = unsafe { element.ensure_data() }.borrow_mut();
let doc_data = PerDocumentStyleData::from_ffi(raw_data);
// FIXME(bholley): Assert against this. // FIXME(bholley): Assert against this.
if data.get_styles().is_none() { if data.get_styles().is_none() {
@ -551,11 +552,10 @@ pub extern "C" fn Servo_ResolvePseudoStyle(element: RawGeckoElementBorrowed,
return if is_probe { return if is_probe {
Strong::null() Strong::null()
} else { } else {
Arc::new(ComputedValues::initial_values().clone()).into_strong() doc_data.borrow().default_computed_values.clone().into_strong()
}; };
} }
let doc_data = PerDocumentStyleData::from_ffi(raw_data);
match get_pseudo_style(element, pseudo_tag, data.styles(), doc_data) { match get_pseudo_style(element, pseudo_tag, data.styles(), doc_data) {
Some(values) => values.into_strong(), Some(values) => values.into_strong(),
None if !is_probe => data.styles().primary.values.clone().into_strong(), None if !is_probe => data.styles().primary.values.clone().into_strong(),
@ -942,6 +942,7 @@ pub extern "C" fn Servo_CheckChangeHint(element: RawGeckoElementBorrowed) -> nsC
#[no_mangle] #[no_mangle]
pub extern "C" fn Servo_ResolveStyle(element: RawGeckoElementBorrowed, pub extern "C" fn Servo_ResolveStyle(element: RawGeckoElementBorrowed,
raw_data: RawServoStyleSetBorrowed,
consume: structs::ConsumeStyleBehavior) consume: structs::ConsumeStyleBehavior)
-> ServoComputedValuesStrong -> ServoComputedValuesStrong
{ {
@ -949,10 +950,11 @@ pub extern "C" fn Servo_ResolveStyle(element: RawGeckoElementBorrowed,
debug!("Servo_ResolveStyle: {:?}, consume={:?}", element, consume); debug!("Servo_ResolveStyle: {:?}, consume={:?}", element, consume);
let mut data = unsafe { element.ensure_data() }.borrow_mut(); let mut data = unsafe { element.ensure_data() }.borrow_mut();
let per_doc_data = PerDocumentStyleData::from_ffi(raw_data).borrow();
if !data.has_current_styles() { if !data.has_current_styles() {
error!("Resolving style on unstyled element with lazy computation forbidden."); error!("Resolving style on unstyled element with lazy computation forbidden.");
return Arc::new(ComputedValues::initial_values().clone()).into_strong(); return per_doc_data.default_computed_values.clone().into_strong();
} }
let values = data.styles().primary.values.clone(); let values = data.styles().primary.values.clone();