<!DOCTYPE html> <html lang="en" class="reftest-wait"> <meta charset="utf-8"> <title>This test fails - layerization should respect overflow:hidden clips around things with animated position</title> <style> div { min-height: 50px; box-model: border-box; } .first, .second { border: 1px solid blue; margin: 50px 0; position: relative; } .border { border: 1px solid black; } .clip { height: auto; overflow: hidden; padding: 10px 0 20px; } .animated-position { position: relative; left: 20px; margin-left: 220px; width: 100px; height: 100px; border-color: red; } body { margin: 0; padding: 0 100px; height: 3000px; } </style> <div class="first" reftest-assigned-layer="page-background"> <!-- This is just a regular box, it should end up in the page background layer. --> </div> <div class="clip border"> <div class="border animated-position reftest-no-paint reftest-opaque-layer"> <!-- The background of .clip is uniform and opaque, .animated-position should be able to pull up that background color and become opaque itself. However, since this clip is not created by an animated geometry root that is a scrollable frame, we currently fail to recognize it, so this test will fail. --> </div> </div> <div class="second" reftest-assigned-layer="page-background"> <!-- This should share a layer with .first and the page background. However, since we don't recognize that .animated-position is contained in a clip, .second gets its own layer above .animated-position, so this test will fail. --> </div> <script> var animatedLeft = document.querySelector(".animated-position"); function doTest() { animatedLeft.style.left = "-40px"; document.documentElement.removeAttribute("class"); } // Layerize #animatedLeft animatedLeft.offsetLeft; animatedLeft.style.left = "40px"; animatedLeft.offsetLeft; animatedLeft.style.left = "60px"; animatedLeft.offsetLeft; document.addEventListener("MozReftestInvalidate", doTest, false); setTimeout(doTest, 200); </script>