mirror of
https://github.com/servo/servo.git
synced 2025-07-11 17:33:47 +01:00
51 lines
1.4 KiB
JavaScript
51 lines
1.4 KiB
JavaScript
// META: global=window,worker
|
|
// META: script=/resources/WebIDLParser.js
|
|
// META: script=/resources/idlharness.js
|
|
|
|
// https://w3c.github.io/performance-timeline/
|
|
|
|
'use strict';
|
|
|
|
promise_test(async t => {
|
|
const observe = new Promise((resolve, reject) => {
|
|
try {
|
|
self.observer = new PerformanceObserver((entries, observer) => {
|
|
self.entryList = entries;
|
|
self.mark = entries.getEntries()[0];
|
|
resolve();
|
|
});
|
|
observer.observe({ entryTypes: ['mark'] });
|
|
performance.mark('test');
|
|
} catch (e) {
|
|
reject(e);
|
|
}
|
|
});
|
|
const timeout = new Promise((_, reject) => {
|
|
t.step_timeout(() => reject('Timed out waiting for observation'), 3000);
|
|
});
|
|
const user = await fetch('/interfaces/user-timing.idl').then(r => r.text());
|
|
const execute_test = () => {
|
|
idl_test(
|
|
['performance-timeline'],
|
|
['hr-time', 'dom'],
|
|
idl_array => {
|
|
idl_array.add_idls(user, {only: ['PerformanceMark']});
|
|
idl_array.add_objects({
|
|
Performance: ['performance'],
|
|
// NOTE: PerformanceMark cascadingly tests PerformanceEntry
|
|
PerformanceMark: ['mark'],
|
|
PerformanceObserver: ['observer'],
|
|
PerformanceObserverEntryList: ['entryList'],
|
|
});
|
|
}
|
|
);
|
|
};
|
|
|
|
return Promise.race([observe, timeout]).then(
|
|
execute_test,
|
|
reason => {
|
|
execute_test();
|
|
return Promise.reject(reason);
|
|
}
|
|
);
|
|
})
|