Auto merge of #17648 - hiikezoe:missing-keyframes, r=birtles

Do not fill computed values in missing 0%/100% keyframes in CSS Animation

<!-- Please describe your changes on the following line: -->

https://bugzilla.mozilla.org/show_bug.cgi?id=1360398
---
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
This commit is contained in:
bors-servo 2017-07-10 02:31:35 -07:00 committed by GitHub
commit 2278a3f981
5 changed files with 178 additions and 120 deletions

View file

@ -184,6 +184,8 @@ cfg_if! {
pub static nsGkAtoms_aria_checked: *mut nsIAtom;
#[link_name = "_ZN9nsGkAtoms13aria_controlsE"]
pub static nsGkAtoms_aria_controls: *mut nsIAtom;
#[link_name = "_ZN9nsGkAtoms12aria_currentE"]
pub static nsGkAtoms_aria_current: *mut nsIAtom;
#[link_name = "_ZN9nsGkAtoms16aria_describedbyE"]
pub static nsGkAtoms_aria_describedby: *mut nsIAtom;
#[link_name = "_ZN9nsGkAtoms13aria_disabledE"]
@ -5309,6 +5311,8 @@ cfg_if! {
pub static nsGkAtoms_aria_checked: *mut nsIAtom;
#[link_name = "?aria_controls@nsGkAtoms@@2PEAVnsIAtom@@EA"]
pub static nsGkAtoms_aria_controls: *mut nsIAtom;
#[link_name = "?aria_current@nsGkAtoms@@2PEAVnsIAtom@@EA"]
pub static nsGkAtoms_aria_current: *mut nsIAtom;
#[link_name = "?aria_describedby@nsGkAtoms@@2PEAVnsIAtom@@EA"]
pub static nsGkAtoms_aria_describedby: *mut nsIAtom;
#[link_name = "?aria_disabled@nsGkAtoms@@2PEAVnsIAtom@@EA"]
@ -10434,6 +10438,8 @@ cfg_if! {
pub static nsGkAtoms_aria_checked: *mut nsIAtom;
#[link_name = "\x01?aria_controls@nsGkAtoms@@2PAVnsIAtom@@A"]
pub static nsGkAtoms_aria_controls: *mut nsIAtom;
#[link_name = "\x01?aria_current@nsGkAtoms@@2PAVnsIAtom@@A"]
pub static nsGkAtoms_aria_current: *mut nsIAtom;
#[link_name = "\x01?aria_describedby@nsGkAtoms@@2PAVnsIAtom@@A"]
pub static nsGkAtoms_aria_describedby: *mut nsIAtom;
#[link_name = "\x01?aria_disabled@nsGkAtoms@@2PAVnsIAtom@@A"]
@ -15562,6 +15568,8 @@ macro_rules! atom {
{ unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_aria_checked as *mut _) } };
("aria-controls") =>
{ unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_aria_controls as *mut _) } };
("aria-current") =>
{ unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_aria_current as *mut _) } };
("aria-describedby") =>
{ unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_aria_describedby as *mut _) } };
("aria-disabled") =>

View file

