mirror of
https://github.com/servo/servo.git
synced 2025-08-04 05:00:08 +01:00
34 lines
1.3 KiB
JavaScript
34 lines
1.3 KiB
JavaScript
async_test(t => {
|
|
// First observer creates second in callback to ensure the entry has been dispatched by the time
|
|
// the second observer begins observing.
|
|
let entries_seen = 0;
|
|
new PerformanceObserver(firstList => {
|
|
entries_seen += firstList.getEntries().length;
|
|
// Abort if we have not yet received both paint entries.
|
|
if (entries_seen < 2)
|
|
return;
|
|
|
|
// Second observer requires 'buffered: true' to see the entries.
|
|
let firstPaintSeen = false;
|
|
let firstContentfulPaintSeen = false;
|
|
new PerformanceObserver(list => {
|
|
list.getEntries().forEach(t.step_func(entry => {
|
|
assert_equals(entry.entryType, 'paint');
|
|
if (entry.name === 'first-paint')
|
|
firstPaintSeen = true;
|
|
else if (entry.name === 'first-contentful-paint')
|
|
firstContentfulPaintSeen = true;
|
|
else
|
|
assert_unreached('The observer should only see first paint or first contentful paint!');
|
|
|
|
if (firstPaintSeen && firstContentfulPaintSeen)
|
|
t.done();
|
|
}));
|
|
}).observe({'type': 'paint', buffered: true});
|
|
}).observe({'entryTypes': ['paint']});
|
|
|
|
// Trigger the first paint entries
|
|
const img = document.createElement("IMG");
|
|
img.src = "resources/circles.png";
|
|
document.body.appendChild(img);
|
|
}, "PerformanceObserver with buffered flag sees previous paint entries.");
|