Skip to content

Commit

Permalink
style: Don't share styles when an element has animations applied to it.
Browse files Browse the repository at this point in the history
We already avoid putting styles in the shared style cache for an element that
has animations[1] but if we are doing the initial style of two siblings where
the _second_ has animations applied, there is nothing to stop us from trying to
share with the first (un-animated) element. This patch adds a check to prevent
sharing in that case since sharing style between animated elements is unsound
for the reasons described in [1].

A number of tests including:

  testing/web-platform/tests/web-animations/animation-model/animation-types/visibility.html

will fail without this fix once we remove the style flush from
KeyframeEffect::SetKeyframes later in this patch series.

[1] https://searchfox.org/mozilla-central/rev/6e3cc153566f5f288ae768a2172385b8436d61dd/servo/components/style/sharing/mod.rs#597

Differential Revision: https://phabricator.services.mozilla.com/D18913
  • Loading branch information
birtles authored and emilio committed Feb 24, 2019
1 parent 07cb325 commit 71d9fe5
Showing 1 changed file with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions components/style/sharing/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -766,6 +766,11 @@ impl<E: TElement> StyleSharingCache<E> {
return None;
}

if target.element.has_animations() {
trace!("Miss: Has Animations");
return None;
}

if target.matches_user_and_author_rules() !=
candidate.element.matches_user_and_author_rules()
{
Expand Down

0 comments on commit 71d9fe5

Please sign in to comment.