Bug 1381420 - A crash test that has an element is not restyled but has reconstruct frame damage during flushing throttled animations. r?emilio draft
authorHiroyuki Ikezoe <hikezoe@mozilla.com>
Wed, 26 Jul 2017 11:50:12 +0900
changeset 615490 1b494f695ab7f95cca12e4654682dd503566d3cf
parent 615176 32d9d1e81cc607320a36391845917f645f7a7f72
child 639197 aa9fe101c7ce923c7d033c9842ecfac6ae361112
push id70380
push userhikezoe@mozilla.com
push dateWed, 26 Jul 2017 02:50:30 +0000
reviewersemilio
bugs1381420
milestone56.0a1
Bug 1381420 - A crash test that has an element is not restyled but has reconstruct frame damage during flushing throttled animations. r?emilio The details element, which is a sibling of an animating element, is checked whether the element needs to be processed in a post traversal for throttled animation flush because the parent element has animation-only dirty bit (i.e. the parent element is a common ancestor of the animating element and the details element). Also at the moment of the check the details element has reconstruct frame damage because 'open' attribute is changed. Thus in the check the details element was not restyled but had reconstruct frame damage. MozReview-Commit-ID: FvsyZlUjhFi
layout/style/crashtests/1381420-1.html
layout/style/crashtests/crashtests.list
new file mode 100644
--- /dev/null
+++ b/layout/style/crashtests/1381420-1.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<title></title>
+<style>
+@keyframes anim {
+  from { transform: scale(1); }
+  to { transform: rotate(0deg); }
+}
+#target {
+  animation: anim 3s infinite;
+  background-color: blue;
+  width: 100px;
+  height: 100px;
+}
+</style>
+<div>
+<div id="target"></div>
+<details id="details" open>
+  <summary>Summary</summary>
+  <p>detail description</p>
+</details>
+</div>
+<script>
+window.addEventListener('load', () => {
+  requestAnimationFrame(() => {
+    details.open = false;
+    SpecialPowers.getDOMWindowUtils(window)
+                 .sendMouseEvent("mousemove", 100, 100, 1,
+                                 0, 1, 0);
+    requestAnimationFrame(() => {
+      document.documentElement.classList.remove("reftest-wait");
+    });
+  });
+});
+</script>
--- a/layout/style/crashtests/crashtests.list
+++ b/layout/style/crashtests/crashtests.list
@@ -177,15 +177,16 @@ load content-only-on-link-before.html
 load content-only-on-visited-before.html
 load 1375812-1.html
 load 1377053-1.html
 load 1377256-1.html
 load 1378064-1.html
 load 1378814.html
 load 1380800.html
 load link-transition-before.html
+load 1381420-1.html
 load 1381682.html
 load 1382672.html
 load 1382710.html
 pref(dom.animations-api.core.enabled,true) load 1383589-1.html
 load 1383001.html
 load 1383001-2.html
 load 1383319.html