| // META: script=/resources/WebIDLParser.js | |
| // META: script=/resources/idlharness.js | |
| // https://w3c.github.io/longtasks/ | |
| 'use strict'; | |
| idl_test( | |
| ['longtasks'], | |
| ['performance-timeline', 'hr-time'], | |
| (idl_array, t) => new Promise((resolve, reject) => { | |
| const longTask = () => { | |
| const begin = self.performance.now(); | |
| while (self.performance.now() < begin + 100); | |
| } | |
| t.step_timeout(longTask, 0); | |
| const observer = new PerformanceObserver((entryList, observer) => { | |
| const entries = Array.from(entryList.getEntries()); | |
| idl_array.add_objects({ | |
| PerformanceLongTaskTiming: entries.slice(0, 1), | |
| TaskAttributionTiming: entries[0].attribution, | |
| }); | |
| observer.disconnect(); | |
| resolve(); | |
| }); | |
| observer.observe({entryTypes: ['longtask']}); | |
| t.step_timeout(() => { | |
| reject('longtask entry was not observed'); | |
| }, 1000); | |
| }) | |
| ); |