Add support for iteration composite modes

This commit is contained in:
Brian Birtles 2017-05-23 15:21:05 +09:00
parent a408fd41df
commit af919f4433
4 changed files with 523 additions and 203 deletions

View file

@ -36,6 +36,7 @@ use gecko_bindings::structs::FontFamilyList;
use gecko_bindings::structs::FontFamilyType; use gecko_bindings::structs::FontFamilyType;
use gecko_bindings::structs::FontSizePrefs; use gecko_bindings::structs::FontSizePrefs;
use gecko_bindings::structs::GeckoFontMetrics; use gecko_bindings::structs::GeckoFontMetrics;
use gecko_bindings::structs::IterationCompositeOperation;
use gecko_bindings::structs::Keyframe; use gecko_bindings::structs::Keyframe;
use gecko_bindings::structs::ServoBundledURI; use gecko_bindings::structs::ServoBundledURI;
use gecko_bindings::structs::ServoElementSnapshot; use gecko_bindings::structs::ServoElementSnapshot;
@ -2261,8 +2262,12 @@ extern "C" {
property: nsCSSPropertyID, property: nsCSSPropertyID,
animation_segment: animation_segment:
RawGeckoAnimationPropertySegmentBorrowed, RawGeckoAnimationPropertySegmentBorrowed,
last_segment:
RawGeckoAnimationPropertySegmentBorrowed,
computed_timing: computed_timing:
RawGeckoComputedTimingBorrowed); RawGeckoComputedTimingBorrowed,
iteration_composite:
IterationCompositeOperation);
} }
extern "C" { extern "C" {
pub fn Servo_DeclarationBlock_PropertyIsSet(declarations: pub fn Servo_DeclarationBlock_PropertyIsSet(declarations:

View file

@ -3340,6 +3340,13 @@ pub mod root {
} }
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]
pub struct NonNull<T> {
pub ptr: *mut T,
pub inited: bool,
pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct Sequence { pub struct Sequence {
} }
#[repr(C)] #[repr(C)]
@ -5058,6 +5065,93 @@ pub mod root {
} }
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]
pub struct CSSPseudoElement {
_unused: [u8; 0],
}
#[repr(u8)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum IterationCompositeOperation {
Replace = 0,
Accumulate = 1,
EndGuard_ = 2,
}
#[repr(C)]
#[derive(Debug)]
pub struct ElementOrCSSPseudoElement {
pub mType: root::mozilla::dom::ElementOrCSSPseudoElement_Type,
pub mValue: root::mozilla::dom::ElementOrCSSPseudoElement_Value,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum ElementOrCSSPseudoElement_Type {
eUninitialized = 0,
eElement = 1,
eCSSPseudoElement = 2,
}
#[repr(C)]
#[derive(Debug, Copy)]
pub struct ElementOrCSSPseudoElement_Value {
pub mElement: root::__BindgenUnionField<root::mozilla::dom::UnionMember>,
pub mCSSPseudoElement: root::__BindgenUnionField<root::mozilla::dom::UnionMember>,
pub bindgen_union_field: [u64; 2usize],
}
#[test]
fn bindgen_test_layout_ElementOrCSSPseudoElement_Value() {
assert_eq!(::std::mem::size_of::<ElementOrCSSPseudoElement_Value>()
, 16usize , concat ! (
"Size of: " , stringify ! (
ElementOrCSSPseudoElement_Value ) ));
assert_eq! (::std::mem::align_of::<ElementOrCSSPseudoElement_Value>()
, 8usize , concat ! (
"Alignment of " , stringify ! (
ElementOrCSSPseudoElement_Value ) ));
assert_eq! (unsafe {
& (
* ( 0 as * const ElementOrCSSPseudoElement_Value )
) . mElement as * const _ as usize } , 0usize ,
concat ! (
"Alignment of field: " , stringify ! (
ElementOrCSSPseudoElement_Value ) , "::" ,
stringify ! ( mElement ) ));
assert_eq! (unsafe {
& (
* ( 0 as * const ElementOrCSSPseudoElement_Value )
) . mCSSPseudoElement as * const _ as usize } ,
0usize , concat ! (
"Alignment of field: " , stringify ! (
ElementOrCSSPseudoElement_Value ) , "::" ,
stringify ! ( mCSSPseudoElement ) ));
}
impl Clone for ElementOrCSSPseudoElement_Value {
fn clone(&self) -> Self { *self }
}
#[test]
fn bindgen_test_layout_ElementOrCSSPseudoElement() {
assert_eq!(::std::mem::size_of::<ElementOrCSSPseudoElement>()
, 24usize , concat ! (
"Size of: " , stringify ! (
ElementOrCSSPseudoElement ) ));
assert_eq! (::std::mem::align_of::<ElementOrCSSPseudoElement>()
, 8usize , concat ! (
"Alignment of " , stringify ! (
ElementOrCSSPseudoElement ) ));
assert_eq! (unsafe {
& ( * ( 0 as * const ElementOrCSSPseudoElement ) )
. mType as * const _ as usize } , 0usize , concat
! (
"Alignment of field: " , stringify ! (
ElementOrCSSPseudoElement ) , "::" , stringify ! (
mType ) ));
assert_eq! (unsafe {
& ( * ( 0 as * const ElementOrCSSPseudoElement ) )
. mValue as * const _ as usize } , 8usize , concat
! (
"Alignment of field: " , stringify ! (
ElementOrCSSPseudoElement ) , "::" , stringify ! (
mValue ) ));
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct CustomElementData { pub struct CustomElementData {
_unused: [u8; 0], _unused: [u8; 0],
} }
@ -5681,11 +5775,6 @@ pub mod root {
} }
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]
pub struct ElementOrCSSPseudoElement {
_unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct UnrestrictedDoubleOrKeyframeAnimationOptions { pub struct UnrestrictedDoubleOrKeyframeAnimationOptions {
_unused: [u8; 0], _unused: [u8; 0],
} }
@ -34242,7 +34331,7 @@ pub mod root {
root::nsCharTraits ) )); root::nsCharTraits ) ));
} }
#[test] #[test]
fn __bindgen_test_layout__bindgen_ty_id_210525_instantiation_99() { fn __bindgen_test_layout__bindgen_ty_id_211408_instantiation_99() {
assert_eq!(::std::mem::size_of::<u8>() , 1usize , concat ! ( assert_eq!(::std::mem::size_of::<u8>() , 1usize , concat ! (
"Size of template specialization: " , stringify ! ( u8 ) "Size of template specialization: " , stringify ! ( u8 )
)); ));
@ -34251,7 +34340,7 @@ pub mod root {
) )); ) ));
} }
#[test] #[test]
fn __bindgen_test_layout__bindgen_ty_id_210561_instantiation_100() { fn __bindgen_test_layout__bindgen_ty_id_211444_instantiation_100() {
assert_eq!(::std::mem::size_of::<u8>() , 1usize , concat ! ( assert_eq!(::std::mem::size_of::<u8>() , 1usize , concat ! (
"Size of template specialization: " , stringify ! ( u8 ) "Size of template specialization: " , stringify ! ( u8 )
)); ));
@ -36815,7 +36904,55 @@ pub mod root {
root::mozilla::UniquePtr<root::nsCSSValuePairList> ) )); root::mozilla::UniquePtr<root::nsCSSValuePairList> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_Maybe_instantiation_332() { fn __bindgen_test_layout_NonNull_instantiation_332() {
assert_eq!(::std::mem::size_of::<root::mozilla::dom::NonNull<root::mozilla::dom::Element>>()
, 16usize , concat ! (
"Size of template specialization: " , stringify ! (
root::mozilla::dom::NonNull<root::mozilla::dom::Element> )
));
assert_eq!(::std::mem::align_of::<root::mozilla::dom::NonNull<root::mozilla::dom::Element>>()
, 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
root::mozilla::dom::NonNull<root::mozilla::dom::Element> )
));
}
#[test]
fn __bindgen_test_layout_NonNull_instantiation_333() {
assert_eq!(::std::mem::size_of::<root::mozilla::dom::NonNull<root::mozilla::dom::CSSPseudoElement>>()
, 16usize , concat ! (
"Size of template specialization: " , stringify ! (
root::mozilla::dom::NonNull<root::mozilla::dom::CSSPseudoElement>
) ));
assert_eq!(::std::mem::align_of::<root::mozilla::dom::NonNull<root::mozilla::dom::CSSPseudoElement>>()
, 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
root::mozilla::dom::NonNull<root::mozilla::dom::CSSPseudoElement>
) ));
}
#[test]
fn __bindgen_test_layout_Handle_instantiation_334() {
assert_eq!(::std::mem::size_of::<root::JS::Handle<*mut root::JSObject>>()
, 8usize , concat ! (
"Size of template specialization: " , stringify ! (
root::JS::Handle<*mut root::JSObject> ) ));
assert_eq!(::std::mem::align_of::<root::JS::Handle<*mut root::JSObject>>()
, 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
root::JS::Handle<*mut root::JSObject> ) ));
}
#[test]
fn __bindgen_test_layout_MutableHandle_instantiation_335() {
assert_eq!(::std::mem::size_of::<root::JS::MutableHandle<root::JS::Value>>()
, 8usize , concat ! (
"Size of template specialization: " , stringify ! (
root::JS::MutableHandle<root::JS::Value> ) ));
assert_eq!(::std::mem::align_of::<root::JS::MutableHandle<root::JS::Value>>()
, 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
root::JS::MutableHandle<root::JS::Value> ) ));
}
#[test]
fn __bindgen_test_layout_Maybe_instantiation_336() {
assert_eq!(::std::mem::size_of::<[u64; 18usize]>() , 144usize , concat assert_eq!(::std::mem::size_of::<[u64; 18usize]>() , 144usize , concat
! ( ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36826,7 +36963,7 @@ pub mod root {
[u64; 18usize] ) )); [u64; 18usize] ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_Maybe_instantiation_333() { fn __bindgen_test_layout_Maybe_instantiation_337() {
assert_eq!(::std::mem::size_of::<[u64; 18usize]>() , 144usize , concat assert_eq!(::std::mem::size_of::<[u64; 18usize]>() , 144usize , concat
! ( ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36837,7 +36974,7 @@ pub mod root {
[u64; 18usize] ) )); [u64; 18usize] ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_BaseTimeDuration_instantiation_334() { fn __bindgen_test_layout_BaseTimeDuration_instantiation_338() {
assert_eq!(::std::mem::size_of::<root::mozilla::BaseTimeDuration>() , assert_eq!(::std::mem::size_of::<root::mozilla::BaseTimeDuration>() ,
8usize , concat ! ( 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36848,7 +36985,7 @@ pub mod root {
root::mozilla::BaseTimeDuration ) )); root::mozilla::BaseTimeDuration ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_already_AddRefed_instantiation_335() { fn __bindgen_test_layout_already_AddRefed_instantiation_339() {
assert_eq!(::std::mem::size_of::<root::already_AddRefed<root::mozilla::dom::NodeInfo>>() assert_eq!(::std::mem::size_of::<root::already_AddRefed<root::mozilla::dom::NodeInfo>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36859,7 +36996,7 @@ pub mod root {
root::already_AddRefed<root::mozilla::dom::NodeInfo> ) )); root::already_AddRefed<root::mozilla::dom::NodeInfo> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_already_AddRefed_instantiation_336() { fn __bindgen_test_layout_already_AddRefed_instantiation_340() {
assert_eq!(::std::mem::size_of::<root::already_AddRefed<root::mozilla::dom::NodeInfo>>() assert_eq!(::std::mem::size_of::<root::already_AddRefed<root::mozilla::dom::NodeInfo>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36870,7 +37007,7 @@ pub mod root {
root::already_AddRefed<root::mozilla::dom::NodeInfo> ) )); root::already_AddRefed<root::mozilla::dom::NodeInfo> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_nsTArray_instantiation_337() { fn __bindgen_test_layout_nsTArray_instantiation_341() {
assert_eq!(::std::mem::size_of::<root::nsTArray<*mut root::nsIContent>>() assert_eq!(::std::mem::size_of::<root::nsTArray<*mut root::nsIContent>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36881,7 +37018,7 @@ pub mod root {
root::nsTArray<*mut root::nsIContent> ) )); root::nsTArray<*mut root::nsIContent> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_nsTArray_instantiation_338() { fn __bindgen_test_layout_nsTArray_instantiation_342() {
assert_eq!(::std::mem::size_of::<root::nsTArray<*mut root::nsIContent>>() assert_eq!(::std::mem::size_of::<root::nsTArray<*mut root::nsIContent>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36892,7 +37029,7 @@ pub mod root {
root::nsTArray<*mut root::nsIContent> ) )); root::nsTArray<*mut root::nsIContent> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_nsCOMPtr_instantiation_339() { fn __bindgen_test_layout_nsCOMPtr_instantiation_343() {
assert_eq!(::std::mem::size_of::<root::nsCOMPtr<root::nsIContent>>() , assert_eq!(::std::mem::size_of::<root::nsCOMPtr<root::nsIContent>>() ,
8usize , concat ! ( 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36903,7 +37040,7 @@ pub mod root {
root::nsCOMPtr<root::nsIContent> ) )); root::nsCOMPtr<root::nsIContent> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_nsRefPtrHashKey_instantiation_340() { fn __bindgen_test_layout_nsRefPtrHashKey_instantiation_344() {
assert_eq!(::std::mem::size_of::<root::nsRefPtrHashKey<root::mozilla::dom::DOMIntersectionObserver>>() assert_eq!(::std::mem::size_of::<root::nsRefPtrHashKey<root::mozilla::dom::DOMIntersectionObserver>>()
, 16usize , concat ! ( , 16usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36916,7 +37053,7 @@ pub mod root {
) )); ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_already_AddRefed_instantiation_341() { fn __bindgen_test_layout_already_AddRefed_instantiation_345() {
assert_eq!(::std::mem::size_of::<root::already_AddRefed<root::mozilla::dom::NodeInfo>>() assert_eq!(::std::mem::size_of::<root::already_AddRefed<root::mozilla::dom::NodeInfo>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36927,7 +37064,7 @@ pub mod root {
root::already_AddRefed<root::mozilla::dom::NodeInfo> ) )); root::already_AddRefed<root::mozilla::dom::NodeInfo> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_nsTArray_instantiation_342() { fn __bindgen_test_layout_nsTArray_instantiation_346() {
assert_eq!(::std::mem::size_of::<root::nsTArray<root::mozilla::DisplayItemClip_RoundedRect>>() assert_eq!(::std::mem::size_of::<root::nsTArray<root::mozilla::DisplayItemClip_RoundedRect>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36940,7 +37077,7 @@ pub mod root {
) )); ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_Handle_instantiation_343() { fn __bindgen_test_layout_Handle_instantiation_347() {
assert_eq!(::std::mem::size_of::<root::JS::Handle<*mut root::JSObject>>() assert_eq!(::std::mem::size_of::<root::JS::Handle<*mut root::JSObject>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36951,7 +37088,7 @@ pub mod root {
root::JS::Handle<*mut root::JSObject> ) )); root::JS::Handle<*mut root::JSObject> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_Handle_instantiation_344() { fn __bindgen_test_layout_Handle_instantiation_348() {
assert_eq!(::std::mem::size_of::<root::JS::Handle<*mut root::JSObject>>() assert_eq!(::std::mem::size_of::<root::JS::Handle<*mut root::JSObject>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36962,7 +37099,7 @@ pub mod root {
root::JS::Handle<*mut root::JSObject> ) )); root::JS::Handle<*mut root::JSObject> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_RefPtr_instantiation_345() { fn __bindgen_test_layout_RefPtr_instantiation_349() {
assert_eq!(::std::mem::size_of::<root::RefPtr<root::mozilla::dom::DOMRect>>() assert_eq!(::std::mem::size_of::<root::RefPtr<root::mozilla::dom::DOMRect>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36973,7 +37110,7 @@ pub mod root {
root::RefPtr<root::mozilla::dom::DOMRect> ) )); root::RefPtr<root::mozilla::dom::DOMRect> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_Handle_instantiation_346() { fn __bindgen_test_layout_Handle_instantiation_350() {
assert_eq!(::std::mem::size_of::<root::JS::Handle<root::JS::Value>>() assert_eq!(::std::mem::size_of::<root::JS::Handle<root::JS::Value>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36984,7 +37121,7 @@ pub mod root {
root::JS::Handle<root::JS::Value> ) )); root::JS::Handle<root::JS::Value> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_MutableHandle_instantiation_347() { fn __bindgen_test_layout_MutableHandle_instantiation_351() {
assert_eq!(::std::mem::size_of::<root::JS::MutableHandle<root::JS::Value>>() assert_eq!(::std::mem::size_of::<root::JS::MutableHandle<root::JS::Value>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36995,7 +37132,7 @@ pub mod root {
root::JS::MutableHandle<root::JS::Value> ) )); root::JS::MutableHandle<root::JS::Value> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_Sequence_instantiation_348() { fn __bindgen_test_layout_Sequence_instantiation_352() {
assert_eq!(::std::mem::size_of::<u64>() , 8usize , concat ! ( assert_eq!(::std::mem::size_of::<u64>() , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( u64 ) "Size of template specialization: " , stringify ! ( u64 )
)); ));
@ -37004,69 +37141,7 @@ pub mod root {
u64 ) )); u64 ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_Handle_instantiation_349() {
assert_eq!(::std::mem::size_of::<root::JS::Handle<root::JS::Value>>()
, 8usize , concat ! (
"Size of template specialization: " , stringify ! (
root::JS::Handle<root::JS::Value> ) ));
assert_eq!(::std::mem::align_of::<root::JS::Handle<root::JS::Value>>()
, 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
root::JS::Handle<root::JS::Value> ) ));
}
#[test]
fn __bindgen_test_layout_Sequence_instantiation_350() {
assert_eq!(::std::mem::size_of::<u64>() , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( u64 )
));
assert_eq!(::std::mem::align_of::<u64>() , 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
u64 ) ));
}
#[test]
fn __bindgen_test_layout_Sequence_instantiation_351() {
assert_eq!(::std::mem::size_of::<u64>() , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( u64 )
));
assert_eq!(::std::mem::align_of::<u64>() , 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
u64 ) ));
}
#[test]
fn __bindgen_test_layout_Handle_instantiation_352() {
assert_eq!(::std::mem::size_of::<root::JS::Handle<root::JS::Value>>()
, 8usize , concat ! (
"Size of template specialization: " , stringify ! (
root::JS::Handle<root::JS::Value> ) ));
assert_eq!(::std::mem::align_of::<root::JS::Handle<root::JS::Value>>()
, 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
root::JS::Handle<root::JS::Value> ) ));
}
#[test]
fn __bindgen_test_layout_Handle_instantiation_353() { fn __bindgen_test_layout_Handle_instantiation_353() {
assert_eq!(::std::mem::size_of::<root::JS::Handle<*mut root::JSObject>>()
, 8usize , concat ! (
"Size of template specialization: " , stringify ! (
root::JS::Handle<*mut root::JSObject> ) ));
assert_eq!(::std::mem::align_of::<root::JS::Handle<*mut root::JSObject>>()
, 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
root::JS::Handle<*mut root::JSObject> ) ));
}
#[test]
fn __bindgen_test_layout_MutableHandle_instantiation_354() {
assert_eq!(::std::mem::size_of::<root::JS::MutableHandle<root::JS::Value>>()
, 8usize , concat ! (
"Size of template specialization: " , stringify ! (
root::JS::MutableHandle<root::JS::Value> ) ));
assert_eq!(::std::mem::align_of::<root::JS::MutableHandle<root::JS::Value>>()
, 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
root::JS::MutableHandle<root::JS::Value> ) ));
}
#[test]
fn __bindgen_test_layout_Handle_instantiation_355() {
assert_eq!(::std::mem::size_of::<root::JS::Handle<root::JS::Value>>() assert_eq!(::std::mem::size_of::<root::JS::Handle<root::JS::Value>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -37077,15 +37152,33 @@ pub mod root {
root::JS::Handle<root::JS::Value> ) )); root::JS::Handle<root::JS::Value> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_MutableHandle_instantiation_356() { fn __bindgen_test_layout_Sequence_instantiation_354() {
assert_eq!(::std::mem::size_of::<root::JS::MutableHandle<root::JS::Value>>() assert_eq!(::std::mem::size_of::<u64>() , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( u64 )
));
assert_eq!(::std::mem::align_of::<u64>() , 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
u64 ) ));
}
#[test]
fn __bindgen_test_layout_Sequence_instantiation_355() {
assert_eq!(::std::mem::size_of::<u64>() , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( u64 )
));
assert_eq!(::std::mem::align_of::<u64>() , 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
u64 ) ));
}
#[test]
fn __bindgen_test_layout_Handle_instantiation_356() {
assert_eq!(::std::mem::size_of::<root::JS::Handle<root::JS::Value>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
root::JS::MutableHandle<root::JS::Value> ) )); root::JS::Handle<root::JS::Value> ) ));
assert_eq!(::std::mem::align_of::<root::JS::MutableHandle<root::JS::Value>>() assert_eq!(::std::mem::align_of::<root::JS::Handle<root::JS::Value>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Alignment of template specialization: " , stringify ! ( "Alignment of template specialization: " , stringify ! (
root::JS::MutableHandle<root::JS::Value> ) )); root::JS::Handle<root::JS::Value> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_Handle_instantiation_357() { fn __bindgen_test_layout_Handle_instantiation_357() {
@ -37099,7 +37192,51 @@ pub mod root {
root::JS::Handle<*mut root::JSObject> ) )); root::JS::Handle<*mut root::JSObject> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_nsRefPtrHashKey_instantiation_358() { fn __bindgen_test_layout_MutableHandle_instantiation_358() {
assert_eq!(::std::mem::size_of::<root::JS::MutableHandle<root::JS::Value>>()
, 8usize , concat ! (
"Size of template specialization: " , stringify ! (
root::JS::MutableHandle<root::JS::Value> ) ));
assert_eq!(::std::mem::align_of::<root::JS::MutableHandle<root::JS::Value>>()
, 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
root::JS::MutableHandle<root::JS::Value> ) ));
}
#[test]
fn __bindgen_test_layout_Handle_instantiation_359() {
assert_eq!(::std::mem::size_of::<root::JS::Handle<root::JS::Value>>()
, 8usize , concat ! (
"Size of template specialization: " , stringify ! (
root::JS::Handle<root::JS::Value> ) ));
assert_eq!(::std::mem::align_of::<root::JS::Handle<root::JS::Value>>()
, 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
root::JS::Handle<root::JS::Value> ) ));
}
#[test]
fn __bindgen_test_layout_MutableHandle_instantiation_360() {
assert_eq!(::std::mem::size_of::<root::JS::MutableHandle<root::JS::Value>>()
, 8usize , concat ! (
"Size of template specialization: " , stringify ! (
root::JS::MutableHandle<root::JS::Value> ) ));
assert_eq!(::std::mem::align_of::<root::JS::MutableHandle<root::JS::Value>>()
, 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
root::JS::MutableHandle<root::JS::Value> ) ));
}
#[test]
fn __bindgen_test_layout_Handle_instantiation_361() {
assert_eq!(::std::mem::size_of::<root::JS::Handle<*mut root::JSObject>>()
, 8usize , concat ! (
"Size of template specialization: " , stringify ! (
root::JS::Handle<*mut root::JSObject> ) ));
assert_eq!(::std::mem::align_of::<root::JS::Handle<*mut root::JSObject>>()
, 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
root::JS::Handle<*mut root::JSObject> ) ));
}
#[test]
fn __bindgen_test_layout_nsRefPtrHashKey_instantiation_362() {
assert_eq!(::std::mem::size_of::<root::nsRefPtrHashKey<root::mozilla::dom::Element>>() assert_eq!(::std::mem::size_of::<root::nsRefPtrHashKey<root::mozilla::dom::Element>>()
, 16usize , concat ! ( , 16usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -37110,7 +37247,7 @@ pub mod root {
root::nsRefPtrHashKey<root::mozilla::dom::Element> ) )); root::nsRefPtrHashKey<root::mozilla::dom::Element> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_nsClassHashtable_instantiation_359() { fn __bindgen_test_layout_nsClassHashtable_instantiation_363() {
assert_eq!(::std::mem::size_of::<[u64; 6usize]>() , 48usize , concat ! assert_eq!(::std::mem::size_of::<[u64; 6usize]>() , 48usize , concat !
( (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -37121,7 +37258,7 @@ pub mod root {
[u64; 6usize] ) )); [u64; 6usize] ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_Handle_instantiation_360() { fn __bindgen_test_layout_Handle_instantiation_364() {
assert_eq!(::std::mem::size_of::<root::JS::Handle<*mut root::JSObject>>() assert_eq!(::std::mem::size_of::<root::JS::Handle<*mut root::JSObject>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -37132,7 +37269,7 @@ pub mod root {
root::JS::Handle<*mut root::JSObject> ) )); root::JS::Handle<*mut root::JSObject> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_nsTArray_instantiation_361() { fn __bindgen_test_layout_nsTArray_instantiation_365() {
assert_eq!(::std::mem::size_of::<root::nsTArray<::nsstring::nsStringRepr>>() , assert_eq!(::std::mem::size_of::<root::nsTArray<::nsstring::nsStringRepr>>() ,
8usize , concat ! ( 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -37143,7 +37280,7 @@ pub mod root {
root::nsTArray<::nsstring::nsStringRepr> ) )); root::nsTArray<::nsstring::nsStringRepr> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_already_AddRefed_instantiation_362() { fn __bindgen_test_layout_already_AddRefed_instantiation_366() {
assert_eq!(::std::mem::size_of::<root::already_AddRefed<root::mozilla::dom::CSSValue>>() assert_eq!(::std::mem::size_of::<root::already_AddRefed<root::mozilla::dom::CSSValue>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -37154,7 +37291,7 @@ pub mod root {
root::already_AddRefed<root::mozilla::dom::CSSValue> ) )); root::already_AddRefed<root::mozilla::dom::CSSValue> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_Handle_instantiation_363() { fn __bindgen_test_layout_Handle_instantiation_367() {
assert_eq!(::std::mem::size_of::<root::JS::Handle<*mut root::JSObject>>() assert_eq!(::std::mem::size_of::<root::JS::Handle<*mut root::JSObject>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -37165,7 +37302,7 @@ pub mod root {
root::JS::Handle<*mut root::JSObject> ) )); root::JS::Handle<*mut root::JSObject> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_nsTArray_instantiation_364() { fn __bindgen_test_layout_nsTArray_instantiation_368() {
assert_eq!(::std::mem::size_of::<root::nsTArray<*mut root::mozilla::css::DocumentRule>>() assert_eq!(::std::mem::size_of::<root::nsTArray<*mut root::mozilla::css::DocumentRule>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -37176,7 +37313,7 @@ pub mod root {
root::nsTArray<*mut root::mozilla::css::DocumentRule> ) )); root::nsTArray<*mut root::mozilla::css::DocumentRule> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_nsAutoPtr_instantiation_365() { fn __bindgen_test_layout_nsAutoPtr_instantiation_369() {
assert_eq!(::std::mem::size_of::<root::nsAutoPtr<root::nsMediaQuery>>() assert_eq!(::std::mem::size_of::<root::nsAutoPtr<root::nsMediaQuery>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (

View file

@ -3246,6 +3246,12 @@ pub mod root {
} }
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]
pub struct NonNull<T> {
pub ptr: *mut T,
pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct Sequence { pub struct Sequence {
} }
#[repr(C)] #[repr(C)]
@ -4946,6 +4952,93 @@ pub mod root {
} }
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]
pub struct CSSPseudoElement {
_unused: [u8; 0],
}
#[repr(u8)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum IterationCompositeOperation {
Replace = 0,
Accumulate = 1,
EndGuard_ = 2,
}
#[repr(C)]
#[derive(Debug)]
pub struct ElementOrCSSPseudoElement {
pub mType: root::mozilla::dom::ElementOrCSSPseudoElement_Type,
pub mValue: root::mozilla::dom::ElementOrCSSPseudoElement_Value,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum ElementOrCSSPseudoElement_Type {
eUninitialized = 0,
eElement = 1,
eCSSPseudoElement = 2,
}
#[repr(C)]
#[derive(Debug, Copy)]
pub struct ElementOrCSSPseudoElement_Value {
pub mElement: root::__BindgenUnionField<root::mozilla::dom::UnionMember>,
pub mCSSPseudoElement: root::__BindgenUnionField<root::mozilla::dom::UnionMember>,
pub bindgen_union_field: u64,
}
#[test]
fn bindgen_test_layout_ElementOrCSSPseudoElement_Value() {
assert_eq!(::std::mem::size_of::<ElementOrCSSPseudoElement_Value>()
, 8usize , concat ! (
"Size of: " , stringify ! (
ElementOrCSSPseudoElement_Value ) ));
assert_eq! (::std::mem::align_of::<ElementOrCSSPseudoElement_Value>()
, 8usize , concat ! (
"Alignment of " , stringify ! (
ElementOrCSSPseudoElement_Value ) ));
assert_eq! (unsafe {
& (
* ( 0 as * const ElementOrCSSPseudoElement_Value )
) . mElement as * const _ as usize } , 0usize ,
concat ! (
"Alignment of field: " , stringify ! (
ElementOrCSSPseudoElement_Value ) , "::" ,
stringify ! ( mElement ) ));
assert_eq! (unsafe {
& (
* ( 0 as * const ElementOrCSSPseudoElement_Value )
) . mCSSPseudoElement as * const _ as usize } ,
0usize , concat ! (
"Alignment of field: " , stringify ! (
ElementOrCSSPseudoElement_Value ) , "::" ,
stringify ! ( mCSSPseudoElement ) ));
}
impl Clone for ElementOrCSSPseudoElement_Value {
fn clone(&self) -> Self { *self }
}
#[test]
fn bindgen_test_layout_ElementOrCSSPseudoElement() {
assert_eq!(::std::mem::size_of::<ElementOrCSSPseudoElement>()
, 16usize , concat ! (
"Size of: " , stringify ! (
ElementOrCSSPseudoElement ) ));
assert_eq! (::std::mem::align_of::<ElementOrCSSPseudoElement>()
, 8usize , concat ! (
"Alignment of " , stringify ! (
ElementOrCSSPseudoElement ) ));
assert_eq! (unsafe {
& ( * ( 0 as * const ElementOrCSSPseudoElement ) )
. mType as * const _ as usize } , 0usize , concat
! (
"Alignment of field: " , stringify ! (
ElementOrCSSPseudoElement ) , "::" , stringify ! (
mType ) ));
assert_eq! (unsafe {
& ( * ( 0 as * const ElementOrCSSPseudoElement ) )
. mValue as * const _ as usize } , 8usize , concat
! (
"Alignment of field: " , stringify ! (
ElementOrCSSPseudoElement ) , "::" , stringify ! (
mValue ) ));
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct CustomElementData { pub struct CustomElementData {
_unused: [u8; 0], _unused: [u8; 0],
} }
@ -5559,11 +5652,6 @@ pub mod root {
} }
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]
pub struct ElementOrCSSPseudoElement {
_unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct UnrestrictedDoubleOrKeyframeAnimationOptions { pub struct UnrestrictedDoubleOrKeyframeAnimationOptions {
_unused: [u8; 0], _unused: [u8; 0],
} }
@ -33732,7 +33820,7 @@ pub mod root {
root::nsCharTraits ) )); root::nsCharTraits ) ));
} }
#[test] #[test]
fn __bindgen_test_layout__bindgen_ty_id_206853_instantiation_97() { fn __bindgen_test_layout__bindgen_ty_id_207736_instantiation_97() {
assert_eq!(::std::mem::size_of::<u8>() , 1usize , concat ! ( assert_eq!(::std::mem::size_of::<u8>() , 1usize , concat ! (
"Size of template specialization: " , stringify ! ( u8 ) "Size of template specialization: " , stringify ! ( u8 )
)); ));
@ -33741,7 +33829,7 @@ pub mod root {
) )); ) ));
} }
#[test] #[test]
fn __bindgen_test_layout__bindgen_ty_id_206889_instantiation_98() { fn __bindgen_test_layout__bindgen_ty_id_207772_instantiation_98() {
assert_eq!(::std::mem::size_of::<u8>() , 1usize , concat ! ( assert_eq!(::std::mem::size_of::<u8>() , 1usize , concat ! (
"Size of template specialization: " , stringify ! ( u8 ) "Size of template specialization: " , stringify ! ( u8 )
)); ));
@ -36294,7 +36382,55 @@ pub mod root {
root::mozilla::UniquePtr<root::nsCSSValuePairList> ) )); root::mozilla::UniquePtr<root::nsCSSValuePairList> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_Maybe_instantiation_329() { fn __bindgen_test_layout_NonNull_instantiation_329() {
assert_eq!(::std::mem::size_of::<root::mozilla::dom::NonNull<root::mozilla::dom::Element>>()
, 8usize , concat ! (
"Size of template specialization: " , stringify ! (
root::mozilla::dom::NonNull<root::mozilla::dom::Element> )
));
assert_eq!(::std::mem::align_of::<root::mozilla::dom::NonNull<root::mozilla::dom::Element>>()
, 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
root::mozilla::dom::NonNull<root::mozilla::dom::Element> )
));
}
#[test]
fn __bindgen_test_layout_NonNull_instantiation_330() {
assert_eq!(::std::mem::size_of::<root::mozilla::dom::NonNull<root::mozilla::dom::CSSPseudoElement>>()
, 8usize , concat ! (
"Size of template specialization: " , stringify ! (
root::mozilla::dom::NonNull<root::mozilla::dom::CSSPseudoElement>
) ));
assert_eq!(::std::mem::align_of::<root::mozilla::dom::NonNull<root::mozilla::dom::CSSPseudoElement>>()
, 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
root::mozilla::dom::NonNull<root::mozilla::dom::CSSPseudoElement>
) ));
}
#[test]
fn __bindgen_test_layout_Handle_instantiation_331() {
assert_eq!(::std::mem::size_of::<root::JS::Handle<*mut root::JSObject>>()
, 8usize , concat ! (
"Size of template specialization: " , stringify ! (
root::JS::Handle<*mut root::JSObject> ) ));
assert_eq!(::std::mem::align_of::<root::JS::Handle<*mut root::JSObject>>()
, 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
root::JS::Handle<*mut root::JSObject> ) ));
}
#[test]
fn __bindgen_test_layout_MutableHandle_instantiation_332() {
assert_eq!(::std::mem::size_of::<root::JS::MutableHandle<root::JS::Value>>()
, 8usize , concat ! (
"Size of template specialization: " , stringify ! (
root::JS::MutableHandle<root::JS::Value> ) ));
assert_eq!(::std::mem::align_of::<root::JS::MutableHandle<root::JS::Value>>()
, 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
root::JS::MutableHandle<root::JS::Value> ) ));
}
#[test]
fn __bindgen_test_layout_Maybe_instantiation_333() {
assert_eq!(::std::mem::size_of::<[u64; 18usize]>() , 144usize , concat assert_eq!(::std::mem::size_of::<[u64; 18usize]>() , 144usize , concat
! ( ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36305,7 +36441,7 @@ pub mod root {
[u64; 18usize] ) )); [u64; 18usize] ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_Maybe_instantiation_330() { fn __bindgen_test_layout_Maybe_instantiation_334() {
assert_eq!(::std::mem::size_of::<[u64; 18usize]>() , 144usize , concat assert_eq!(::std::mem::size_of::<[u64; 18usize]>() , 144usize , concat
! ( ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36316,7 +36452,7 @@ pub mod root {
[u64; 18usize] ) )); [u64; 18usize] ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_BaseTimeDuration_instantiation_331() { fn __bindgen_test_layout_BaseTimeDuration_instantiation_335() {
assert_eq!(::std::mem::size_of::<root::mozilla::BaseTimeDuration>() , assert_eq!(::std::mem::size_of::<root::mozilla::BaseTimeDuration>() ,
8usize , concat ! ( 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36327,7 +36463,7 @@ pub mod root {
root::mozilla::BaseTimeDuration ) )); root::mozilla::BaseTimeDuration ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_already_AddRefed_instantiation_332() { fn __bindgen_test_layout_already_AddRefed_instantiation_336() {
assert_eq!(::std::mem::size_of::<root::already_AddRefed<root::mozilla::dom::NodeInfo>>() assert_eq!(::std::mem::size_of::<root::already_AddRefed<root::mozilla::dom::NodeInfo>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36338,7 +36474,7 @@ pub mod root {
root::already_AddRefed<root::mozilla::dom::NodeInfo> ) )); root::already_AddRefed<root::mozilla::dom::NodeInfo> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_already_AddRefed_instantiation_333() { fn __bindgen_test_layout_already_AddRefed_instantiation_337() {
assert_eq!(::std::mem::size_of::<root::already_AddRefed<root::mozilla::dom::NodeInfo>>() assert_eq!(::std::mem::size_of::<root::already_AddRefed<root::mozilla::dom::NodeInfo>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36349,7 +36485,7 @@ pub mod root {
root::already_AddRefed<root::mozilla::dom::NodeInfo> ) )); root::already_AddRefed<root::mozilla::dom::NodeInfo> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_nsTArray_instantiation_334() { fn __bindgen_test_layout_nsTArray_instantiation_338() {
assert_eq!(::std::mem::size_of::<root::nsTArray<*mut root::nsIContent>>() assert_eq!(::std::mem::size_of::<root::nsTArray<*mut root::nsIContent>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36360,7 +36496,7 @@ pub mod root {
root::nsTArray<*mut root::nsIContent> ) )); root::nsTArray<*mut root::nsIContent> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_nsTArray_instantiation_335() { fn __bindgen_test_layout_nsTArray_instantiation_339() {
assert_eq!(::std::mem::size_of::<root::nsTArray<*mut root::nsIContent>>() assert_eq!(::std::mem::size_of::<root::nsTArray<*mut root::nsIContent>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36371,7 +36507,7 @@ pub mod root {
root::nsTArray<*mut root::nsIContent> ) )); root::nsTArray<*mut root::nsIContent> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_nsCOMPtr_instantiation_336() { fn __bindgen_test_layout_nsCOMPtr_instantiation_340() {
assert_eq!(::std::mem::size_of::<root::nsCOMPtr>() , 8usize , concat ! assert_eq!(::std::mem::size_of::<root::nsCOMPtr>() , 8usize , concat !
( (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36382,7 +36518,7 @@ pub mod root {
root::nsCOMPtr ) )); root::nsCOMPtr ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_nsRefPtrHashKey_instantiation_337() { fn __bindgen_test_layout_nsRefPtrHashKey_instantiation_341() {
assert_eq!(::std::mem::size_of::<root::nsRefPtrHashKey<root::mozilla::dom::DOMIntersectionObserver>>() assert_eq!(::std::mem::size_of::<root::nsRefPtrHashKey<root::mozilla::dom::DOMIntersectionObserver>>()
, 16usize , concat ! ( , 16usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36395,7 +36531,7 @@ pub mod root {
) )); ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_already_AddRefed_instantiation_338() { fn __bindgen_test_layout_already_AddRefed_instantiation_342() {
assert_eq!(::std::mem::size_of::<root::already_AddRefed<root::mozilla::dom::NodeInfo>>() assert_eq!(::std::mem::size_of::<root::already_AddRefed<root::mozilla::dom::NodeInfo>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36406,7 +36542,7 @@ pub mod root {
root::already_AddRefed<root::mozilla::dom::NodeInfo> ) )); root::already_AddRefed<root::mozilla::dom::NodeInfo> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_nsTArray_instantiation_339() { fn __bindgen_test_layout_nsTArray_instantiation_343() {
assert_eq!(::std::mem::size_of::<root::nsTArray<root::mozilla::DisplayItemClip_RoundedRect>>() assert_eq!(::std::mem::size_of::<root::nsTArray<root::mozilla::DisplayItemClip_RoundedRect>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36419,7 +36555,7 @@ pub mod root {
) )); ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_Handle_instantiation_340() { fn __bindgen_test_layout_Handle_instantiation_344() {
assert_eq!(::std::mem::size_of::<root::JS::Handle<*mut root::JSObject>>() assert_eq!(::std::mem::size_of::<root::JS::Handle<*mut root::JSObject>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36430,7 +36566,7 @@ pub mod root {
root::JS::Handle<*mut root::JSObject> ) )); root::JS::Handle<*mut root::JSObject> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_Handle_instantiation_341() { fn __bindgen_test_layout_Handle_instantiation_345() {
assert_eq!(::std::mem::size_of::<root::JS::Handle<*mut root::JSObject>>() assert_eq!(::std::mem::size_of::<root::JS::Handle<*mut root::JSObject>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36441,7 +36577,7 @@ pub mod root {
root::JS::Handle<*mut root::JSObject> ) )); root::JS::Handle<*mut root::JSObject> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_RefPtr_instantiation_342() { fn __bindgen_test_layout_RefPtr_instantiation_346() {
assert_eq!(::std::mem::size_of::<root::RefPtr<root::mozilla::dom::DOMRect>>() assert_eq!(::std::mem::size_of::<root::RefPtr<root::mozilla::dom::DOMRect>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36452,7 +36588,7 @@ pub mod root {
root::RefPtr<root::mozilla::dom::DOMRect> ) )); root::RefPtr<root::mozilla::dom::DOMRect> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_Handle_instantiation_343() { fn __bindgen_test_layout_Handle_instantiation_347() {
assert_eq!(::std::mem::size_of::<root::JS::Handle<root::JS::Value>>() assert_eq!(::std::mem::size_of::<root::JS::Handle<root::JS::Value>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36463,7 +36599,7 @@ pub mod root {
root::JS::Handle<root::JS::Value> ) )); root::JS::Handle<root::JS::Value> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_MutableHandle_instantiation_344() { fn __bindgen_test_layout_MutableHandle_instantiation_348() {
assert_eq!(::std::mem::size_of::<root::JS::MutableHandle<root::JS::Value>>() assert_eq!(::std::mem::size_of::<root::JS::MutableHandle<root::JS::Value>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36474,7 +36610,7 @@ pub mod root {
root::JS::MutableHandle<root::JS::Value> ) )); root::JS::MutableHandle<root::JS::Value> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_Sequence_instantiation_345() { fn __bindgen_test_layout_Sequence_instantiation_349() {
assert_eq!(::std::mem::size_of::<u64>() , 8usize , concat ! ( assert_eq!(::std::mem::size_of::<u64>() , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( u64 ) "Size of template specialization: " , stringify ! ( u64 )
)); ));
@ -36483,69 +36619,7 @@ pub mod root {
u64 ) )); u64 ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_Handle_instantiation_346() {
assert_eq!(::std::mem::size_of::<root::JS::Handle<root::JS::Value>>()
, 8usize , concat ! (
"Size of template specialization: " , stringify ! (
root::JS::Handle<root::JS::Value> ) ));
assert_eq!(::std::mem::align_of::<root::JS::Handle<root::JS::Value>>()
, 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
root::JS::Handle<root::JS::Value> ) ));
}
#[test]
fn __bindgen_test_layout_Sequence_instantiation_347() {
assert_eq!(::std::mem::size_of::<u64>() , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( u64 )
));
assert_eq!(::std::mem::align_of::<u64>() , 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
u64 ) ));
}
#[test]
fn __bindgen_test_layout_Sequence_instantiation_348() {
assert_eq!(::std::mem::size_of::<u64>() , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( u64 )
));
assert_eq!(::std::mem::align_of::<u64>() , 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
u64 ) ));
}
#[test]
fn __bindgen_test_layout_Handle_instantiation_349() {
assert_eq!(::std::mem::size_of::<root::JS::Handle<root::JS::Value>>()
, 8usize , concat ! (
"Size of template specialization: " , stringify ! (
root::JS::Handle<root::JS::Value> ) ));
assert_eq!(::std::mem::align_of::<root::JS::Handle<root::JS::Value>>()
, 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
root::JS::Handle<root::JS::Value> ) ));
}
#[test]
fn __bindgen_test_layout_Handle_instantiation_350() { fn __bindgen_test_layout_Handle_instantiation_350() {
assert_eq!(::std::mem::size_of::<root::JS::Handle<*mut root::JSObject>>()
, 8usize , concat ! (
"Size of template specialization: " , stringify ! (
root::JS::Handle<*mut root::JSObject> ) ));
assert_eq!(::std::mem::align_of::<root::JS::Handle<*mut root::JSObject>>()
, 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
root::JS::Handle<*mut root::JSObject> ) ));
}
#[test]
fn __bindgen_test_layout_MutableHandle_instantiation_351() {
assert_eq!(::std::mem::size_of::<root::JS::MutableHandle<root::JS::Value>>()
, 8usize , concat ! (
"Size of template specialization: " , stringify ! (
root::JS::MutableHandle<root::JS::Value> ) ));
assert_eq!(::std::mem::align_of::<root::JS::MutableHandle<root::JS::Value>>()
, 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
root::JS::MutableHandle<root::JS::Value> ) ));
}
#[test]
fn __bindgen_test_layout_Handle_instantiation_352() {
assert_eq!(::std::mem::size_of::<root::JS::Handle<root::JS::Value>>() assert_eq!(::std::mem::size_of::<root::JS::Handle<root::JS::Value>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36556,15 +36630,33 @@ pub mod root {
root::JS::Handle<root::JS::Value> ) )); root::JS::Handle<root::JS::Value> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_MutableHandle_instantiation_353() { fn __bindgen_test_layout_Sequence_instantiation_351() {
assert_eq!(::std::mem::size_of::<root::JS::MutableHandle<root::JS::Value>>() assert_eq!(::std::mem::size_of::<u64>() , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( u64 )
));
assert_eq!(::std::mem::align_of::<u64>() , 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
u64 ) ));
}
#[test]
fn __bindgen_test_layout_Sequence_instantiation_352() {
assert_eq!(::std::mem::size_of::<u64>() , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( u64 )
));
assert_eq!(::std::mem::align_of::<u64>() , 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
u64 ) ));
}
#[test]
fn __bindgen_test_layout_Handle_instantiation_353() {
assert_eq!(::std::mem::size_of::<root::JS::Handle<root::JS::Value>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
root::JS::MutableHandle<root::JS::Value> ) )); root::JS::Handle<root::JS::Value> ) ));
assert_eq!(::std::mem::align_of::<root::JS::MutableHandle<root::JS::Value>>() assert_eq!(::std::mem::align_of::<root::JS::Handle<root::JS::Value>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Alignment of template specialization: " , stringify ! ( "Alignment of template specialization: " , stringify ! (
root::JS::MutableHandle<root::JS::Value> ) )); root::JS::Handle<root::JS::Value> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_Handle_instantiation_354() { fn __bindgen_test_layout_Handle_instantiation_354() {
@ -36578,7 +36670,51 @@ pub mod root {
root::JS::Handle<*mut root::JSObject> ) )); root::JS::Handle<*mut root::JSObject> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_nsRefPtrHashKey_instantiation_355() { fn __bindgen_test_layout_MutableHandle_instantiation_355() {
assert_eq!(::std::mem::size_of::<root::JS::MutableHandle<root::JS::Value>>()
, 8usize , concat ! (
"Size of template specialization: " , stringify ! (
root::JS::MutableHandle<root::JS::Value> ) ));
assert_eq!(::std::mem::align_of::<root::JS::MutableHandle<root::JS::Value>>()
, 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
root::JS::MutableHandle<root::JS::Value> ) ));
}
#[test]
fn __bindgen_test_layout_Handle_instantiation_356() {
assert_eq!(::std::mem::size_of::<root::JS::Handle<root::JS::Value>>()
, 8usize , concat ! (
"Size of template specialization: " , stringify ! (
root::JS::Handle<root::JS::Value> ) ));
assert_eq!(::std::mem::align_of::<root::JS::Handle<root::JS::Value>>()
, 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
root::JS::Handle<root::JS::Value> ) ));
}
#[test]
fn __bindgen_test_layout_MutableHandle_instantiation_357() {
assert_eq!(::std::mem::size_of::<root::JS::MutableHandle<root::JS::Value>>()
, 8usize , concat ! (
"Size of template specialization: " , stringify ! (
root::JS::MutableHandle<root::JS::Value> ) ));
assert_eq!(::std::mem::align_of::<root::JS::MutableHandle<root::JS::Value>>()
, 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
root::JS::MutableHandle<root::JS::Value> ) ));
}
#[test]
fn __bindgen_test_layout_Handle_instantiation_358() {
assert_eq!(::std::mem::size_of::<root::JS::Handle<*mut root::JSObject>>()
, 8usize , concat ! (
"Size of template specialization: " , stringify ! (
root::JS::Handle<*mut root::JSObject> ) ));
assert_eq!(::std::mem::align_of::<root::JS::Handle<*mut root::JSObject>>()
, 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
root::JS::Handle<*mut root::JSObject> ) ));
}
#[test]
fn __bindgen_test_layout_nsRefPtrHashKey_instantiation_359() {
assert_eq!(::std::mem::size_of::<root::nsRefPtrHashKey<root::mozilla::dom::Element>>() assert_eq!(::std::mem::size_of::<root::nsRefPtrHashKey<root::mozilla::dom::Element>>()
, 16usize , concat ! ( , 16usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36589,7 +36725,7 @@ pub mod root {
root::nsRefPtrHashKey<root::mozilla::dom::Element> ) )); root::nsRefPtrHashKey<root::mozilla::dom::Element> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_nsClassHashtable_instantiation_356() { fn __bindgen_test_layout_nsClassHashtable_instantiation_360() {
assert_eq!(::std::mem::size_of::<[u64; 5usize]>() , 40usize , concat ! assert_eq!(::std::mem::size_of::<[u64; 5usize]>() , 40usize , concat !
( (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36600,7 +36736,7 @@ pub mod root {
[u64; 5usize] ) )); [u64; 5usize] ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_Handle_instantiation_357() { fn __bindgen_test_layout_Handle_instantiation_361() {
assert_eq!(::std::mem::size_of::<root::JS::Handle<*mut root::JSObject>>() assert_eq!(::std::mem::size_of::<root::JS::Handle<*mut root::JSObject>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36611,7 +36747,7 @@ pub mod root {
root::JS::Handle<*mut root::JSObject> ) )); root::JS::Handle<*mut root::JSObject> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_nsTArray_instantiation_358() { fn __bindgen_test_layout_nsTArray_instantiation_362() {
assert_eq!(::std::mem::size_of::<root::nsTArray<::nsstring::nsStringRepr>>() , assert_eq!(::std::mem::size_of::<root::nsTArray<::nsstring::nsStringRepr>>() ,
8usize , concat ! ( 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36622,7 +36758,7 @@ pub mod root {
root::nsTArray<::nsstring::nsStringRepr> ) )); root::nsTArray<::nsstring::nsStringRepr> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_already_AddRefed_instantiation_359() { fn __bindgen_test_layout_already_AddRefed_instantiation_363() {
assert_eq!(::std::mem::size_of::<root::already_AddRefed<root::mozilla::dom::CSSValue>>() assert_eq!(::std::mem::size_of::<root::already_AddRefed<root::mozilla::dom::CSSValue>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36633,7 +36769,7 @@ pub mod root {
root::already_AddRefed<root::mozilla::dom::CSSValue> ) )); root::already_AddRefed<root::mozilla::dom::CSSValue> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_Handle_instantiation_360() { fn __bindgen_test_layout_Handle_instantiation_364() {
assert_eq!(::std::mem::size_of::<root::JS::Handle<*mut root::JSObject>>() assert_eq!(::std::mem::size_of::<root::JS::Handle<*mut root::JSObject>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36644,7 +36780,7 @@ pub mod root {
root::JS::Handle<*mut root::JSObject> ) )); root::JS::Handle<*mut root::JSObject> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_nsTArray_instantiation_361() { fn __bindgen_test_layout_nsTArray_instantiation_365() {
assert_eq!(::std::mem::size_of::<root::nsTArray<*mut root::mozilla::css::DocumentRule>>() assert_eq!(::std::mem::size_of::<root::nsTArray<*mut root::mozilla::css::DocumentRule>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (
@ -36655,7 +36791,7 @@ pub mod root {
root::nsTArray<*mut root::mozilla::css::DocumentRule> ) )); root::nsTArray<*mut root::mozilla::css::DocumentRule> ) ));
} }
#[test] #[test]
fn __bindgen_test_layout_nsAutoPtr_instantiation_362() { fn __bindgen_test_layout_nsAutoPtr_instantiation_366() {
assert_eq!(::std::mem::size_of::<root::nsAutoPtr<root::nsMediaQuery>>() assert_eq!(::std::mem::size_of::<root::nsAutoPtr<root::nsMediaQuery>>()
, 8usize , concat ! ( , 8usize , concat ! (
"Size of template specialization: " , stringify ! ( "Size of template specialization: " , stringify ! (

View file

@ -68,6 +68,7 @@ use style::gecko_bindings::structs::{RawServoStyleRule, ServoStyleSheet};
use style::gecko_bindings::structs::{SheetParsingMode, nsIAtom, nsCSSPropertyID}; use style::gecko_bindings::structs::{SheetParsingMode, nsIAtom, nsCSSPropertyID};
use style::gecko_bindings::structs::{nsCSSFontFaceRule, nsCSSCounterStyleRule}; use style::gecko_bindings::structs::{nsCSSFontFaceRule, nsCSSCounterStyleRule};
use style::gecko_bindings::structs::{nsRestyleHint, nsChangeHint}; use style::gecko_bindings::structs::{nsRestyleHint, nsChangeHint};
use style::gecko_bindings::structs::IterationCompositeOperation;
use style::gecko_bindings::structs::Loader; use style::gecko_bindings::structs::Loader;
use style::gecko_bindings::structs::RawGeckoPresContextOwned; use style::gecko_bindings::structs::RawGeckoPresContextOwned;
use style::gecko_bindings::structs::ServoElementSnapshotTable; use style::gecko_bindings::structs::ServoElementSnapshotTable;
@ -332,7 +333,9 @@ pub extern "C" fn Servo_AnimationCompose(raw_value_map: RawServoAnimationValueMa
base_values: *mut ::std::os::raw::c_void, base_values: *mut ::std::os::raw::c_void,
css_property: nsCSSPropertyID, css_property: nsCSSPropertyID,
segment: RawGeckoAnimationPropertySegmentBorrowed, segment: RawGeckoAnimationPropertySegmentBorrowed,
computed_timing: RawGeckoComputedTimingBorrowed) last_segment: RawGeckoAnimationPropertySegmentBorrowed,
computed_timing: RawGeckoComputedTimingBorrowed,
iteration_composite: IterationCompositeOperation)
{ {
use style::gecko_bindings::bindings::Gecko_AnimationGetBaseStyle; use style::gecko_bindings::bindings::Gecko_AnimationGetBaseStyle;
use style::gecko_bindings::bindings::Gecko_GetPositionInSegment; use style::gecko_bindings::bindings::Gecko_GetPositionInSegment;
@ -342,10 +345,16 @@ pub extern "C" fn Servo_AnimationCompose(raw_value_map: RawServoAnimationValueMa
let property: TransitionProperty = css_property.into(); let property: TransitionProperty = css_property.into();
let value_map = AnimationValueMap::from_ffi_mut(raw_value_map); let value_map = AnimationValueMap::from_ffi_mut(raw_value_map);
// We will need an underlying value if either of the endpoints is null...
let need_underlying_value = segment.mFromValue.mServo.mRawPtr.is_null() || let need_underlying_value = segment.mFromValue.mServo.mRawPtr.is_null() ||
segment.mToValue.mServo.mRawPtr.is_null() || segment.mToValue.mServo.mRawPtr.is_null() ||
// ... or if they have a non-replace composite mode ...
segment.mFromComposite != CompositeOperation::Replace || segment.mFromComposite != CompositeOperation::Replace ||
segment.mToComposite != CompositeOperation::Replace; segment.mToComposite != CompositeOperation::Replace ||
// ... or if we accumulate onto the last value and it is null.
(iteration_composite == IterationCompositeOperation::Accumulate &&
computed_timing.mCurrentIteration > 0 &&
last_segment.mToValue.mServo.mRawPtr.is_null());
// If either of the segment endpoints are null, get the underlying value to // If either of the segment endpoints are null, get the underlying value to
// use from the current value in the values map (set by a lower-priority // use from the current value in the values map (set by a lower-priority
@ -410,14 +419,47 @@ pub extern "C" fn Servo_AnimationCompose(raw_value_map: RawServoAnimationValueMa
}, },
} }
}; };
let composited_from_value = composite_endpoint(keyframe_from_value, segment.mFromComposite); let mut composited_from_value = composite_endpoint(keyframe_from_value, segment.mFromComposite);
let composited_to_value = composite_endpoint(keyframe_to_value, segment.mToComposite); let mut composited_to_value = composite_endpoint(keyframe_to_value, segment.mToComposite);
debug_assert!(keyframe_from_value.is_some() || composited_from_value.is_some(), debug_assert!(keyframe_from_value.is_some() || composited_from_value.is_some(),
"Should have a suitable from value to use"); "Should have a suitable from value to use");
debug_assert!(keyframe_to_value.is_some() || composited_to_value.is_some(), debug_assert!(keyframe_to_value.is_some() || composited_to_value.is_some(),
"Should have a suitable to value to use"); "Should have a suitable to value to use");
// Apply iteration composite behavior.
if iteration_composite == IterationCompositeOperation::Accumulate &&
computed_timing.mCurrentIteration > 0 {
let raw_last_value;
let last_value = if !last_segment.mToValue.mServo.mRawPtr.is_null() {
raw_last_value = unsafe { &*last_segment.mToValue.mServo.mRawPtr };
AnimationValue::as_arc(&raw_last_value).as_ref()
} else {
debug_assert!(need_underlying_value,
"Should have detected we need an underlying value");
underlying_value.as_ref().unwrap()
};
// As with composite_endpoint, a return value of None means, "Use keyframe_value as-is."
let apply_iteration_composite = |keyframe_value: Option<&Arc<AnimationValue>>,
composited_value: Option<AnimationValue>|
-> Option<AnimationValue> {
let count = computed_timing.mCurrentIteration;
match composited_value {
Some(endpoint) => last_value.accumulate(&endpoint, count)
.ok()
.or(Some(endpoint)),
None => last_value.accumulate(keyframe_value.unwrap(), count)
.ok(),
}
};
composited_from_value = apply_iteration_composite(keyframe_from_value,
composited_from_value);
composited_to_value = apply_iteration_composite(keyframe_to_value,
composited_to_value);
}
// Use the composited value if there is one, otherwise, use the original keyframe value. // Use the composited value if there is one, otherwise, use the original keyframe value.
let from_value = composited_from_value.as_ref().unwrap_or_else(|| keyframe_from_value.unwrap()); let from_value = composited_from_value.as_ref().unwrap_or_else(|| keyframe_from_value.unwrap());
let to_value = composited_to_value.as_ref().unwrap_or_else(|| keyframe_to_value.unwrap()); let to_value = composited_to_value.as_ref().unwrap_or_else(|| keyframe_to_value.unwrap());