mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
style: Part 3: Add CSSScrollTimelineRule for CSSOM
Implement CSSScrollTimelineRule CSSOM API. https://drafts.csswg.org/scroll-animations-1/#the-css-scroll-timeline-rule-interface We rely on the CSSOM API for testing. However, the wpt doesn't match the current spec and it has some errors. We update the wpt and enable the preference for testing in the next patch. Differential Revision: https://phabricator.services.mozilla.com/D125766
This commit is contained in:
parent
2a11460915
commit
b297c10fbf
2 changed files with 24 additions and 11 deletions
|
@ -10,13 +10,11 @@
|
|||
|
||||
use crate::gecko::url::CssUrlData;
|
||||
use crate::gecko_bindings::structs::{
|
||||
RawServoAnimationValue, RawServoCounterStyleRule, RawServoCssUrlData,
|
||||
RawServoDeclarationBlock, RawServoFontFaceRule,
|
||||
RawServoFontFeatureValuesRule, RawServoImportRule, RawServoKeyframe,
|
||||
RawServoKeyframesRule, RawServoLayerRule, RawServoMediaList,
|
||||
RawServoMediaRule, RawServoMozDocumentRule, RawServoNamespaceRule,
|
||||
RawServoPageRule, RawServoStyleRule, RawServoStyleSheetContents,
|
||||
RawServoSupportsRule, ServoCssRules
|
||||
RawServoAnimationValue, RawServoCounterStyleRule, RawServoCssUrlData, RawServoDeclarationBlock,
|
||||
RawServoFontFaceRule, RawServoFontFeatureValuesRule, RawServoImportRule, RawServoKeyframe,
|
||||
RawServoKeyframesRule, RawServoLayerRule, RawServoMediaList, RawServoMediaRule,
|
||||
RawServoMozDocumentRule, RawServoNamespaceRule, RawServoPageRule, RawServoScrollTimelineRule,
|
||||
RawServoStyleRule, RawServoStyleSheetContents, RawServoSupportsRule, ServoCssRules,
|
||||
};
|
||||
use crate::gecko_bindings::sugar::ownership::{HasArcFFI, HasFFI, Strong};
|
||||
use crate::media_queries::MediaList;
|
||||
|
@ -25,9 +23,9 @@ use crate::properties::{ComputedValues, PropertyDeclarationBlock};
|
|||
use crate::shared_lock::Locked;
|
||||
use crate::stylesheets::keyframes_rule::Keyframe;
|
||||
use crate::stylesheets::{
|
||||
CounterStyleRule, CssRules, FontFaceRule, FontFeatureValuesRule,
|
||||
DocumentRule, ImportRule, KeyframesRule, LayerRule, MediaRule,
|
||||
NamespaceRule, PageRule, StyleRule, StylesheetContents, SupportsRule
|
||||
CounterStyleRule, CssRules, DocumentRule, FontFaceRule, FontFeatureValuesRule, ImportRule,
|
||||
KeyframesRule, LayerRule, MediaRule, NamespaceRule, PageRule, ScrollTimelineRule, StyleRule,
|
||||
StylesheetContents, SupportsRule,
|
||||
};
|
||||
use servo_arc::{Arc, ArcBorrow};
|
||||
use std::{mem, ptr};
|
||||
|
@ -90,6 +88,9 @@ impl_arc_ffi!(Locked<NamespaceRule> => RawServoNamespaceRule
|
|||
impl_arc_ffi!(Locked<PageRule> => RawServoPageRule
|
||||
[Servo_PageRule_AddRef, Servo_PageRule_Release]);
|
||||
|
||||
impl_arc_ffi!(Locked<ScrollTimelineRule> => RawServoScrollTimelineRule
|
||||
[Servo_ScrollTimelineRule_AddRef, Servo_ScrollTimelineRule_Release]);
|
||||
|
||||
impl_arc_ffi!(Locked<SupportsRule> => RawServoSupportsRule
|
||||
[Servo_SupportsRule_AddRef, Servo_SupportsRule_Release]);
|
||||
|
||||
|
|
|
@ -169,6 +169,12 @@ pub enum Source {
|
|||
None,
|
||||
}
|
||||
|
||||
impl Default for Source {
|
||||
fn default() -> Self {
|
||||
Source::Auto
|
||||
}
|
||||
}
|
||||
|
||||
/// The scroll-timeline orientation.
|
||||
/// https://drafts.csswg.org/scroll-animations/#descdef-scroll-timeline-orientation
|
||||
///
|
||||
|
@ -189,11 +195,17 @@ pub enum Orientation {
|
|||
Vertical,
|
||||
}
|
||||
|
||||
impl Default for Orientation {
|
||||
fn default() -> Self {
|
||||
Orientation::Auto
|
||||
}
|
||||
}
|
||||
|
||||
/// Scroll-timeline offsets. We treat None as an empty vector.
|
||||
/// value: none | <scroll-timeline-offset>#
|
||||
///
|
||||
/// https://drafts.csswg.org/scroll-animations/#descdef-scroll-timeline-scroll-offsets
|
||||
#[derive(Clone, Debug, ToCss, ToShmem)]
|
||||
#[derive(Clone, Default, Debug, ToCss, ToShmem)]
|
||||
#[css(comma)]
|
||||
pub struct ScrollOffsets(#[css(if_empty = "none", iterable)] Box<[ScrollTimelineOffset]>);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue