aboutsummaryrefslogtreecommitdiffstats
path: root/components/style/values/generics/easing.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/style/values/generics/easing.rs')
-rw-r--r--components/style/values/generics/easing.rs25
1 files changed, 23 insertions, 2 deletions
diff --git a/components/style/values/generics/easing.rs b/components/style/values/generics/easing.rs
index 018f51bba8f..f4f93a45479 100644
--- a/components/style/values/generics/easing.rs
+++ b/components/style/values/generics/easing.rs
@@ -6,6 +6,7 @@
//! https://drafts.csswg.org/css-easing/#timing-functions
use values::CSSFloat;
+use parser::ParserContext;
/// A generic easing function.
#[derive(Clone, Copy, Debug, MallocSizeOf, PartialEq, SpecifiedValueInfo, ToComputedValue, ToCss)]
@@ -23,7 +24,8 @@ pub enum TimingFunction<Integer, Number> {
x2: Number,
y2: Number,
},
- /// `step-start | step-end | steps(<integer>, [ start | end ]?)`
+ /// `step-start | step-end | steps(<integer>, [ <step-position> ]?)`
+ /// `<step-position> = jump-start | jump-end | jump-none | jump-both | start | end`
#[css(comma, function)]
#[value_info(other_values = "step-start,step-end")]
Steps(Integer, #[css(skip_if = "is_end")] StepPosition),
@@ -52,18 +54,37 @@ pub enum TimingKeyword {
EaseInOut,
}
+#[cfg(feature = "gecko")]
+fn step_position_jump_enabled(_context: &ParserContext) -> bool {
+ use gecko_bindings::structs;
+ unsafe { structs::StaticPrefs_sVarCache_layout_css_step_position_jump_enabled }
+}
+
+#[cfg(feature = "servo")]
+fn step_position_jump_enabled(_context: &ParserContext) -> bool {
+ false
+}
+
#[allow(missing_docs)]
#[cfg_attr(feature = "servo", derive(Deserialize, Serialize))]
#[derive(Clone, Copy, Debug, Eq, MallocSizeOf, Parse, PartialEq, ToComputedValue, ToCss)]
#[repr(u8)]
pub enum StepPosition {
+ #[parse(condition = "step_position_jump_enabled")]
+ JumpStart,
+ #[parse(condition = "step_position_jump_enabled")]
+ JumpEnd,
+ #[parse(condition = "step_position_jump_enabled")]
+ JumpNone,
+ #[parse(condition = "step_position_jump_enabled")]
+ JumpBoth,
Start,
End,
}
#[inline]
fn is_end(position: &StepPosition) -> bool {
- *position == StepPosition::End
+ *position == StepPosition::JumpEnd || *position == StepPosition::End
}
impl<Integer, Number> TimingFunction<Integer, Number> {