| async_test(t => { |
| performance.clearResourceTimings(); |
| // 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 resource entry.'); |
| assert_equals(entries[0].entryType, 'resource'); |
| assert_greater_than(entries[0].startTime, 0); |
| assert_greater_than(entries[0].responseEnd, entries[0].startTime); |
| assert_greater_than(entries[0].duration, 0); |
| assert_true(entries[0].name.endsWith('resources/empty.js')); |
| })).observe({'type': 'resource', buffered: true}); |
| }).observe({'entryTypes': ['resource']}); |
| fetch('resources/empty.js'); |
| }, 'PerformanceObserver with buffered flag sees previous resource entries.'); |