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
--- 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>