Bug 1367278 - Call may_have_animations() for parent element in the case where the target is pseudo element. r=birtles
authorHiroyuki Ikezoe <hikezoe@mozilla.com>
Thu, 20 Jul 2017 12:53:11 +0900
changeset 418794 1f5cc20c3be3dc7650dc6bcd9604ac648f209683
parent 418793 e21a53b6903e55f26550d361c65aaa7f2dac3fdf
child 418795 687efdbdcd84aa3465945558f70b8bf96df60ce1
push id7566
push usermtabara@mozilla.com
push dateWed, 02 Aug 2017 08:25:16 +0000
treeherdermozilla-beta@86913f512c3c [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersbirtles
bugs1367278
milestone56.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
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
layout/reftests/css-animations/reftest.list
layout/reftests/css-animations/updating-animation-on-pseudo-element-ref.html
layout/reftests/css-animations/updating-animation-on-pseudo-element.html
--- 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>