Closed
Bug 1371493
Opened 8 years ago
Closed 8 years ago
stylo: Servo_GetComputedKeyframeValues does not respect property ordering
Categories
(Core :: CSS Parsing and Computation, defect, P2)
Core
CSS Parsing and Computation
Tracking
()
RESOLVED
FIXED
mozilla56
Tracking | Status | |
---|---|---|
firefox56 | --- | fixed |
People
(Reporter: birtles, Assigned: birtles)
References
Details
Attachments
(2 files, 2 obsolete files)
When calculating the animation properties from keyframes there are specific rules for the order in which properties apply when shorthands and longhands overlap:
"If conflicts arise when expanding shorthand properties due to shorthand
properties overlapping with existing longhand properties or other with other
shorthand properties, apply the following rules in order until the conflict is
resolved:
1. Longhand properties override shorthand properties (e.g. border-top-color
overrides border-top).
2. Shorthand properties with fewer longhand components override those with
more longhand components (e.g. border-top overrides border-color).
3. For shorthand properties with an equal number of longhand components,
properties whose IDL name (see the CSS property to IDL attribute
algorithm [CSSOM]) appears earlier when sorted in ascending order by the
Unicode codepoints that make up each IDL name, override those who appear
later."[1]
Gecko implements this via the PropertyPriorityIterator. Servo's Servo_GetComputedKeyframeValues does not appear to do this however, hence several tests in dom/animation/test/chrome/test_animation_properties.html fail.
[1] https://w3c.github.io/web-animations/#calculating-computed-keyframes
[2] http://searchfox.org/mozilla-central/rev/a798ee4fc323f9387b7576dbed177859d29d09b7/dom/animation/KeyframeUtils.cpp#154
Updated•8 years ago
|
Priority: -- → P2
Assignee | ||
Updated•8 years ago
|
Assignee: nobody → bbirtles
Status: NEW → ASSIGNED
Assignee | ||
Comment 1•8 years ago
|
||
This seems to mostly work although the corresponding tests won't pass without 1381389 (which should hit central soon I expect).
Assignee | ||
Updated•8 years ago
|
Attachment #8888683 -
Attachment is obsolete: true
Assignee | ||
Comment 2•8 years ago
|
||
After rebasing and fixing a minor bug in KeyframeEffectReadOnly::GetProperties, dom/animation/test/chrome/test_animation_properties.html passes for me (although since we don't run this test on Stylo builds yet there are no test expectations to update).
https://treeherder.mozilla.org/#/jobs?repo=try&revision=1035e929c56455c46e01b958fe3abbf2d24f07f8
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment 5•8 years ago
|
||
mozreview-review |
Comment on attachment 8889252 [details]
Bug 1371493 - Compare AnimationValues when producing property-based keyframes;
https://reviewboard.mozilla.org/r/160308/#review165584
Attachment #8889252 -
Flags: review?(hikezoe) → review+
Comment 6•8 years ago
|
||
mozreview-review |
Comment on attachment 8889251 [details]
Bug 1371493 - Iterate through properties in priority order when computing keyframes;
https://reviewboard.mozilla.org/r/160306/#review165588
Looks good, thanks!
::: servo/components/style/properties/helpers/animated_properties.mako.rs:3226
(Diff revision 1)
> +pub fn compare_property_priority(a: &PropertyId, b: &PropertyId) -> cmp::Ordering
> +{
Nit: "{" on previous line for Rust.
::: servo/ports/geckolib/glue.rs:2952
(Diff revision 1)
> + if self.curr >= self.sorted_property_indices.len() {
> + return None
> + }
> + self.curr += 1;
> + Some(&self.properties[self.sorted_property_indices[self.curr - 1].index])
Nit: use a 4 space indent here.
Attachment #8889251 -
Flags: review?(cam) → review+
Assignee | ||
Comment 7•8 years ago
|
||
Comment hidden (mozreview-request) |
Assignee | ||
Updated•8 years ago
|
Attachment #8889251 -
Attachment is obsolete: true
Pushed by bbirtles@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/e09385879b6e
Compare AnimationValues when producing property-based keyframes; r=hiro
Comment 10•8 years ago
|
||
bugherder |
Status: ASSIGNED → RESOLVED
Closed: 8 years ago
status-firefox56:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla56
You need to log in
before you can comment on or make changes to this bug.
Description
•