commit 9f5c1f2e4b5b Author: Manish Goregaokar Date: Thu Aug 3 16:27:12 2017 -0500 servo: Merge #17969 - Update stylo code to work on nightly (from Manishearth:rustup); r=emilio r=emilio https://bugzilla.mozilla.org/show_bug.cgi?id=1386887 Source-Repo: https://github.com/servo/servo Source-Revision: 7cee7d7fcc4194e410fa8a308a77d37ac452778a --HG-- extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear extra : subtree_revision : d9c874ebcfa1e64c86265d0ed2e5cff65d9133be --- servo/components/style/gecko/generated/bindings.rs | 12 +++++++++--- servo/components/style/gecko/wrapper.rs | 7 ++++++- servo/ports/geckolib/glue.rs | 3 ++- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git servo/components/style/gecko/generated/bindings.rs servo/components/style/gecko/generated/bindings.rs index e46bdfe1e1ea..b6703ab95bf7 100644 --- servo/components/style/gecko/generated/bindings.rs +++ servo/components/style/gecko/generated/bindings.rs @@ -8,6 +8,7 @@ type nsAString_internal = nsAString; pub type ServoStyleContextBorrowed<'a> = &'a ::properties::ComputedValues; pub type ServoStyleContextBorrowedOrNull<'a> = Option<&'a ::properties::ComputedValues>; pub type ServoComputedDataBorrowed<'a> = &'a ServoComputedData; +pub type RawServoAnimationValueTableBorrowed<'a> = &'a (); use gecko_bindings::structs::mozilla::css::GridTemplateAreasValue; use gecko_bindings::structs::mozilla::css::ErrorReporter; use gecko_bindings::structs::mozilla::css::ImageValue; @@ -37,7 +38,7 @@ use gecko_bindings::structs::RawServoStyleRule; use gecko_bindings::structs::RawGeckoPresContext; use gecko_bindings::structs::RawGeckoPresContextOwned; use gecko_bindings::structs::RawGeckoStyleAnimationList; -use gecko_bindings::structs::RawGeckoStyleChildrenIteratorBorrowedMut; +use gecko_bindings::structs::RawGeckoStyleChildrenIterator; use gecko_bindings::structs::RawGeckoServoStyleRuleList; use gecko_bindings::structs::RawGeckoURLExtraData; use gecko_bindings::structs::RawGeckoXBLBinding; @@ -320,6 +321,10 @@ pub type RawGeckoServoAnimationValueListBorrowed<'a> = &'a RawGeckoServoAnimatio pub type RawGeckoServoAnimationValueListBorrowedOrNull<'a> = Option<&'a RawGeckoServoAnimationValueList>; pub type RawGeckoServoAnimationValueListBorrowedMut<'a> = &'a mut RawGeckoServoAnimationValueList; pub type RawGeckoServoAnimationValueListBorrowedMutOrNull<'a> = Option<&'a mut RawGeckoServoAnimationValueList>; +pub type RawGeckoStyleChildrenIteratorBorrowed<'a> = &'a RawGeckoStyleChildrenIterator; +pub type RawGeckoStyleChildrenIteratorBorrowedOrNull<'a> = Option<&'a RawGeckoStyleChildrenIterator>; +pub type RawGeckoStyleChildrenIteratorBorrowedMut<'a> = &'a mut RawGeckoStyleChildrenIterator; +pub type RawGeckoStyleChildrenIteratorBorrowedMutOrNull<'a> = Option<&'a mut RawGeckoStyleChildrenIterator>; pub type ServoCssRulesStrong = ::gecko_bindings::sugar::ownership::Strong; pub type ServoCssRulesBorrowed<'a> = &'a ServoCssRules; pub type ServoCssRulesBorrowedOrNull<'a> = Option<&'a ServoCssRules>; @@ -840,7 +845,7 @@ extern "C" { } extern "C" { pub fn Gecko_AnimationGetBaseStyle(aBaseStyles: - *mut ::std::os::raw::c_void, + RawServoAnimationValueTableBorrowed, aProperty: nsCSSPropertyID) -> RawServoAnimationValueBorrowedOrNull; } @@ -2602,7 +2607,8 @@ extern "C" { extern "C" { pub fn Servo_AnimationCompose(animation_values: RawServoAnimationValueMapBorrowedMut, - base_values: *mut ::std::os::raw::c_void, + base_values: + RawServoAnimationValueTableBorrowed, property: nsCSSPropertyID, animation_segment: RawGeckoAnimationPropertySegmentBorrowed, diff --git servo/components/style/gecko/wrapper.rs servo/components/style/gecko/wrapper.rs index dae898692313..6d62f54951cc 100644 --- servo/components/style/gecko/wrapper.rs +++ servo/components/style/gecko/wrapper.rs @@ -387,7 +387,12 @@ impl<'a> Iterator for GeckoChildrenIterator<'a> { curr }, GeckoChildrenIterator::GeckoIterator(ref mut it) => unsafe { - Gecko_GetNextStyleChild(it).map(GeckoNode) + // We do this unsafe lengthening of the lifetime here because + // structs::StyleChildrenIterator is actually StyleChildrenIterator<'a>, + // however we can't express this easily with bindgen, and it would + // introduce functions with two input lifetimes into bindgen, + // which would be out of scope for elision. + Gecko_GetNextStyleChild(&mut * (it as *mut _)).map(GeckoNode) } } } diff --git servo/ports/geckolib/glue.rs servo/ports/geckolib/glue.rs index 367d24ff87b2..e69959f3710b 100644 --- servo/ports/geckolib/glue.rs +++ servo/ports/geckolib/glue.rs @@ -59,6 +59,7 @@ use style::gecko_bindings::bindings::RawGeckoServoStyleRuleListBorrowedMut; use style::gecko_bindings::bindings::RawServoAnimationValueBorrowed; use style::gecko_bindings::bindings::RawServoAnimationValueMapBorrowedMut; use style::gecko_bindings::bindings::RawServoAnimationValueStrong; +use style::gecko_bindings::bindings::RawServoAnimationValueTableBorrowed; use style::gecko_bindings::bindings::RawServoStyleRuleBorrowed; use style::gecko_bindings::bindings::ServoStyleContextBorrowedOrNull; use style::gecko_bindings::bindings::nsTArrayBorrowed_uintptr_t; @@ -374,7 +375,7 @@ pub extern "C" fn Servo_AnimationValues_ComputeDistance(from: RawServoAnimationV #[no_mangle] pub extern "C" fn Servo_AnimationCompose(raw_value_map: RawServoAnimationValueMapBorrowedMut, - base_values: *mut ::std::os::raw::c_void, + base_values: RawServoAnimationValueTableBorrowed, css_property: nsCSSPropertyID, segment: RawGeckoAnimationPropertySegmentBorrowed, last_segment: RawGeckoAnimationPropertySegmentBorrowed,