| OLD | NEW |
| 1 The gray div is a composited fixed-position element, and the cyan/lime elements
should be squashed together on top. When scrolling, paragraphs may pop in-and-ou
t of the squashing layer when they change overlapping status with respect to the
composited layer underneath. | 1 The gray div is a composited fixed-position element, and the cyan/lime elements
should be squashed together on top. When scrolling, paragraphs may pop in-and-ou
t of the squashing layer when they change overlapping status with respect to the
composited layer underneath. |
| 2 | 2 |
| 3 This scenario tests (1) that content repaints correctly as layers pop in and out
of squashing, and (2) that the positioning of the squashing layer remains corre
ct (i.e. scrolls properly) when the squashing layer is on top of a fixed-positio
n composited layer. | 3 This scenario tests (1) that content repaints correctly as layers pop in and out
of squashing, and (2) that the positioning of the squashing layer remains corre
ct (i.e. scrolls properly) when the squashing layer is on top of a fixed-positio
n composited layer. |
| 4 | 4 |
| 5 CASE 1, original layer tree: | 5 CASE 1, original layer tree: |
| 6 { | 6 { |
| 7 "bounds": [785, 1400], | 7 "bounds": [785, 1400], |
| 8 "children": [ | 8 "children": [ |
| 9 { | 9 { |
| 10 "bounds": [785, 1400], | 10 "bounds": [785, 1400], |
| (...skipping 29 matching lines...) Expand all Loading... |
| 40 ] | 40 ] |
| 41 } | 41 } |
| 42 CASE 2, scrolling y to 80, new layers will be squashed, so things repaint: | 42 CASE 2, scrolling y to 80, new layers will be squashed, so things repaint: |
| 43 { | 43 { |
| 44 "bounds": [785, 1400], | 44 "bounds": [785, 1400], |
| 45 "children": [ | 45 "children": [ |
| 46 { | 46 { |
| 47 "bounds": [785, 1400], | 47 "bounds": [785, 1400], |
| 48 "contentsOpaque": true, | 48 "contentsOpaque": true, |
| 49 "drawsContent": true, | 49 "drawsContent": true, |
| 50 "repaintRects": [ | 50 "paintInvalidations": [ |
| 51 [0, 500, 200, 100], | 51 { |
| 52 [0, 200, 200, 100], | 52 "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-b'
class='overlapping lime'", |
| 53 [0, 100, 200, 100], | 53 "rect": [0, 100, 200, 100], |
| 54 [0, 100, 200, 100], | 54 "reason": "location change" |
| 55 [0, 0, 200, 100] | 55 }, |
| 56 { |
| 57 "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-c'
class='overlapping cyan'", |
| 58 "rect": [0, 0, 200, 100], |
| 59 "reason": "layer" |
| 60 }, |
| 61 { |
| 62 "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-d'
class='overlapping lime'", |
| 63 "rect": [0, 100, 200, 100], |
| 64 "reason": "layer" |
| 65 }, |
| 66 { |
| 67 "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-e'
class='overlapping cyan'", |
| 68 "rect": [0, 200, 200, 100], |
| 69 "reason": "layer" |
| 70 }, |
| 71 { |
| 72 "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-f'
class='overlapping lime'", |
| 73 "rect": [0, 500, 200, 100], |
| 74 "reason": "layer" |
| 75 } |
| 56 ], | 76 ], |
| 57 "children": [ | 77 "children": [ |
| 58 { | 78 { |
| 59 "position": [100, 230], | 79 "position": [100, 230], |
| 60 "bounds": [300, 300], | 80 "bounds": [300, 300], |
| 61 "contentsOpaque": true, | 81 "contentsOpaque": true, |
| 62 "drawsContent": true, | 82 "drawsContent": true, |
| 63 "backgroundColor": "#D3D3D3" | 83 "backgroundColor": "#D3D3D3" |
| 64 }, | 84 }, |
| 65 { | 85 { |
| 66 "shouldFlattenTransform": false, | 86 "shouldFlattenTransform": false, |
| 67 "children": [ | 87 "children": [ |
| 68 { | 88 { |
| 69 "position": [0, 200], | 89 "position": [0, 200], |
| 70 "bounds": [200, 100], | 90 "bounds": [200, 100], |
| 71 "contentsOpaque": true, | 91 "contentsOpaque": true, |
| 72 "drawsContent": true, | 92 "drawsContent": true, |
| 73 "backgroundColor": "#00FFFF", | 93 "backgroundColor": "#00FFFF", |
| 74 "repaintRects": [ | 94 "paintInvalidations": [ |
| 75 [0, 0, 200, 100] | 95 { |
| 96 "object": "LayoutBlockFlow (relative positioned) DIV id='parag
raph-c' class='overlapping cyan'", |
| 97 "rect": [0, 0, 200, 100], |
| 98 "reason": "compositing update" |
| 99 } |
| 76 ] | 100 ] |
| 77 }, | 101 }, |
| 78 { | 102 { |
| 79 "position": [0, 300], | 103 "position": [0, 300], |
| 80 "bounds": [200, 300], | 104 "bounds": [200, 300], |
| 81 "drawsContent": true, | 105 "drawsContent": true, |
| 82 "repaintRects": [ | 106 "paintInvalidations": [ |
| 83 [0, 200, 200, 100], | 107 { |
| 84 [0, 100, 200, 100], | 108 "object": "LayoutBlockFlow (relative positioned) DIV id='parag
raph-d' class='overlapping lime'", |
| 85 [0, 0, 200, 100] | 109 "rect": [0, 0, 200, 100], |
| 110 "reason": "location change" |
| 111 }, |
| 112 { |
| 113 "object": "LayoutBlockFlow (relative positioned) DIV id='parag
raph-e' class='overlapping cyan'", |
| 114 "rect": [0, 100, 200, 100], |
| 115 "reason": "location change" |
| 116 }, |
| 117 { |
| 118 "object": "LayoutBlockFlow (relative positioned) DIV id='parag
raph-f' class='overlapping lime'", |
| 119 "rect": [0, 200, 200, 100], |
| 120 "reason": "location change" |
| 121 } |
| 86 ] | 122 ] |
| 87 } | 123 } |
| 88 ] | 124 ] |
| 89 } | 125 } |
| 90 ] | 126 ] |
| 91 } | 127 } |
| 92 ] | 128 ] |
| 93 } | 129 } |
| 94 CASE 3, scrolling y to 120, no repaints expected: | 130 CASE 3, scrolling y to 120, no repaints expected: |
| 95 { | 131 { |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 129 ] | 165 ] |
| 130 } | 166 } |
| 131 CASE 4, scrolling y to 170 new layers will be squashed, so things repaint: | 167 CASE 4, scrolling y to 170 new layers will be squashed, so things repaint: |
| 132 { | 168 { |
| 133 "bounds": [785, 1400], | 169 "bounds": [785, 1400], |
| 134 "children": [ | 170 "children": [ |
| 135 { | 171 { |
| 136 "bounds": [785, 1400], | 172 "bounds": [785, 1400], |
| 137 "contentsOpaque": true, | 173 "contentsOpaque": true, |
| 138 "drawsContent": true, | 174 "drawsContent": true, |
| 139 "repaintRects": [ | 175 "paintInvalidations": [ |
| 140 [0, 600, 200, 100], | 176 { |
| 141 [0, 200, 200, 100], | 177 "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-c'
class='overlapping cyan'", |
| 142 [0, 200, 200, 100], | 178 "rect": [0, 200, 200, 100], |
| 143 [0, 100, 200, 100], | 179 "reason": "location change" |
| 144 [0, 0, 200, 100] | 180 }, |
| 181 { |
| 182 "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-d'
class='overlapping lime'", |
| 183 "rect": [0, 0, 200, 100], |
| 184 "reason": "layer" |
| 185 }, |
| 186 { |
| 187 "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-e'
class='overlapping cyan'", |
| 188 "rect": [0, 100, 200, 100], |
| 189 "reason": "layer" |
| 190 }, |
| 191 { |
| 192 "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-f'
class='overlapping lime'", |
| 193 "rect": [0, 200, 200, 100], |
| 194 "reason": "layer" |
| 195 }, |
| 196 { |
| 197 "object": "LayoutBlockFlow (relative positioned) DIV id='paragraph-g'
class='overlapping cyan'", |
| 198 "rect": [0, 600, 200, 100], |
| 199 "reason": "layer" |
| 200 } |
| 145 ], | 201 ], |
| 146 "children": [ | 202 "children": [ |
| 147 { | 203 { |
| 148 "position": [100, 320], | 204 "position": [100, 320], |
| 149 "bounds": [300, 300], | 205 "bounds": [300, 300], |
| 150 "contentsOpaque": true, | 206 "contentsOpaque": true, |
| 151 "drawsContent": true, | 207 "drawsContent": true, |
| 152 "backgroundColor": "#D3D3D3" | 208 "backgroundColor": "#D3D3D3" |
| 153 }, | 209 }, |
| 154 { | 210 { |
| 155 "shouldFlattenTransform": false, | 211 "shouldFlattenTransform": false, |
| 156 "children": [ | 212 "children": [ |
| 157 { | 213 { |
| 158 "position": [0, 300], | 214 "position": [0, 300], |
| 159 "bounds": [200, 100], | 215 "bounds": [200, 100], |
| 160 "contentsOpaque": true, | 216 "contentsOpaque": true, |
| 161 "drawsContent": true, | 217 "drawsContent": true, |
| 162 "backgroundColor": "#00FF00", | 218 "backgroundColor": "#00FF00", |
| 163 "repaintRects": [ | 219 "paintInvalidations": [ |
| 164 [0, 0, 200, 100] | 220 { |
| 221 "object": "LayoutBlockFlow (relative positioned) DIV id='parag
raph-d' class='overlapping lime'", |
| 222 "rect": [0, 0, 200, 100], |
| 223 "reason": "compositing update" |
| 224 } |
| 165 ] | 225 ] |
| 166 }, | 226 }, |
| 167 { | 227 { |
| 168 "position": [0, 400], | 228 "position": [0, 400], |
| 169 "bounds": [200, 300], | 229 "bounds": [200, 300], |
| 170 "drawsContent": true, | 230 "drawsContent": true, |
| 171 "repaintRects": [ | 231 "paintInvalidations": [ |
| 172 [0, 200, 200, 100], | 232 { |
| 173 [0, 100, 200, 100], | 233 "object": "LayoutBlockFlow (relative positioned) DIV id='parag
raph-e' class='overlapping cyan'", |
| 174 [0, 0, 200, 100] | 234 "rect": [0, 0, 200, 100], |
| 235 "reason": "location change" |
| 236 }, |
| 237 { |
| 238 "object": "LayoutBlockFlow (relative positioned) DIV id='parag
raph-f' class='overlapping lime'", |
| 239 "rect": [0, 100, 200, 100], |
| 240 "reason": "location change" |
| 241 }, |
| 242 { |
| 243 "object": "LayoutBlockFlow (relative positioned) DIV id='parag
raph-g' class='overlapping cyan'", |
| 244 "rect": [0, 200, 200, 100], |
| 245 "reason": "location change" |
| 246 } |
| 175 ] | 247 ] |
| 176 } | 248 } |
| 177 ] | 249 ] |
| 178 } | 250 } |
| 179 ] | 251 ] |
| 180 } | 252 } |
| 181 ] | 253 ] |
| 182 } | 254 } |
| 183 | 255 |
| OLD | NEW |