Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / compositing / overflow / scrolling-neg-z-index-descendants-should-cause-repaint.html
1 <!DOCTYPE HTML>
2 <html>
3 <head>
4 <script>
5     if (window.testRunner)
6         window.testRunner.dumpAsText();
7
8     if (window.internals) {
9         window.internals.settings.setPreferCompositingToLCDTextEnabled(false);
10     }
11
12     function hasScrollbarRepaint(layerTree)
13     {
14         return hasScrollbarRepaintHelper(JSON.parse(layerTree));
15     }
16     
17     function hasScrollbarRepaintHelper(jsonLayerTree) {
18         var repaintRects = jsonLayerTree["repaintRects"];
19         if (repaintRects) {
20             for (var i = 0; i < repaintRects.length; ++i) {
21                 var width = repaintRects[i][2];
22                 var height = repaintRects[i][3];
23                 if (width == 15 && height == 285)
24                     return true;
25             }
26         }
27         var children = jsonLayerTree["children"];
28         if (children) {
29             for (var i = 0; i < children.length; i++) {
30                 if (hasScrollbarRepaintHelper(children[i]))
31                     return true;
32             }
33         }
34         return false;
35     }
36
37     function testRepaint() {
38         var result = "";
39         var container = document.getElementById("container");
40
41         document.body.offsetTop;
42
43         if (window.internals)
44             window.internals.startTrackingRepaints(document);
45
46         container.scrollTop = 100;
47
48         if (window.internals) {
49             if (hasScrollbarRepaint(window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_REPAINT_RECTS)))
50                 result += "PASS repainted when expected\n";
51             else
52                 result += "FAIL did not repaint when expected\n";
53             window.internals.stopTrackingRepaints(document);
54         }
55
56         var pre = document.createElement('pre');
57         document.body.appendChild(pre);
58         pre.innerHTML = result;
59         if (!window.internals)
60             document.getElementById("description").style.display = "block";
61     }
62
63     window.onload = testRepaint;
64 </script>
65 <style>
66     #container {
67         width: 100px;
68         height: 300px;
69         box-shadow: inset 3px 3px 10px grey;
70         overflow: auto;
71         border: 1px black solid;
72         overflow: scroll;
73         position: relative;
74         -webkit-backface-visibility: hidden;
75     }
76
77     #neg-z {
78         position: relative;
79         z-index: -1;
80     }
81
82     .scrolled {
83         width: 50px;
84         height: 50px;
85         margin: 10px;
86         position: relative;
87         background-color: green;    
88     }
89
90     #description {
91         display: none;
92     }
93 </style>
94 </head>
95 <body>
96     <pre id="description">
97         This test ensures that the logic for ensuring that we don't repaint when
98         scrolling composited layers works correctly in the face of neg z-order
99         descendants.
100     </pre>
101     <div id="container">
102         <div id="neg-z">
103             <div class="scrolled"></div>
104             <div class="scrolled"></div>
105             <div class="scrolled"></div>
106             <div class="scrolled"></div>
107             <div class="scrolled"></div>
108             <div class="scrolled"></div>
109             <div class="scrolled"></div>
110         </div>
111     </div>
112 </body>
113 </html>