Commit e69fc0d9 authored by Xianzhu Wang's avatar Xianzhu Wang Committed by Commit Bot

Add paint perf tests for extending selection in large text

Most of the code is copied from perf_tests/paint/select-all-words.html

Change-Id: I3d231a67f8162ac3145f070df38875de1a72dfa1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2321233
Commit-Queue: Koji Ishii <kojii@chromium.org>
Reviewed-by: default avatarKoji Ishii <kojii@chromium.org>
Reviewed-by: default avatarPhilip Rogers <pdr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#792147}
parent da3cd297
<!doctype html>
<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(' ');
})();
const text = container.firstChild;
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.setBaseAndExtent(text, 4000 - counter * 10, text, text.length);
++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>
<!doctype html>
<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(' ');
})();
const text = container.firstChild;
selection.setBaseAndExtent(text, 1000, text, 4000);
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.modify("extend", "forward", "word");
++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>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment