1 This scenario verifies that the green "container" element and lime "innerScrolling" element scroll properly even though there is a blue fixed-position element layered in between them.
3 The catch is that the squashing requirements should be computed in correct paint order, so that the green container does not accidentally position itself with respect to the wrong layer and not scroll.
5 CASE 1, original layer tree:
10 "bounds": [785, 4100],
11 "contentsOpaque": true,
16 "contentsOpaque": true,
18 "backgroundColor": "#808080"
21 "position": [100, 100],
22 "bounds": [100, 4000],
23 "contentsOpaque": true,
25 "backgroundColor": "#008000",
30 "contentsOpaque": true,
32 "backgroundColor": "#0000FF"
37 "contentsOpaque": true,
39 "backgroundColor": "#00FF00"
47 CASE 2, scrolling y by 10 pixels, both the "container" and "inner" should scroll properly.
49 "bounds": [785, 4100],
52 "bounds": [785, 4100],
53 "contentsOpaque": true,
59 "contentsOpaque": true,
61 "backgroundColor": "#808080"
64 "position": [100, 100],
65 "bounds": [100, 4000],
66 "contentsOpaque": true,
68 "backgroundColor": "#008000",
73 "contentsOpaque": true,
75 "backgroundColor": "#0000FF"
80 "contentsOpaque": true,
82 "backgroundColor": "#00FF00"
90 CASE 3, scrolling y further so that "inner" no longer overlaps the fixed-pos layer, then the stacking context of "container" includes the "innerScrolling" layer, and doubles in width:
92 "bounds": [785, 4100],
95 "bounds": [785, 4100],
96 "contentsOpaque": true,
100 "position": [0, 110],
101 "bounds": [400, 400],
102 "contentsOpaque": true,
103 "drawsContent": true,
104 "backgroundColor": "#808080"
107 "position": [100, 100],
108 "bounds": [200, 4000],
109 "drawsContent": true,
110 "backgroundColor": "#008000",
116 "position": [0, 160],
117 "bounds": [200, 100],
118 "contentsOpaque": true,
119 "drawsContent": true,
120 "backgroundColor": "#0000FF"