Bug 1367278 - Call may_have_animations() for parent element in the case where the target is pseudo element. r?birtles
In case of pseudo elements ElementHasAnimations is set on the parent element.
updating-animation-on-pseudo-element.html fails without this patch, succeeds
with this patch.
MozReview-Commit-ID: HJaX7m8nV96
--- a/layout/reftests/css-animations/reftest.list
+++ b/layout/reftests/css-animations/reftest.list
@@ -45,8 +45,10 @@ fails == background-position-important.h
== mask-position-after-finish-1a.html mask-anim-ref.html
== mask-position-after-finish-1b.html mask-anim-ref.html
== mask-position-in-delay-1a.html mask-anim-ref.html
== mask-position-in-delay-1b.html mask-anim-ref.html
== mask-size-after-finish-1a.html mask-anim-ref.html
== mask-size-after-finish-1b.html mask-anim-ref.html
== mask-size-in-delay-1a.html mask-anim-ref.html
== mask-size-in-delay-1b.html mask-anim-ref.html
+
+== updating-animation-on-pseudo-element.html updating-animation-on-pseudo-element-ref.html
new file mode 100644
--- /dev/null
+++ b/layout/reftests/css-animations/updating-animation-on-pseudo-element-ref.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<style>
+#target::before {
+ content: 'before';
+ margin-left: 10em;
+ font-size: 20px;
+}
+</style>
+<div id="target"></div>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/css-animations/updating-animation-on-pseudo-element.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<style>
+@keyframes anim {
+ from { margin-left: 10em; }
+ to { margin-left: 10em; }
+}
+#target::before {
+ content: 'before';
+}
+#target.anim::before {
+ animation: anim 100s infinite;
+ font-size: 10px;
+}
+#target.bigger-font::before {
+ font-size: 20px;
+}
+</style>
+<div id="target"></div>
+<script>
+addEventListener('DOMContentLoaded', () => {
+ var target = document.getElementById('target');
+
+ // Start an animation on pseudo element.
+ target.classList.add('anim');
+
+ requestAnimationFrame(() => {
+ // The animation on pseudo element should be updated
+ // when the target element classes are modified.
+ target.classList.add('bigger-font');
+
+ requestAnimationFrame(() => {
+ document.documentElement.classList.remove('reftest-wait');
+ });
+ });
+});
+</script>
+</html>