OLD | NEW |
---|---|
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 | 2 |
3 <html> | 3 <html> |
4 <head> | 4 <head> |
5 <style> | 5 <style> |
6 .container { | 6 .container { |
7 width: 200px; | 7 width: 200px; |
8 height: 200px; | 8 height: 200px; |
9 overflow: scroll; | 9 overflow: scroll; |
10 border: 1px solid black; | 10 border: 1px solid black; |
(...skipping 30 matching lines...) Expand all Loading... | |
41 width: 180px; | 41 width: 180px; |
42 height: 30px; | 42 height: 30px; |
43 margin: 10px; | 43 margin: 10px; |
44 top: -20px; | 44 top: -20px; |
45 background-color: yellow; | 45 background-color: yellow; |
46 } | 46 } |
47 </style> | 47 </style> |
48 <script src="resources/automatically-opt-into-composited-scrolling.js"></scrip t> | 48 <script src="resources/automatically-opt-into-composited-scrolling.js"></scrip t> |
49 <script src="resources/build-paint-order-lists.js"></script> | 49 <script src="resources/build-paint-order-lists.js"></script> |
50 <script> | 50 <script> |
51 if (window.internals) | |
52 window.internals.settings.setAcceleratedCompositingForOverflowScrollEnable dMode( | |
53 window.internals.settings.AcceleratedCompositingForOverflowScrollEnabl ed); | |
54 | |
51 function compareStackingOrderWithPaintOrder(stackingOrder, paintOrder) | 55 function compareStackingOrderWithPaintOrder(stackingOrder, paintOrder) |
52 { | 56 { |
53 if (debugMode) { | 57 if (debugMode) { |
54 write("paint order:") | 58 write("paint order:") |
55 for (var i = 0; i < paintOrder.length; i++) | 59 for (var i = 0; i < paintOrder.length; i++) |
56 write(paintOrder[i].id + " " + paintOrder[i].className + " " + paintOr der[paintOrder.length - i - 1].tagName); | 60 write(paintOrder[i].id + " " + paintOrder[i].className + " " + paintOr der[paintOrder.length - i - 1].tagName); |
57 | 61 |
58 write("stacking order:") | 62 write("stacking order:") |
59 for (var i = 0; i < stackingOrder.length; i++) | 63 for (var i = 0; i < stackingOrder.length; i++) |
60 write(stackingOrder[i].id + " " + stackingOrder[i].className + " " + s tackingOrder[i].tagName); | 64 write(stackingOrder[i].id + " " + stackingOrder[i].className + " " + s tackingOrder[i].tagName); |
(...skipping 12 matching lines...) Expand all Loading... | |
73 if (stackingOrder[i] === paintOrder[paintOrder.length - j - 1]) | 77 if (stackingOrder[i] === paintOrder[paintOrder.length - j - 1]) |
74 j++; | 78 j++; |
75 | 79 |
76 if (debugMode) | 80 if (debugMode) |
77 write(stackingOrder.length + " " + i + " " + paintOrder.length + " " + j ); | 81 write(stackingOrder.length + " " + i + " " + paintOrder.length + " " + j ); |
78 | 82 |
79 return j == paintOrder.length; | 83 return j == paintOrder.length; |
80 } | 84 } |
81 | 85 |
82 function testPermutation(count) { | 86 function testPermutation(count) { |
87 if (!window.internals) | |
88 return; | |
89 | |
83 var container = document.getElementById('container'); | 90 var container = document.getElementById('container'); |
84 // Here we want to compare paint order lists before and after promotion | 91 // Here we want to compare paint order lists before and after promotion |
85 // to the actual stacking order as determined by hit-testing. So we | 92 // to the actual stacking order as determined by hit-testing. So we |
86 // first force the element not to promote, then compute its paint and | 93 // first force the element not to promote, then compute its paint and |
87 // stacking order lists. We then force the element to opt in, and | 94 // stacking order lists. We then force the element to opt in, and |
88 // generate the paint and stacking order lists after opt-in. | 95 // generate the paint and stacking order lists after opt-in. |
89 // | 96 // |
90 // The paint order lists should exactly match the stacking order lists | 97 // The paint order lists should exactly match the stacking order lists |
91 // (modulo children that fall outside of the hit-testing area | 98 // (modulo children that fall outside of the hit-testing area |
92 // on-screen), both before and after promotion. | 99 // on-screen), both before and after promotion. |
93 container.style.webkitTransform = 'translateZ(0px)'; | 100 container.style.webkitTransform = 'translateZ(0px)'; |
94 document.body.offsetTop; | 101 document.body.offsetTop; |
95 | 102 |
96 window.internals.settings.setAcceleratedCompositingForOverflowScrollEnable d(false); | 103 window.internals.settings.setAcceleratedCompositingForOverflowScrollEnable dMode( |
104 window.internals.settings.AcceleratedCompositingForOverflowScrollDisab led); | |
97 container.style.webkitTransform = ''; | 105 container.style.webkitTransform = ''; |
98 | 106 |
99 var oldStackingOrder = getStackingOrder(container); | 107 var oldStackingOrder = getStackingOrder(container); |
100 var oldPaintOrder = getPaintOrder(container); | 108 var oldPaintOrder = getPaintOrder(container); |
101 | 109 |
102 window.internals.settings.setAcceleratedCompositingForOverflowScrollEnable d(true); | 110 window.internals.settings.setAcceleratedCompositingForOverflowScrollEnable dMode( |
111 window.internals.settings.AcceleratedCompositingForOverflowScrollAlway sOn); | |
Julien - ping for review
2013/05/13 20:48:56
Same comment.
| |
103 container.style.webkitTransform = 'translateZ(0px)'; | 112 container.style.webkitTransform = 'translateZ(0px)'; |
104 | 113 |
105 var newStackingOrder = getStackingOrder(container); | 114 var newStackingOrder = getStackingOrder(container); |
106 var newPaintOrder = getPaintOrder(container); | 115 var newPaintOrder = getPaintOrder(container); |
107 | 116 |
117 window.internals.settings.setAcceleratedCompositingForOverflowScrollEnable dMode( | |
118 window.internals.settings.AcceleratedCompositingForOverflowScrollEnabl ed); | |
119 | |
108 // The getPaintOrder() function should return a pair of paint orders. | 120 // The getPaintOrder() function should return a pair of paint orders. |
109 // One before promotion and one after. This pair of lists should remain | 121 // One before promotion and one after. This pair of lists should remain |
110 // identical whether the element is actually currently promoted or not, | 122 // identical whether the element is actually currently promoted or not, |
111 // its purpose is to generate hypothetical pre- and post-lists to | 123 // its purpose is to generate hypothetical pre- and post-lists to |
112 // determine if the element is promotable. | 124 // determine if the element is promotable. |
113 if (!comparePaintOrderLists(oldPaintOrder, newPaintOrder)) | 125 if (!comparePaintOrderLists(oldPaintOrder, newPaintOrder)) |
114 write("iteration " + count + " FAIL - paint order lists not identical be fore/after promotion"); | 126 write("iteration " + count + " FAIL - paint order lists not identical be fore/after promotion"); |
115 | 127 |
116 if (!compareStackingOrderWithPaintOrder(oldStackingOrder, oldPaintOrder.be forePromote)) | 128 if (!compareStackingOrderWithPaintOrder(oldStackingOrder, oldPaintOrder.be forePromote)) |
117 write("iteration " + count + " FAIL - paint order list before promote do esn't match stacking order"); | 129 write("iteration " + count + " FAIL - paint order list before promote do esn't match stacking order"); |
(...skipping 16 matching lines...) Expand all Loading... | |
134 permute(testPermutation); | 146 permute(testPermutation); |
135 } | 147 } |
136 | 148 |
137 window.addEventListener('load', doTest, false); | 149 window.addEventListener('load', doTest, false); |
138 </script> | 150 </script> |
139 </head> | 151 </head> |
140 | 152 |
141 <body> | 153 <body> |
142 </body> | 154 </body> |
143 </html> | 155 </html> |
OLD | NEW |