blob: 09f120a392948677b2ac42dc816ef61608c528b6 [file] [log] [blame]
A squashing Layer that becomes non-composited should correctly send a repaint invalidation to the new container GraphicsLayer that it paints into. When run interactively, hovering over the force-composited gray div should not cause other layers to disappear.
CASE 1, original layer tree:
{
"layers": [
{
"name": "LayoutView #document",
"bounds": [800, 600],
"contentsOpaque": true,
"backgroundColor": "#FFFFFF"
},
{
"name": "Squashing Containment Layer",
"drawsContent": false
},
{
"name": "LayoutBlockFlow (positioned) DIV id='forceComposited' class='composited underneath'",
"bounds": [100, 100],
"contentsOpaque": true,
"backgroundColor": "#808080",
"transform": 1
},
{
"name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='A' class='overlap1')",
"position": [140, 140],
"bounds": [260, 260]
}
],
"transforms": [
{
"id": 1,
"transform": [
[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 1, 0],
[60, 60, 0, 1]
],
"flattenInheritedTransform": false
}
]
}
CASE 2, The original composited layer is no longer composited, which then also removes all squashing layers. The important point is that there should be an appropriate repaint to the root GraphicsLayer:
{
"layers": [
{
"name": "LayoutView #document",
"bounds": [800, 600],
"contentsOpaque": true,
"backgroundColor": "#FFFFFF",
"paintInvalidations": [
{
"object": "LayoutBlockFlow (positioned) DIV id='C' class='overlap3'",
"rect": [300, 300, 100, 100],
"reason": "appeared"
},
{
"object": "LayoutBlockFlow (positioned) DIV id='B' class='overlap2'",
"rect": [220, 220, 100, 100],
"reason": "appeared"
},
{
"object": "LayoutBlockFlow (positioned) DIV id='A' class='overlap1'",
"rect": [140, 140, 100, 100],
"reason": "appeared"
},
{
"object": "LayoutBlockFlow (positioned) DIV id='forceComposited' class='underneath'",
"rect": [60, 60, 100, 100],
"reason": "appeared"
}
]
}
],
"objectPaintInvalidations": [
{
"object": "LayoutBlockFlow (positioned) DIV id='forceComposited' class='underneath'",
"reason": "compositing update"
},
{
"object": "LayoutBlockFlow (positioned) DIV id='A' class='overlap1'",
"reason": "compositing update"
},
{
"object": "LayoutBlockFlow (positioned) DIV id='B' class='overlap2'",
"reason": "compositing update"
},
{
"object": "LayoutBlockFlow (positioned) DIV id='C' class='overlap3'",
"reason": "compositing update"
}
]
}