OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <html> | 2 <html> |
3 | 3 |
4 <head> | 4 <head> |
5 <script src="../../resources/run-after-display.js"></script> | 5 <script src="../../fast/repaint/resources/text-based-repaint.js"></script> |
6 <style> | 6 <style> |
7 | 7 |
8 .fixedContainer { | 8 .fixedContainer { |
9 position: fixed; | 9 position: fixed; |
10 overflow:hidden; | 10 overflow:hidden; |
11 background-color: #a0a0a0; | 11 background-color: #a0a0a0; |
12 bottom: 0px; | 12 bottom: 0px; |
13 left: 0px; | 13 left: 0px; |
14 width:400px; | 14 width:400px; |
15 height: 100px; | 15 height: 100px; |
16 } | 16 } |
17 | 17 |
18 #foo { | 18 #foo { |
19 width:200px; | 19 width:200px; |
20 height: 100px; | 20 height: 100px; |
21 background-color: #00a0a0; | 21 background-color: #00a0a0; |
22 -webkit-transform:translateZ(0); | 22 -webkit-transform:translateZ(0); |
23 } | 23 } |
24 </style> | 24 </style> |
25 | 25 |
26 <script> | 26 <script> |
27 if (window.testRunner) { | |
28 testRunner.dumpAsText(); | |
29 testRunner.waitUntilDone(); | |
30 } | |
31 | |
32 if (window.internals) { | 27 if (window.internals) { |
33 /* Note carefully, compositing for fixed position is _disabled_ here */ | 28 /* Note carefully, compositing for fixed position is _disabled_ here */ |
34 internals.settings.setAcceleratedCompositingForFixedPositionEnabled(fals
e); | 29 internals.settings.setAcceleratedCompositingForFixedPositionEnabled(fals
e); |
35 } | 30 } |
36 | 31 |
37 function test() | 32 function repaintTest() |
38 { | 33 { |
39 runAfterDisplay(function() { | 34 window.scrollTo(0, 100); |
40 if (window.internals) | |
41 window.internals.startTrackingRepaints(document); | |
42 | |
43 window.scrollTo(0, 100); | |
44 | |
45 runAfterDisplay(function() { | |
46 if (window.internals) | |
47 document.getElementById('layers').textContent = window.interna
ls.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_REPAINT_RECTS); | |
48 | |
49 if (window.testRunner) | |
50 testRunner.notifyDone(); | |
51 }); | |
52 }); | |
53 } | 35 } |
54 </script> | 36 </script> |
55 </head> | 37 </head> |
56 | 38 |
57 <body style="height:4000px;" onload="test()"> | 39 <body style="height:4000px;" onload="runRepaintTest()"> |
58 <!-- | 40 <!-- |
59 Among other duplicate bugs: https://code.google.com/p/chromium/issues/det
ail?id=151734 | 41 Among other duplicate bugs: https://code.google.com/p/chromium/issues/det
ail?id=151734 |
60 | 42 |
61 In the current code, a layer may actually be composited, but not have its
own backing store. | 43 In the current code, a layer may actually be composited, but not have its
own backing store. |
62 In these cases, the layer paints into its composited ancestor with a back
ing store. | 44 In these cases, the layer paints into its composited ancestor with a back
ing store. |
63 For fixed-position elements, however, this goes wrong because no other co
de | 45 For fixed-position elements, however, this goes wrong because no other co
de |
64 realizes that there is a software-painted fixed-position element. As a r
esult, | 46 realizes that there is a software-painted fixed-position element. As a r
esult, |
65 the composited parent does not receive repaint invalidations, and the fix
ed-position | 47 the composited parent does not receive repaint invalidations, and the fix
ed-position |
66 element incorrectly appears to be fixed to the composited element rather
than the viewport. | 48 element incorrectly appears to be fixed to the composited element rather
than the viewport. |
67 | 49 |
68 The scenario that reproduces this: A fixed position element that has an
overflow-clip with | 50 The scenario that reproduces this: A fixed position element that has an
overflow-clip with |
69 a composited child. In this case, the fixed-position element needs to be
composited. | 51 a composited child. In this case, the fixed-position element needs to be
composited. |
70 However, this is one of the few reasons that does not require that the co
mposited layer needs | 52 However, this is one of the few reasons that does not require that the co
mposited layer needs |
71 its own backing store. | 53 its own backing store. |
72 --> | 54 --> |
73 | 55 |
74 <!-- Scrolling should not cause either div to move around on the viewport. --> | 56 <!-- Scrolling should not cause either div to move around on the viewport. --> |
75 <div class="fixedContainer"> | 57 <div class="fixedContainer"> |
76 <div id="foo"></div> | 58 <div id="foo"></div> |
77 </div> | 59 </div> |
78 | |
79 <pre id="layers"></pre> | |
80 </body> | 60 </body> |
81 | 61 |
82 </html> | 62 </html> |
OLD | NEW |