diff options
Diffstat (limited to 'layout/reftests/invalidation/layer-splitting-6.html')
-rw-r--r-- | layout/reftests/invalidation/layer-splitting-6.html | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/layout/reftests/invalidation/layer-splitting-6.html b/layout/reftests/invalidation/layer-splitting-6.html new file mode 100644 index 000000000..42c235f37 --- /dev/null +++ b/layout/reftests/invalidation/layer-splitting-6.html @@ -0,0 +1,117 @@ +<!DOCTYPE html> +<html lang="en" class="reftest-wait" + reftest-displayport-x="0" + reftest-displayport-y="0" + reftest-displayport-w="800" + reftest-displayport-h="1000"> +<meta charset="utf-8"> +<title>Things overlapping active scrollboxes should be in a layer on top of the scrolled contents, and that layer shouldn't pull up a background color through the scrollbox.</title> +<!-- + This test is the same as layer-splitting-5.html, but without the scrollbox + border. The lack of a border here makes it attractive for .overlap to pull + a background color from the page background (because there's no scrollbox + border in the way), but it shouldn't do that because .scrolled can move + under it. +--> + +<style> + +div { + height: 50px; + border: 1px solid; + box-model: border-box; +} + +.first, .second { + border-color: blue; + margin: 50px 0; +} + +.overlap { + border-color: #088; + margin-left: 100px; + width: 80px; + margin-bottom: -30px; + position: relative; +} + +.scrollable { + height: auto; + overflow: auto; + border: none; +} + +.scrollarea { + width: 5000px; + border: none; + padding: 10px 0 20px; + height: auto; +} + +.scrolled { + 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="overlap reftest-no-paint"> + <!-- + This item intersects with the scrollable box and is positioned above + .scrolled, in z-order, so it should be split into its own layer as soon + as the scrollbox gets active scrolling. The splitting should not wait for + .scrolled to move under .overlap. + --> +</div> + +<div class="scrollable"> + <div class="scrollarea"> + <div class="scrolled reftest-opaque-layer"> + <!-- + This will move under .overlap by .scrollable being scrolled. This + action should not invalidate .overlap. + + Furthermore, since the background of .scrollable is uniform and opaque, + .scrolled should be able to pull up that background color and become + opaque itself. + --> + </div> + </div> +</div> + +<div class="second" reftest-assigned-layer="page-background"> + <!-- + This should share a layer with .first and the page background. + --> +</div> + +<script> + +var scrollable = document.querySelector(".scrollable"); + +function doTest() { + scrollable.scrollLeft = 100; + document.documentElement.removeAttribute("class"); +} + +// Make .scrollable start out with active scrolling. +scrollable.scrollLeft = 0; +scrollable.scrollLeft = 20; +document.addEventListener("MozReftestInvalidate", doTest, false); + +</script> + |