summaryrefslogtreecommitdiffstats
path: root/layout/reftests/invalidation/layer-splitting-6.html
diff options
context:
space:
mode:
Diffstat (limited to 'layout/reftests/invalidation/layer-splitting-6.html')
-rw-r--r--layout/reftests/invalidation/layer-splitting-6.html117
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>
+