Automatic update from web-platform-tests Implement performance.markConditional(...) performance.markConditional(...) creates lightweight tracing points that only occur in PerformanceLongAnimationFrameTiming. A follow-up CL will implement performance.measureConditional(...). Explainer: https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/ConditionalTracing/explainer-for-loaf.md I2P: https://groups.google.com/a/chromium.org/g/blink-dev/c/Ur_FiEgzLvk/m/NOCKYJs1BwAJ Chromestatus: https://chromestatus.com/feature/5693676597673984 Bug: 383157188 Change-Id: I9e6728a44975cd8e7bd8ef3ff280841f058fcaea Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7965263 Commit-Queue: Guohui Deng <guohuideng@microsoft.com> Reviewed-by: Chris Harrelson <chrishtr@chromium.org> Reviewed-by: Noam Rosenthal <nrosenthal@google.com> Cr-Commit-Position: refs/heads/main@{#1659020} -- wpt-commits: 9c95f8a1dfa49896bd8d9045b0b256d1950c0276 wpt-pr: 61167
64 lines
2.0 KiB
HTML
64 lines
2.0 KiB
HTML
<!DOCTYPE HTML>
|
|
<meta charset=utf-8>
|
|
<title>Long Animation Frame Timing: conditional tracing buffer limit</title>
|
|
<meta name="timeout" content="long">
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="resources/utils.js"></script>
|
|
|
|
<body>
|
|
<h1>Long Animation Frame: Conditional Tracing Buffer Limit</h1>
|
|
<div id="log"></div>
|
|
<script>
|
|
setup(() =>
|
|
assert_implements(
|
|
"userTimingEntries" in PerformanceLongAnimationFrameTiming.prototype,
|
|
'conditional user timing for LoAF not implemented'));
|
|
|
|
const segment_duration = very_long_frame_duration / 2;
|
|
const kConditionalUserTimingBufferSize = 200;
|
|
|
|
promise_test(async t => {
|
|
const loaf_entry = await expect_long_frame(async (t, busy_wait) => {
|
|
|
|
const element = document.createElement("div");
|
|
document.body.appendChild(element);
|
|
t.add_cleanup(() => element.remove());
|
|
for (let i = 0; i < 50; i++) {
|
|
performance.markConditional("mark_repeat");
|
|
}
|
|
busy_wait(segment_duration);
|
|
for (let i = 0; i < 50; i++) {
|
|
performance.markConditional("mark1_" + i);
|
|
}
|
|
requestAnimationFrame(() => {
|
|
for (let i = 0; i < 50; i++) {
|
|
performance.markConditional("mark2_" + i);
|
|
}
|
|
busy_wait(segment_duration);
|
|
for (let i = 0; i < 50; i++) {
|
|
performance.markConditional("mark3_" + i);
|
|
}
|
|
});
|
|
new ResizeObserver(() => {
|
|
for (let i = 0; i < 50; i++) {
|
|
performance.markConditional("mark4_" + i);
|
|
}
|
|
busy_wait(segment_duration);
|
|
for (let i = 0; i < 50; i++) {
|
|
performance.markConditional("mark5_" + i);
|
|
}
|
|
}).observe(element);
|
|
|
|
}, t);
|
|
|
|
assert_not_equals(loaf_entry, "timeout");
|
|
|
|
const conditional_mark_entries = Array.from(loaf_entry.userTimingEntries)
|
|
.filter(entry => entry.entryType === "mark-conditional");
|
|
assert_equals(conditional_mark_entries.length, kConditionalUserTimingBufferSize);
|
|
|
|
}, 'conditional user timing entries are capped at ' + kConditionalUserTimingBufferSize);
|
|
</script>
|
|
</body>
|