async_test(t => { // First observer creates second in callback to ensure the entry has been dispatched by the time // the second observer begins observing. new PerformanceObserver(() => { // Second observer requires 'buffered: true' to see an entry. new PerformanceObserver(t.step_func_done(list => { const entries = list.getEntries(); assert_equals(entries.length, 1, 'There should be 1 mark entry.'); assert_equals(entries[0].entryType, 'mark'); })).observe({type: 'mark', buffered: true}); }).observe({entryTypes: ['mark']}); performance.mark('foo'); }, 'PerformanceObserver with buffered flag sees previous marks'); async_test(t => { // First observer creates second in callback to ensure the entry has been dispatched by the time // the second observer begins observing. new PerformanceObserver(() => { // Second observer requires 'buffered: true' to see an entry. new PerformanceObserver(t.step_func_done(list => { const entries = list.getEntries(); assert_equals(entries.length, 1, 'There should be 1 measure entry.'); assert_equals(entries[0].entryType, 'measure'); })).observe({type: 'measure', buffered: true}); }).observe({entryTypes: ['measure']}); performance.measure('bar'); }, 'PerformanceObserver with buffered flag sees previous measures');