servo: Merge #18195 - Don't cache style data if the element has running animations (from hiikezoe:disable-style-cache-for-animations); r=bholley,birtles

<!-- Please describe your changes on the following line: -->

https://bugzilla.mozilla.org/show_bug.cgi?id=1379203
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors

Source-Repo: https://github.com/servo/servo
Source-Revision: 1c9c0334ba7b03e0757a101d2758c1284566f420

--HG--
extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear
extra : subtree_revision : 305c56c585fedeb5ae4ed33d3011389f38f1ddfc
This commit is contained in:
Hiroyuki Ikezoe 2017-08-22 23:43:25 -05:00
parent 9a61cc8c87
commit ab399cee7e

View File

@ -509,6 +509,23 @@ impl<E: TElement> StyleSharingCandidateCache<E> {
return;
}
// If the element has running animations, we can't share style.
//
// This is distinct from the specifies_{animations,transitions} check below,
// because:
// * Animations can be triggered directly via the Web Animations API.
// * Our computed style can still be affected by animations after we no
// longer match any animation rules, since removing animations involves
// a sequential task and an additional traversal.
if element.has_animations() {
debug!("Failing to insert to the cache: running animations");
return;
}
// In addition to the above running animations check, we also need to
// check CSS animation and transition styles since it's possible that
// we are about to create CSS animations/transitions.
//
// These are things we don't check in the candidate match because they
// are either uncommon or expensive.
let box_style = style.get_box();