@ -1934,8 +1934,6 @@ extern "C" {
property: *const nsACString,
timing_function:
nsTimingFunctionBorrowed,
computed_values:
ServoComputedValuesBorrowed,
keyframe_list:
RawGeckoKeyframeListBorrowedMut)
-> bool;
@ -2161,6 +2159,16 @@ extern "C" {
pub fn Servo_StyleRule_GetSelectorCount(rule: RawServoStyleRuleBorrowed,
count: *mut u32);
}
extern "C" {
pub fn Servo_StyleRule_SelectorMatchesElement(arg1:
RawServoStyleRuleBorrowed,
arg2:
RawGeckoElementBorrowed,
index: u32,
pseudo_type:
CSSPseudoElementType)
-> bool;
}
extern "C" {
pub fn Servo_ImportRule_GetHref(rule: RawServoImportRuleBorrowed,
result: *mut nsAString);

View file

@ -1500,7 +1500,7 @@ pub mod root {
pub mod css {
#[allow(unused_imports)]
use self::super::super::super::root;
#[repr(u32)]
#[repr(u8)]
/**
* Enum defining the mode in which a sheet is to be parsed. This is
* usually, but not always, the same as the cascade level at which the
@ -2408,7 +2408,6 @@ pub mod root {
impl Clone for FontVariation {
fn clone(&self) -> Self { *self }
}
pub type Matrix4x4 = [u32; 16usize];
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ScaleFactor {
@ -2417,6 +2416,7 @@ pub mod root {
#[derive(Debug, Copy, Clone)]
pub struct ScaleFactors2D {
}
pub type Matrix4x4 = [u32; 16usize];
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SourceSurface {
@ -2476,7 +2476,6 @@ pub mod root {
ePending = 2,
eUserAction = 3,
eRestore = 4,
eSentinel = 5,
}
extern "C" {
#[link_name =
@ -2487,6 +2486,13 @@ pub mod root {
pub const FrameMetrics_START_SCROLL_ID:
root::mozilla::layers::FrameMetrics_ViewID =
2;
pub const FrameMetrics_sScrollOffsetUpdateTypeCount: usize = 5;
extern "C" {
#[link_name =
"_ZN7mozilla6layers12FrameMetrics30sHighestScrollOffsetUpdateTypeE"]
pub static FrameMetrics_sHighestScrollOffsetUpdateType:
root::mozilla::layers::FrameMetrics_ScrollOffsetUpdateType;
}
#[test]
fn bindgen_test_layout_FrameMetrics() {
assert_eq!(::std::mem::size_of::<FrameMetrics>() , 184usize ,
@ -3317,7 +3323,6 @@ pub mod root {
eNone = 0,
eRefLayer = 1,
eScrollLayer = 2,
eSentinel = 3,
}
#[repr(C)]
#[derive(Debug, Copy)]
@ -3354,6 +3359,13 @@ pub mod root {
impl Clone for FocusTarget_FocusTargetData {
fn clone(&self) -> Self { *self }
}
pub const FocusTarget_sFocusTargetTypeCount: usize = 3;
extern "C" {
#[link_name =
"_ZN7mozilla6layers11FocusTarget23sHighestFocusTargetTypeE"]
pub static FocusTarget_sHighestFocusTargetType:
root::mozilla::layers::FocusTarget_FocusTargetType;
}
#[test]
fn bindgen_test_layout_FocusTarget() {
assert_eq!(::std::mem::size_of::<FocusTarget>() , 32usize ,
@ -7130,10 +7142,11 @@ pub mod root {
Content = 1,
ContentAndNotify = 2,
Style = 3,
InterruptibleLayout = 4,
Layout = 5,
Display = 6,
Count = 7,
EnsurePresShellInitAndFrames = 4,
InterruptibleLayout = 5,
Layout = 6,
Display = 7,
Count = 8,
}
#[repr(C)]
#[derive(Debug, Copy)]
@ -7610,9 +7623,9 @@ pub mod root {
pub mParsingMode: root::mozilla::css::SheetParsingMode,
pub mType: root::mozilla::StyleBackendType,
pub mDisabled: bool,
pub mDirty: bool,
pub mDocumentAssociationMode: root::mozilla::StyleSheet_DocumentAssociationMode,
pub mInner: *mut root::mozilla::StyleSheetInfo,
pub mDirty: bool,
pub mStyleSets: root::nsTArray<root::mozilla::StyleSetHandle>,
}
pub type StyleSheet_HasThreadSafeRefCnt = root::mozilla::FalseType;
@ -7651,7 +7664,7 @@ pub mod root {
RuleRemoved = 4,
RuleChanged = 5,
}
#[repr(u32)]
#[repr(u8)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum StyleSheet_DocumentAssociationMode {
OwnedByDocument = 0,
@ -7699,7 +7712,7 @@ pub mod root {
}
#[test]
fn bindgen_test_layout_StyleSheet() {
assert_eq!(::std::mem::size_of::<StyleSheet>() , 160usize , concat
assert_eq!(::std::mem::size_of::<StyleSheet>() , 144usize , concat
! ( "Size of: " , stringify ! ( StyleSheet ) ));
assert_eq! (::std::mem::align_of::<StyleSheet>() , 8usize , concat
! ( "Alignment of " , stringify ! ( StyleSheet ) ));
@ -7802,7 +7815,7 @@ pub mod root {
}
#[test]
fn bindgen_test_layout_ServoStyleSheet() {
assert_eq!(::std::mem::size_of::<ServoStyleSheet>() , 168usize ,
assert_eq!(::std::mem::size_of::<ServoStyleSheet>() , 152usize ,
concat ! (
"Size of: " , stringify ! ( ServoStyleSheet ) ));
assert_eq! (::std::mem::align_of::<ServoStyleSheet>() , 8usize ,
@ -7810,7 +7823,7 @@ pub mod root {
"Alignment of " , stringify ! ( ServoStyleSheet ) ));
assert_eq! (unsafe {
& ( * ( 0 as * const ServoStyleSheet ) ) . mRuleList
as * const _ as usize } , 160usize , concat ! (
as * const _ as usize } , 144usize , concat ! (
"Alignment of field: " , stringify ! ( ServoStyleSheet
) , "::" , stringify ! ( mRuleList ) ));
}
@ -7882,13 +7895,14 @@ pub mod root {
pub mComplete: bool,
pub mFirstChild: root::RefPtr<root::mozilla::StyleSheet>,
pub mSheets: [u64; 10usize],
pub mSourceMapURL: ::nsstring::nsStringRepr,
pub mPrincipalSet: bool,
}
pub use self::super::super::root::mozilla::net::ReferrerPolicy as
StyleSheetInfo_ReferrerPolicy;
#[test]
fn bindgen_test_layout_StyleSheetInfo() {
assert_eq!(::std::mem::size_of::<StyleSheetInfo>() , 200usize ,
assert_eq!(::std::mem::size_of::<StyleSheetInfo>() , 216usize ,
concat ! ( "Size of: " , stringify ! ( StyleSheetInfo )
));
assert_eq! (::std::mem::align_of::<StyleSheetInfo>() , 8usize ,
@ -7948,7 +7962,13 @@ pub mod root {
) , "::" , stringify ! ( mSheets ) ));
assert_eq! (unsafe {
& ( * ( 0 as * const StyleSheetInfo ) ) .
mPrincipalSet as * const _ as usize } , 192usize ,
mSourceMapURL as * const _ as usize } , 192usize ,
concat ! (
"Alignment of field: " , stringify ! ( StyleSheetInfo
) , "::" , stringify ! ( mSourceMapURL ) ));
assert_eq! (unsafe {
& ( * ( 0 as * const StyleSheetInfo ) ) .
mPrincipalSet as * const _ as usize } , 208usize ,
concat ! (
"Alignment of field: " , stringify ! ( StyleSheetInfo
) , "::" , stringify ! ( mPrincipalSet ) ));
@ -8878,12 +8898,12 @@ pub mod root {
pub mBlobSerial: [u64; 2usize],
pub mOriginAttributes: root::mozilla::OriginAttributes,
pub mControlledDocument: *mut ::std::os::raw::c_void,
pub mHash: u32,
pub mHash: root::PLDHashNumber,
pub mIsChrome: bool,
}
#[test]
fn bindgen_test_layout_ImageCacheKey() {
assert_eq!(::std::mem::size_of::<ImageCacheKey>() , 80usize ,
assert_eq!(::std::mem::size_of::<ImageCacheKey>() , 88usize ,
concat ! (
"Size of: " , stringify ! ( ImageCacheKey ) ));
assert_eq! (::std::mem::align_of::<ImageCacheKey>() , 8usize ,
@ -8923,7 +8943,7 @@ pub mod root {
ImageCacheKey ) , "::" , stringify ! ( mHash ) ));
assert_eq! (unsafe {
& ( * ( 0 as * const ImageCacheKey ) ) . mIsChrome
as * const _ as usize } , 76usize , concat ! (
as * const _ as usize } , 80usize , concat ! (
"Alignment of field: " , stringify ! (
ImageCacheKey ) , "::" , stringify ! ( mIsChrome )
));
@ -10585,7 +10605,7 @@ pub mod root {
#[test]
fn bindgen_test_layout_ServoStyleSheetInner() {
assert_eq!(::std::mem::size_of::<ServoStyleSheetInner>() ,
216usize , concat ! (
232usize , concat ! (
"Size of: " , stringify ! ( ServoStyleSheetInner ) ));
assert_eq! (::std::mem::align_of::<ServoStyleSheetInner>() ,
8usize , concat ! (
@ -10593,14 +10613,14 @@ pub mod root {
));
assert_eq! (unsafe {
& ( * ( 0 as * const ServoStyleSheetInner ) ) .
mContents as * const _ as usize } , 200usize , concat
mContents as * const _ as usize } , 216usize , concat
! (
"Alignment of field: " , stringify ! (
ServoStyleSheetInner ) , "::" , stringify ! (
mContents ) ));
assert_eq! (unsafe {
& ( * ( 0 as * const ServoStyleSheetInner ) ) .
mURLData as * const _ as usize } , 208usize , concat !
mURLData as * const _ as usize } , 224usize , concat !
(
"Alignment of field: " , stringify ! (
ServoStyleSheetInner ) , "::" , stringify ! ( mURLData
@ -11958,7 +11978,6 @@ pub mod root {
NS_ERROR_PLUGIN_BLOCKLISTED = 2152465386,
NS_ERROR_PLUGIN_TIME_RANGE_NOT_SUPPORTED = 2152465387,
NS_ERROR_PLUGIN_CLICKTOPLAY = 2152465388,
NS_PLUGIN_INIT_PENDING = 4981741,
NS_TABLELAYOUT_CELL_NOT_FOUND = 5046272,
NS_POSITION_BEFORE_TABLE = 5046275,
NS_STATE_PROPERTY_NOT_THERE = 5046277,
@ -14702,7 +14721,7 @@ pub mod root {
pub struct nsAutoPtr_Proxy {
}
pub type nsAutoPtr_Proxy_member_function = u8;
pub type PLDHashNumber = u32;
pub type PLDHashNumber = usize;
#[repr(C)]
pub struct PLDHashTable {
pub mOps: *const root::PLDHashTableOps,
@ -14812,8 +14831,8 @@ pub mod root {
pub const PLDHashTable_kMinCapacity: u32 = 8;
pub const PLDHashTable_kMaxInitialLength: u32 = 33554432;
pub const PLDHashTable_kDefaultInitialLength: u32 = 4;
pub const PLDHashTable_kHashBits: u32 = 32;
pub const PLDHashTable_kGoldenRatio: u32 = 2654435769;
pub const PLDHashTable_kHashBits: u32 = 64;
pub const PLDHashTable_kGoldenRatio: u64 = 2135587859;
pub const PLDHashTable_kCollisionFlag: root::PLDHashNumber = 1;
#[test]
fn bindgen_test_layout_PLDHashTable() {
@ -14909,9 +14928,9 @@ pub mod root {
}
#[test]
fn bindgen_test_layout_PLDHashEntryHdr() {
assert_eq!(::std::mem::size_of::<PLDHashEntryHdr>() , 4usize , concat
assert_eq!(::std::mem::size_of::<PLDHashEntryHdr>() , 8usize , concat
! ( "Size of: " , stringify ! ( PLDHashEntryHdr ) ));
assert_eq! (::std::mem::align_of::<PLDHashEntryHdr>() , 4usize ,
assert_eq! (::std::mem::align_of::<PLDHashEntryHdr>() , 8usize ,
concat ! (
"Alignment of " , stringify ! ( PLDHashEntryHdr ) ));
assert_eq! (unsafe {
@ -15875,13 +15894,6 @@ pub mod root {
pub enum nsStyleAutoArray_WithSingleInitialElement {
WITH_SINGLE_INITIAL_ELEMENT = 0,
}
/**
* Currently needs to be 'double' for Cairo compatibility. Could
* become 'float', perhaps, in some configurations.
*/
pub type gfxFloat = f64;
pub type gfxSize = [u64; 2usize];
pub type nsIntRect = root::mozilla::gfx::IntRect;
pub const nsStyleUnit_eStyleUnit_MAX: root::nsStyleUnit =
nsStyleUnit::eStyleUnit_Calc;
#[repr(u8)]
@ -16353,6 +16365,8 @@ pub mod root {
nsEventStatus_eConsumeDoDefault = 2,
nsEventStatus_eSentinel = 3,
}
pub type gfxSize = [u64; 2usize];
pub type nsIntRect = root::mozilla::gfx::IntRect;
#[repr(C)]
#[derive(Debug, Copy)]
pub struct pixman_region32_data {
@ -27441,7 +27455,7 @@ pub mod root {
* smooth msd, or normal scrolling.
*
* SMOOTH scrolls have a symmetrical acceleration and deceleration curve
* modeled with a set of splines that guarantee that the destination will be
* modeled with a set of splines that guarantee that the destination will be
* reached over a fixed time interval. SMOOTH will only be smooth if smooth
* scrolling is actually enabled. This behavior is utilized by keyboard and
* mouse wheel scrolling events.
@ -27824,6 +27838,11 @@ pub mod root {
nsLanguageAtomService ) , "::" , stringify ! (
mLocaleLanguage ) ));
}
/**
* Currently needs to be 'double' for Cairo compatibility. Could
* become 'float', perhaps, in some configurations.
*/
pub type gfxFloat = f64;
#[repr(C)]
#[derive(Debug, Copy)]
pub struct nsINamed {
@ -32956,7 +32975,7 @@ pub mod root {
pub type imgRequest_HasThreadSafeRefCnt = root::mozilla::TrueType;
#[test]
fn bindgen_test_layout_imgRequest() {
assert_eq!(::std::mem::size_of::<imgRequest>() , 416usize , concat ! (
assert_eq!(::std::mem::size_of::<imgRequest>() , 424usize , concat ! (
"Size of: " , stringify ! ( imgRequest ) ));
assert_eq! (::std::mem::align_of::<imgRequest>() , 8usize , concat ! (
"Alignment of " , stringify ! ( imgRequest ) ));
@ -38425,7 +38444,7 @@ pub mod root {
root::nsCharTraits ) ));
}
#[test]
fn __bindgen_test_layout__bindgen_ty_id_214925_instantiation_100() {
fn __bindgen_test_layout__bindgen_ty_id_214707_instantiation_100() {
assert_eq!(::std::mem::size_of::<u8>() , 1usize , concat ! (
"Size of template specialization: " , stringify ! ( u8 )
));
@ -38434,7 +38453,7 @@ pub mod root {
) ));
}
#[test]
fn __bindgen_test_layout__bindgen_ty_id_214961_instantiation_101() {
fn __bindgen_test_layout__bindgen_ty_id_214743_instantiation_101() {
assert_eq!(::std::mem::size_of::<u8>() , 1usize , concat ! (
"Size of template specialization: " , stringify ! ( u8 )
));

View file

@ -1424,7 +1424,7 @@ pub mod root {
pub mod css {
#[allow(unused_imports)]
use self::super::super::super::root;
#[repr(u32)]
#[repr(u8)]
/**
* Enum defining the mode in which a sheet is to be parsed. This is
* usually, but not always, the same as the cascade level at which the
@ -2302,7 +2302,6 @@ pub mod root {
impl Clone for FontVariation {
fn clone(&self) -> Self { *self }
}
pub type Matrix4x4 = [u32; 16usize];
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ScaleFactor {
@ -2311,6 +2310,7 @@ pub mod root {
#[derive(Debug, Copy, Clone)]
pub struct ScaleFactors2D {
}
pub type Matrix4x4 = [u32; 16usize];
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SourceSurface {
@ -2370,7 +2370,6 @@ pub mod root {
ePending = 2,
eUserAction = 3,
eRestore = 4,
eSentinel = 5,
}
extern "C" {
#[link_name =
@ -2381,6 +2380,13 @@ pub mod root {
pub const FrameMetrics_START_SCROLL_ID:
root::mozilla::layers::FrameMetrics_ViewID =
2;
pub const FrameMetrics_sScrollOffsetUpdateTypeCount: usize = 5;
extern "C" {
#[link_name =
"_ZN7mozilla6layers12FrameMetrics30sHighestScrollOffsetUpdateTypeE"]
pub static FrameMetrics_sHighestScrollOffsetUpdateType:
root::mozilla::layers::FrameMetrics_ScrollOffsetUpdateType;
}
#[test]
fn bindgen_test_layout_FrameMetrics() {
assert_eq!(::std::mem::size_of::<FrameMetrics>() , 184usize ,
@ -3211,7 +3217,6 @@ pub mod root {
eNone = 0,
eRefLayer = 1,
eScrollLayer = 2,
eSentinel = 3,
}
#[repr(C)]
#[derive(Debug, Copy)]
@ -3248,6 +3253,13 @@ pub mod root {
impl Clone for FocusTarget_FocusTargetData {
fn clone(&self) -> Self { *self }
}
pub const FocusTarget_sFocusTargetTypeCount: usize = 3;
extern "C" {
#[link_name =
"_ZN7mozilla6layers11FocusTarget23sHighestFocusTargetTypeE"]
pub static FocusTarget_sHighestFocusTargetType:
root::mozilla::layers::FocusTarget_FocusTargetType;
}
#[test]
fn bindgen_test_layout_FocusTarget() {
assert_eq!(::std::mem::size_of::<FocusTarget>() , 32usize ,
@ -6978,10 +6990,11 @@ pub mod root {
Content = 1,
ContentAndNotify = 2,
Style = 3,
InterruptibleLayout = 4,
Layout = 5,
Display = 6,
Count = 7,
EnsurePresShellInitAndFrames = 4,
InterruptibleLayout = 5,
Layout = 6,
Display = 7,
Count = 8,
}
#[repr(C)]
#[derive(Debug, Copy)]
@ -7460,9 +7473,9 @@ pub mod root {
pub mParsingMode: root::mozilla::css::SheetParsingMode,
pub mType: root::mozilla::StyleBackendType,
pub mDisabled: bool,
pub mDirty: bool,
pub mDocumentAssociationMode: root::mozilla::StyleSheet_DocumentAssociationMode,
pub mInner: *mut root::mozilla::StyleSheetInfo,
pub mDirty: bool,
pub mStyleSets: root::nsTArray<root::mozilla::StyleSetHandle>,
}
pub type StyleSheet_HasThreadSafeRefCnt = root::mozilla::FalseType;
@ -7501,7 +7514,7 @@ pub mod root {
RuleRemoved = 4,
RuleChanged = 5,
}
#[repr(u32)]
#[repr(u8)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum StyleSheet_DocumentAssociationMode {
OwnedByDocument = 0,
@ -7549,7 +7562,7 @@ pub mod root {
}
#[test]
fn bindgen_test_layout_StyleSheet() {
assert_eq!(::std::mem::size_of::<StyleSheet>() , 152usize , concat
assert_eq!(::std::mem::size_of::<StyleSheet>() , 136usize , concat
! ( "Size of: " , stringify ! ( StyleSheet ) ));
assert_eq! (::std::mem::align_of::<StyleSheet>() , 8usize , concat
! ( "Alignment of " , stringify ! ( StyleSheet ) ));
@ -7652,7 +7665,7 @@ pub mod root {
}
#[test]
fn bindgen_test_layout_ServoStyleSheet() {
assert_eq!(::std::mem::size_of::<ServoStyleSheet>() , 160usize ,
assert_eq!(::std::mem::size_of::<ServoStyleSheet>() , 144usize ,
concat ! (
"Size of: " , stringify ! ( ServoStyleSheet ) ));
assert_eq! (::std::mem::align_of::<ServoStyleSheet>() , 8usize ,
@ -7660,7 +7673,7 @@ pub mod root {
"Alignment of " , stringify ! ( ServoStyleSheet ) ));
assert_eq! (unsafe {
& ( * ( 0 as * const ServoStyleSheet ) ) . mRuleList
as * const _ as usize } , 152usize , concat ! (
as * const _ as usize } , 136usize , concat ! (
"Alignment of field: " , stringify ! ( ServoStyleSheet
) , "::" , stringify ! ( mRuleList ) ));
}
@ -7732,12 +7745,13 @@ pub mod root {
pub mComplete: bool,
pub mFirstChild: root::RefPtr<root::mozilla::StyleSheet>,
pub mSheets: [u64; 10usize],
pub mSourceMapURL: ::nsstring::nsStringRepr,
}
pub use self::super::super::root::mozilla::net::ReferrerPolicy as
StyleSheetInfo_ReferrerPolicy;
#[test]
fn bindgen_test_layout_StyleSheetInfo() {
assert_eq!(::std::mem::size_of::<StyleSheetInfo>() , 192usize ,
assert_eq!(::std::mem::size_of::<StyleSheetInfo>() , 208usize ,
concat ! ( "Size of: " , stringify ! ( StyleSheetInfo )
));
assert_eq! (::std::mem::align_of::<StyleSheetInfo>() , 8usize ,
@ -7795,6 +7809,12 @@ pub mod root {
const _ as usize } , 112usize , concat ! (
"Alignment of field: " , stringify ! ( StyleSheetInfo
) , "::" , stringify ! ( mSheets ) ));
assert_eq! (unsafe {
& ( * ( 0 as * const StyleSheetInfo ) ) .
mSourceMapURL as * const _ as usize } , 192usize ,
concat ! (
"Alignment of field: " , stringify ! ( StyleSheetInfo
) , "::" , stringify ! ( mSourceMapURL ) ));
}
#[repr(i32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
@ -8611,12 +8631,12 @@ pub mod root {
pub mBlobSerial: [u64; 2usize],
pub mOriginAttributes: root::mozilla::OriginAttributes,
pub mControlledDocument: *mut ::std::os::raw::c_void,
pub mHash: u32,
pub mHash: root::PLDHashNumber,
pub mIsChrome: bool,
}
#[test]
fn bindgen_test_layout_ImageCacheKey() {
assert_eq!(::std::mem::size_of::<ImageCacheKey>() , 80usize ,
assert_eq!(::std::mem::size_of::<ImageCacheKey>() , 88usize ,
concat ! (
"Size of: " , stringify ! ( ImageCacheKey ) ));
assert_eq! (::std::mem::align_of::<ImageCacheKey>() , 8usize ,
@ -8656,7 +8676,7 @@ pub mod root {
ImageCacheKey ) , "::" , stringify ! ( mHash ) ));
assert_eq! (unsafe {
& ( * ( 0 as * const ImageCacheKey ) ) . mIsChrome
as * const _ as usize } , 76usize , concat ! (
as * const _ as usize } , 80usize , concat ! (
"Alignment of field: " , stringify ! (
ImageCacheKey ) , "::" , stringify ! ( mIsChrome )
));
@ -10318,7 +10338,7 @@ pub mod root {
#[test]
fn bindgen_test_layout_ServoStyleSheetInner() {
assert_eq!(::std::mem::size_of::<ServoStyleSheetInner>() ,
208usize , concat ! (
224usize , concat ! (
"Size of: " , stringify ! ( ServoStyleSheetInner ) ));
assert_eq! (::std::mem::align_of::<ServoStyleSheetInner>() ,
8usize , concat ! (
@ -10326,14 +10346,14 @@ pub mod root {
));
assert_eq! (unsafe {
& ( * ( 0 as * const ServoStyleSheetInner ) ) .
mContents as * const _ as usize } , 192usize , concat
mContents as * const _ as usize } , 208usize , concat
! (
"Alignment of field: " , stringify ! (
ServoStyleSheetInner ) , "::" , stringify ! (
mContents ) ));
assert_eq! (unsafe {
& ( * ( 0 as * const ServoStyleSheetInner ) ) .
mURLData as * const _ as usize } , 200usize , concat !
mURLData as * const _ as usize } , 216usize , concat !
(
"Alignment of field: " , stringify ! (
ServoStyleSheetInner ) , "::" , stringify ! ( mURLData
@ -11494,7 +11514,6 @@ pub mod root {
NS_ERROR_PLUGIN_BLOCKLISTED = 2152465386,
NS_ERROR_PLUGIN_TIME_RANGE_NOT_SUPPORTED = 2152465387,
NS_ERROR_PLUGIN_CLICKTOPLAY = 2152465388,
NS_PLUGIN_INIT_PENDING = 4981741,
NS_TABLELAYOUT_CELL_NOT_FOUND = 5046272,
NS_POSITION_BEFORE_TABLE = 5046275,
NS_STATE_PROPERTY_NOT_THERE = 5046277,
@ -14374,7 +14393,7 @@ pub mod root {
pub struct nsAutoPtr_Proxy {
}
pub type nsAutoPtr_Proxy_member_function = u8;
pub type PLDHashNumber = u32;
pub type PLDHashNumber = usize;
#[repr(C)]
#[derive(Debug)]
pub struct PLDHashTable {
@ -14484,8 +14503,8 @@ pub mod root {
pub const PLDHashTable_kMinCapacity: u32 = 8;
pub const PLDHashTable_kMaxInitialLength: u32 = 33554432;
pub const PLDHashTable_kDefaultInitialLength: u32 = 4;
pub const PLDHashTable_kHashBits: u32 = 32;
pub const PLDHashTable_kGoldenRatio: u32 = 2654435769;
pub const PLDHashTable_kHashBits: u32 = 64;
pub const PLDHashTable_kGoldenRatio: u64 = 2135587859;
pub const PLDHashTable_kCollisionFlag: root::PLDHashNumber = 1;
#[test]
fn bindgen_test_layout_PLDHashTable() {
@ -14576,9 +14595,9 @@ pub mod root {
}
#[test]
fn bindgen_test_layout_PLDHashEntryHdr() {
assert_eq!(::std::mem::size_of::<PLDHashEntryHdr>() , 4usize , concat
assert_eq!(::std::mem::size_of::<PLDHashEntryHdr>() , 8usize , concat
! ( "Size of: " , stringify ! ( PLDHashEntryHdr ) ));
assert_eq! (::std::mem::align_of::<PLDHashEntryHdr>() , 4usize ,
assert_eq! (::std::mem::align_of::<PLDHashEntryHdr>() , 8usize ,
concat ! (
"Alignment of " , stringify ! ( PLDHashEntryHdr ) ));
assert_eq! (unsafe {
@ -15504,13 +15523,6 @@ pub mod root {
pub enum nsStyleAutoArray_WithSingleInitialElement {
WITH_SINGLE_INITIAL_ELEMENT = 0,
}
/**
* Currently needs to be 'double' for Cairo compatibility. Could
* become 'float', perhaps, in some configurations.
*/
pub type gfxFloat = f64;
pub type gfxSize = [u64; 2usize];
pub type nsIntRect = root::mozilla::gfx::IntRect;
pub const nsStyleUnit_eStyleUnit_MAX: root::nsStyleUnit =
nsStyleUnit::eStyleUnit_Calc;
#[repr(u8)]
@ -15982,6 +15994,8 @@ pub mod root {
nsEventStatus_eConsumeDoDefault = 2,
nsEventStatus_eSentinel = 3,
}
pub type gfxSize = [u64; 2usize];
pub type nsIntRect = root::mozilla::gfx::IntRect;
#[repr(C)]
#[derive(Debug, Copy)]
pub struct pixman_region32_data {
@ -26859,7 +26873,7 @@ pub mod root {
* smooth msd, or normal scrolling.
*
* SMOOTH scrolls have a symmetrical acceleration and deceleration curve
* modeled with a set of splines that guarantee that the destination will be
* modeled with a set of splines that guarantee that the destination will be
* reached over a fixed time interval. SMOOTH will only be smooth if smooth
* scrolling is actually enabled. This behavior is utilized by keyboard and
* mouse wheel scrolling events.
@ -27242,6 +27256,11 @@ pub mod root {
nsLanguageAtomService ) , "::" , stringify ! (
mLocaleLanguage ) ));
}
/**
* Currently needs to be 'double' for Cairo compatibility. Could
* become 'float', perhaps, in some configurations.
*/
pub type gfxFloat = f64;
#[repr(C)]
#[derive(Debug, Copy)]
pub struct nsINamed {
@ -32281,7 +32300,7 @@ pub mod root {
pub type imgRequest_HasThreadSafeRefCnt = root::mozilla::TrueType;
#[test]
fn bindgen_test_layout_imgRequest() {
assert_eq!(::std::mem::size_of::<imgRequest>() , 376usize , concat ! (
assert_eq!(::std::mem::size_of::<imgRequest>() , 384usize , concat ! (
"Size of: " , stringify ! ( imgRequest ) ));
assert_eq! (::std::mem::align_of::<imgRequest>() , 8usize , concat ! (
"Alignment of " , stringify ! ( imgRequest ) ));
@ -37750,7 +37769,7 @@ pub mod root {
root::nsCharTraits ) ));
}
#[test]
fn __bindgen_test_layout__bindgen_ty_id_211187_instantiation_98() {
fn __bindgen_test_layout__bindgen_ty_id_210969_instantiation_98() {
assert_eq!(::std::mem::size_of::<u8>() , 1usize , concat ! (
"Size of template specialization: " , stringify ! ( u8 )
));
@ -37759,7 +37778,7 @@ pub mod root {
) ));
}
#[test]
fn __bindgen_test_layout__bindgen_ty_id_211223_instantiation_99() {
fn __bindgen_test_layout__bindgen_ty_id_211005_instantiation_99() {
assert_eq!(::std::mem::size_of::<u8>() , 1usize , concat ! (
"Size of template specialization: " , stringify ! ( u8 )
));

View file

@ -98,7 +98,7 @@ use style::properties::parse_one_declaration_into;
use style::rule_tree::StyleSource;
use style::selector_parser::PseudoElementCascadeType;
use style::sequential;
use style::shared_lock::{SharedRwLock, SharedRwLockReadGuard, StylesheetGuards, ToCssWithGuard, Locked};
use style::shared_lock::{SharedRwLockReadGuard, StylesheetGuards, ToCssWithGuard, Locked};
use style::string_cache::Atom;
use style::style_adjuster::StyleAdjuster;
use style::stylearc::Arc;
@ -2863,32 +2863,56 @@ pub extern "C" fn Servo_GetComputedKeyframeValues(keyframes: RawGeckoKeyframeLis
let mut seen = LonghandIdSet::new();
// mServoDeclarationBlock is null in the case where we have an invalid css property.
let iter = keyframe.mPropertyValues.iter()
.filter(|&property| !property.mServoDeclarationBlock.mRawPtr.is_null());
let iter = keyframe.mPropertyValues.iter();
let mut property_index = 0;
for property in iter {
if simulate_compute_values_failure(property) {
continue;
}
let mut maybe_append_animation_value = |property: AnimatableLonghand,
value: Option<AnimationValue>| {
if seen.has_animatable_longhand_bit(&property) {
return;
}
seen.set_animatable_longhand_bit(&property);
// This is safe since we immediately write to the uninitialized values.
unsafe { animation_values.set_len((property_index + 1) as u32) };
animation_values[property_index].mProperty = (&property).into();
// We only make sure we have enough space for this variable,
// but didn't construct a default value for StyleAnimationValue,
// so we should zero it to avoid getting undefined behaviors.
animation_values[property_index].mValue.mGecko = unsafe { mem::zeroed() };
match value {
Some(v) => {
animation_values[property_index].mValue.mServo.set_arc_leaky(Arc::new(v));
},
None => {
animation_values[property_index].mValue.mServo.mRawPtr = ptr::null_mut();
},
}
property_index += 1;
};
if property.mServoDeclarationBlock.mRawPtr.is_null() {
let animatable_longhand =
AnimatableLonghand::from_nscsspropertyid(property.mProperty);
// |keyframes.mPropertyValues| should only contain animatable
// properties, but we check the result from_nscsspropertyid
// just in case.
if let Some(property) = animatable_longhand {
maybe_append_animation_value(property, None);
}
continue;
}
let declarations = unsafe { &*property.mServoDeclarationBlock.mRawPtr.clone() };
let declarations = Locked::<PropertyDeclarationBlock>::as_arc(&declarations);
let guard = declarations.read_with(&guard);
for anim in guard.to_animation_value_iter(&mut context, &default_values) {
if !seen.has_animatable_longhand_bit(&anim.0) {
// This is safe since we immediately write to the uninitialized values.
unsafe { animation_values.set_len((property_index + 1) as u32) };
seen.set_animatable_longhand_bit(&anim.0);
animation_values[property_index].mProperty = (&anim.0).into();
// We only make sure we have enough space for this variable,
// but didn't construct a default value for StyleAnimationValue,
// so we should zero it to avoid getting undefined behaviors.
animation_values[property_index].mValue.mGecko = unsafe { mem::zeroed() };
animation_values[property_index].mValue.mServo.set_arc_leaky(Arc::new(anim.1));
property_index += 1;
}
maybe_append_animation_value(anim.0, Some(anim.1));
}
}
}
@ -2978,18 +3002,12 @@ pub extern "C" fn Servo_AssertTreeIsClean(root: RawGeckoElementBorrowed) {
}
fn append_computed_property_value(keyframe: *mut structs::Keyframe,
style: &ComputedValues,
property: &AnimatableLonghand,
shared_lock: &SharedRwLock) {
let block = style.to_declaration_block(property.clone().into());
property: &AnimatableLonghand) {
unsafe {
let index = (*keyframe).mPropertyValues.len();
(*keyframe).mPropertyValues.set_len((index + 1) as u32);
(*keyframe).mPropertyValues[index].mProperty = property.into();
// FIXME. Bug 1360398: Do not set computed values once we handles
// missing keyframes with additive composition.
(*keyframe).mPropertyValues[index].mServoDeclarationBlock.set_arc_leaky(
Arc::new(shared_lock.wrap(block)));
(*keyframe).mPropertyValues[index].mServoDeclarationBlock.mRawPtr = ptr::null_mut();
}
}
@ -3000,11 +3018,9 @@ enum Offset {
fn fill_in_missing_keyframe_values(all_properties: &[AnimatableLonghand],
timing_function: nsTimingFunctionBorrowed,
style: &ComputedValues,
properties_set_at_offset: &LonghandIdSet,
offset: Offset,
keyframes: RawGeckoKeyframeListBorrowedMut,
shared_lock: &SharedRwLock) {
keyframes: RawGeckoKeyframeListBorrowedMut) {
let needs_filling = all_properties.iter().any(|ref property| {
!properties_set_at_offset.has_animatable_longhand_bit(property)
});
@ -3026,10 +3042,7 @@ fn fill_in_missing_keyframe_values(all_properties: &[AnimatableLonghand],
// Append properties that have not been set at this offset.
for ref property in all_properties.iter() {
if !properties_set_at_offset.has_animatable_longhand_bit(property) {
append_computed_property_value(keyframe,
style,
property,
shared_lock);
append_computed_property_value(keyframe, property);
}
}
}
@ -3038,7 +3051,6 @@ fn fill_in_missing_keyframe_values(all_properties: &[AnimatableLonghand],
pub extern "C" fn Servo_StyleSet_GetKeyframesForName(raw_data: RawServoStyleSetBorrowed,
name: *const nsACString,
inherited_timing_function: nsTimingFunctionBorrowed,
style: ServoComputedValuesBorrowed,
keyframes: RawGeckoKeyframeListBorrowedMut) -> bool {
debug_assert!(keyframes.len() == 0,
"keyframes should be initially empty");
@ -3051,7 +3063,6 @@ pub extern "C" fn Servo_StyleSet_GetKeyframesForName(raw_data: RawServoStyleSetB
None => return false,
};
let style = ComputedValues::as_arc(&style);
let global_style_data = &*GLOBAL_STYLE_DATA;
let guard = global_style_data.shared_lock.read();
@ -3094,10 +3105,7 @@ pub extern "C" fn Servo_StyleSet_GetKeyframesForName(raw_data: RawServoStyleSetB
// animation should be set to the underlying computed value for
// that keyframe.
for property in animation.properties_changed.iter() {
append_computed_property_value(keyframe,
style,
property,
&global_style_data.shared_lock);
append_computed_property_value(keyframe, property);
}
if current_offset == 0.0 {
has_complete_initial_keyframe = true;
@ -3150,20 +3158,16 @@ pub extern "C" fn Servo_StyleSet_GetKeyframesForName(raw_data: RawServoStyleSetB
if !has_complete_initial_keyframe {
fill_in_missing_keyframe_values(&animation.properties_changed,
inherited_timing_function,
style,
&properties_set_at_start,
Offset::Zero,
keyframes,
&global_style_data.shared_lock);
keyframes);
}
if !has_complete_final_keyframe {
fill_in_missing_keyframe_values(&animation.properties_changed,
inherited_timing_function,
style,
&properties_set_at_end,
Offset::One,
keyframes,
&global_style_data.shared_lock);
keyframes);
}
true
}