| <!doctype html> |
| <body> |
| <script src="../resources/runner.js"></script> |
| <script src="../layout/resources/line-layout-perf-test.js"></script> |
| <div id="container"></div> |
| <script> |
| const kNumberOfWords = 10000 * 30; |
| const kCount = 10; |
| const container = document.getElementById('container'); |
| const selection = window.getSelection(); |
| |
| container.textContent = (() => { |
| const words = []; |
| for (let i = 0; i < kNumberOfWords; ++i) |
| words.push(TextGenerator.createWord(i % 12 + 3)); |
| return words.join(' '); |
| })(); |
| |
| let isDone = false; |
| let startTime = 0; |
| let counter = 0; |
| |
| function runTest() { |
| if (startTime !== 0 && counter % kCount === 0) { |
| PerfTestRunner.measureValueAsync(PerfTestRunner.now() - startTime); |
| PerfTestRunner.addRunTestEndMarker(); // For tracing metrics |
| } |
| if (isDone) |
| return; |
| window.requestAnimationFrame(() => { |
| if (counter % kCount === 0) { |
| PerfTestRunner.addRunTestStartMarker(); |
| startTime = PerfTestRunner.now(); // For tracing metrics |
| } |
| selection.collapse(container, 0); |
| if (counter % 2 === 1) |
| selection.extend(container, 1); |
| ++counter; |
| runTest(); |
| }); |
| } |
| |
| |
| PerfTestRunner.startMeasureValuesAsync({ |
| unit: 'ms', |
| run: function() { |
| runTest(); |
| }, |
| done: function() { |
| container.textContent = ''; |
| isDone = true; |
| }, |
| iterationCount: 10, |
| tracingCategories: 'blink', |
| traceEventsToMeasure: [ |
| 'LocalFrameView::RunPrePaintLifecyclePhase', |
| 'LocalFrameView::RunPaintLifecyclePhase' |
| ], |
| }); |
| </script> |