blob: b47e22abe579a8aef27df82e4016fb150ce8eabf [file] [log] [blame]
<!DOCTYPE html>
<html id="htmlTag">
<head>
<script src="../../resources/run-after-layout-and-paint.js"></script>
<style>
#fixed {
backface-visibility: hidden;
position: fixed;
z-index: 1;
width: 400px;
height: 200px;
background-color: blue;
}
#compositedInsideFixed {
backface-visibility: hidden;
width: 50px;
height: 50px;
background-color: red;
}
#container {
position: absolute;
z-index: 2;
top: 50px;
left: 100px;
width: 200px;
height: 4000px;
background-color: cyan;
}
#description {
position: absolute;
top: 100px;
left: 450px;
width: 300px;
}
#testResults {
display: none;
}
body {
margin: 0;
}
</style>
<script>
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
}
function runTest()
{
if (!window.internals)
return;
// Display the test results only after test is done so that it does not affect repaint rect results.
document.getElementById('testResults').style.display = "block";
// Case 1
document.getElementById('Case1').textContent = internals.layerTreeAsText(document);
// Case 2
window.scrollTo(0, 80);
runAfterLayoutAndPaint(function() {
document.getElementById('Case2').textContent = internals.layerTreeAsText(document);
if (window.testRunner) {
testRunner.notifyDone();
}
});
}
</script>
</head>
<body onload="runTest()">
<div id="description">
<p>
This scenario verifies that the cyan "container" element scrolls properly with squashing enabled.
The "container" element should not squash into a composited layer mapping owned by the fixed
position layer or its descendant, since this would make it behave like a fixed position
element during composited scrolling.
</p>
</div>
<div id="fixed">
<div id="compositedInsideFixed"></div>
</div>
<div id="container"></div>
<div id="testResults">
CASE 1, original layer tree:
<pre id="Case1"></pre>
CASE 2, scrolling y to 80, the "container" element should remain positioned with respect to the scrolled document, the fixed-pos layer compensates for the new scroll position:
<pre id="Case2"></pre>
</div>
</body>
</html>