blob: 0b7c8bea2e42ea54acc4e24f0ca548b51dea567d [file] [log] [blame]
setup({"hide_test_state": true});
async_test(t => {
assert_implements(window.PerformancePaintTiming, "Paint Timing isn't supported.");
// 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.");