<!DOCTYPE html>
<title>Contain update layer tree performance</title>
<style>
#wrapper {
position: relative;
}
.cell {
position: absolute;
box-sizing: border-box;
border: solid;
contain: strict;
}
.progressbar {
position: absolute;
left: 0px;
top: 5px;
height: 10px;
}
</style>
<script src="../resources/runner.js"></script>
<script src="resources/paint.js"></script>
<pre id="log"></pre>
<div id="wrapper"></div>
<script>
const CELL_WIDTH = "50";
const CELL_HEIGHT = "25";
const NUM_ROWS = 120;
const NUM_COLUMNS = 120;
const DOM_DEPTH = 10;
function createContent(depth) {
let content = document.createElement("div");
content.appendChild(document.createElement("h1"));
content.appendChild(document.createElement("paragraph"));
if (depth > 0)
content.appendChild(createContent(depth - 1));
return content;
}
function setupTest() {
let wrapper = document.getElementById("wrapper");
for (let i = 0; i < NUM_ROWS; i++) {
for (let j = 0; j < NUM_COLUMNS; j++) {
let cell = document.createElement("div");
if (i == 0 && j == 0)
cell.id = "target";
cell.classList.add("cell");
cell.style.width = CELL_WIDTH + "px";
cell.style.height = CELL_HEIGHT + "px";
cell.style.left = (j * CELL_WIDTH) + "px";
cell.style.top = (i * CELL_HEIGHT) + "px";
cell.style.overflow = "visible";
cell.appendChild(createContent(DOM_DEPTH));
wrapper.appendChild(cell);
}
}
}
function runTest() {
let cell = document.getElementById("target");
// This causes a call to PaintLayer::SetNeedsCompositingInputsUpdate().
cell.style.overflow = cell.style.overflow == "hidden" ? "visible" : "hidden";
}
setupTest();
measurePaint({
run: runTest
});
</script>