Bug 1380258 - A reftest for stopping CSS animations on discarded pseudo elements. r?birtles draft
authorHiroyuki Ikezoe <hikezoe@mozilla.com>
Mon, 24 Jul 2017 09:20:22 +0900
changeset 614099 023d0a1feadb2c01b67e0c21889ff22751a8412b
parent 614098 b561a0453c9044ef14b6be9384236a4a1cd91f48
child 638777 4cce8d2a346bc5f5eec88f6675401710541f8ce5
push id69914
push userhikezoe@mozilla.com
push dateMon, 24 Jul 2017 04:10:48 +0000
reviewersbirtles
bugs1380258
milestone56.0a1
Bug 1380258 - A reftest for stopping CSS animations on discarded pseudo elements. r?birtles This reftest fails without the first patch on stylo. MozReview-Commit-ID: E5pBzBw9x8B
layout/reftests/css-animations/reftest.list
layout/reftests/css-animations/stop-animation-on-discarded-pseudo-element.html
--- a/layout/reftests/css-animations/reftest.list
+++ b/layout/reftests/css-animations/reftest.list
@@ -46,9 +46,11 @@ fails == background-position-important.h
 == 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
 
+== stop-animation-on-discarded-pseudo-element.html about:blank
+
 == updating-animation-on-pseudo-element.html updating-animation-on-pseudo-element-ref.html
new file mode 100644
--- /dev/null
+++ b/layout/reftests/css-animations/stop-animation-on-discarded-pseudo-element.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<style>
+@keyframes anim {
+  0% { background-color: red; }
+  100% { background-color: red; }
+}
+#target.x::before,
+#target.y::before {
+  content: "";
+  position: absolute;
+  width: 100px;
+  height: 100px;
+}
+#target.x::before {
+  animation: anim 100s infinite;
+}
+</style>
+<div id="target"></div>
+<script>
+var target = document.getElementById('target');
+requestAnimationFrame(() => {
+  // Create ::before, start animation
+  target.className = 'x';
+  requestAnimationFrame(() => {
+    // Remove ::before, stop animation
+    target.className = '';
+
+    requestAnimationFrame(() => {
+      // Create ::before, should not be animating
+      target.className = 'y';
+      document.documentElement.classList.remove('reftest-wait');
+    });
+  });
+});
+</script>