| <!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> |