mirror of
https://github.com/servo/servo.git
synced 2025-08-16 02:45:36 +01:00
style: Use OwnedSlice for will-change.
We could use ArcSlice if wanted I guess, your call. Though will change is not supposed to be used very frequently. Differential Revision: https://phabricator.services.mozilla.com/D30548
This commit is contained in:
parent
5f6c8d9060
commit
85752fa479
2 changed files with 25 additions and 84 deletions
|
@ -642,6 +642,7 @@ pub enum OverflowClipBox {
|
|||
#[derive(
|
||||
Clone,
|
||||
Debug,
|
||||
Default,
|
||||
MallocSizeOf,
|
||||
PartialEq,
|
||||
SpecifiedValueInfo,
|
||||
|
@ -650,38 +651,38 @@ pub enum OverflowClipBox {
|
|||
ToResolvedValue,
|
||||
ToShmem,
|
||||
)]
|
||||
/// Provides a rendering hint to the user agent,
|
||||
/// stating what kinds of changes the author expects
|
||||
/// to perform on the element
|
||||
#[css(comma)]
|
||||
#[repr(C)]
|
||||
/// Provides a rendering hint to the user agent, stating what kinds of changes
|
||||
/// the author expects to perform on the element.
|
||||
///
|
||||
/// `auto` is represented by an empty `features` list.
|
||||
///
|
||||
/// <https://drafts.csswg.org/css-will-change/#will-change>
|
||||
pub enum WillChange {
|
||||
/// Expresses no particular intent
|
||||
Auto,
|
||||
/// <custom-ident>
|
||||
#[css(comma)]
|
||||
AnimateableFeatures {
|
||||
/// The features that are supposed to change.
|
||||
#[css(iterable)]
|
||||
features: Box<[CustomIdent]>,
|
||||
/// A bitfield with the kind of change that the value will create, based
|
||||
/// on the above field.
|
||||
#[css(skip)]
|
||||
bits: WillChangeBits,
|
||||
},
|
||||
pub struct WillChange {
|
||||
/// The features that are supposed to change.
|
||||
///
|
||||
/// TODO(emilio): Consider using ArcSlice since we just clone them from the
|
||||
/// specified value? That'd save an allocation, which could be worth it.
|
||||
#[css(iterable, if_empty = "auto")]
|
||||
features: crate::OwnedSlice<CustomIdent>,
|
||||
/// A bitfield with the kind of change that the value will create, based
|
||||
/// on the above field.
|
||||
#[css(skip)]
|
||||
bits: WillChangeBits,
|
||||
}
|
||||
|
||||
impl WillChange {
|
||||
#[inline]
|
||||
/// Get default value of `will-change` as `auto`
|
||||
pub fn auto() -> WillChange {
|
||||
WillChange::Auto
|
||||
pub fn auto() -> Self {
|
||||
Self::default()
|
||||
}
|
||||
}
|
||||
|
||||
bitflags! {
|
||||
/// The change bits that we care about.
|
||||
#[derive(MallocSizeOf, SpecifiedValueInfo, ToComputedValue, ToResolvedValue, ToShmem)]
|
||||
#[derive(Default, MallocSizeOf, SpecifiedValueInfo, ToComputedValue, ToResolvedValue, ToShmem)]
|
||||
#[repr(C)]
|
||||
pub struct WillChangeBits: u8 {
|
||||
/// Whether the stacking context will change.
|
||||
|
@ -746,7 +747,7 @@ impl Parse for WillChange {
|
|||
.try(|input| input.expect_ident_matching("auto"))
|
||||
.is_ok()
|
||||
{
|
||||
return Ok(WillChange::Auto);
|
||||
return Ok(Self::default());
|
||||
}
|
||||
|
||||
let mut bits = WillChangeBits::empty();
|
||||
|
@ -767,8 +768,8 @@ impl Parse for WillChange {
|
|||
Ok(ident)
|
||||
})?;
|
||||
|
||||
Ok(WillChange::AnimateableFeatures {
|
||||
features: custom_idents.into_boxed_slice(),
|
||||
Ok(Self {
|
||||
features: custom_idents.into(),
|
||||
bits,
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue