// META: script=resources/utils.js async_test(t => { assert_implements(window.PerformanceLongTaskTiming, 'Longtasks are not supported.'); new PerformanceObserver(t.step_func((entryList, obs) => { const observer = new PerformanceObserver(t.step_func_done(list => { let longtaskObserved = false; list.getEntries().forEach(entry => { if (entry.entryType === 'mark') return; checkLongTaskEntry(entry); longtaskObserved = true; }); assert_true(longtaskObserved, 'Did not observe buffered longtask.'); })); observer.observe({type: 'longtask', buffered: true}); // Observer mark so that we can flush the observer callback. observer.observe({type: 'mark'}); performance.mark('m'); // Disconnect the embedding observer so this callback only runs once. obs.disconnect(); })).observe({entryTypes: ['longtask']}); // Create a long task. const begin = window.performance.now(); while (window.performance.now() < begin + 60); }, 'PerformanceObserver with buffered flag can see previous longtask entries.');