buffered-flag.window.js (1479B)
1 setup({"hide_test_state": true}); 2 async_test(t => { 3 assert_implements(window.PerformancePaintTiming, "Paint Timing isn't supported."); 4 // First observer creates second in callback to ensure the entry has been dispatched by the time 5 // the second observer begins observing. 6 let entries_seen = 0; 7 new PerformanceObserver(firstList => { 8 entries_seen += firstList.getEntries().length; 9 // Abort if we have not yet received both paint entries. 10 if (entries_seen < 2) 11 return; 12 13 // Second observer requires 'buffered: true' to see the entries. 14 let firstPaintSeen = false; 15 let firstContentfulPaintSeen = false; 16 new PerformanceObserver(list => { 17 list.getEntries().forEach(t.step_func(entry => { 18 assert_equals(entry.entryType, 'paint'); 19 if (entry.name === 'first-paint') 20 firstPaintSeen = true; 21 else if (entry.name === 'first-contentful-paint') 22 firstContentfulPaintSeen = true; 23 else 24 assert_unreached('The observer should only see first paint or first contentful paint!'); 25 26 if (firstPaintSeen && firstContentfulPaintSeen) 27 t.done(); 28 })); 29 }).observe({'type': 'paint', buffered: true}); 30 }).observe({'entryTypes': ['paint']}); 31 32 // Trigger the first paint entries 33 const img = document.createElement("IMG"); 34 img.src = "resources/circles.png"; 35 document.body.appendChild(img); 36 }, "PerformanceObserver with buffered flag sees previous paint entries.");