<!DOCTYPE html>
<body>
<script src="../resources/runner.js"></script>
<script src="resources/paint.js"></script>
<style>
.column {
width: 180px;
height: 310px;
border: 1px solid black;
font-size: 1px;
}
.row {
width: 150px;
border: 1px solid cornflowerblue;
}
.row > span {
border: 1px solid rebeccapurple;
}
</style>
<script>
// This test measures the lifecycle update performance of changing paint offset.
// Create a column with many rows of divs and many spans on each row.
function createColumn(parent) {
var rowsPerColumn = 200;
var spansPerRow = 100;
var columnDiv = document.createElement('div');
parent.appendChild(columnDiv);
columnDiv.setAttribute('class', 'column');
for (var row = 0; row < rowsPerColumn; row++) {
var rowDiv = document.createElement('div');
rowDiv.setAttribute('class', 'row');
columnDiv.appendChild(rowDiv);
for (var span = 0; span < spansPerRow; span++) {
var spanElement = document.createElement('span');
rowDiv.appendChild(spanElement);
}
}
return columnDiv;
}
var rowMarginsToChange = createColumn(document.body).querySelectorAll('.row');
var changeRowMargins = function(runCount) {
for (var index = 0; index < rowMarginsToChange.length; index++)
rowMarginsToChange[index].style.marginLeft = (runCount % 10) + 'px';
}
var spanMarginsToChange = createColumn(document.body).querySelectorAll('.row > span');
var changeRowSpanMargins = function(runCount) {
for (var index = 0; index < spanMarginsToChange.length; index += 8)
spanMarginsToChange[index].style.marginLeft = ((runCount + index) % 3) + 'px';
}
var firstRowHeightToChange = createColumn(document.body).querySelector('.row');
var changeFirstRowHeight = function(rowCount) {
firstRowHeightToChange.style.height = (5 + runCount % 5) + 'px';
}
var runCount = 0;
measurePaint({
run: function() {
runCount++;
changeRowMargins(runCount);
changeRowSpanMargins(runCount);
changeFirstRowHeight(runCount);
},
});
</script>
</body>