blob: 0f8a2ce4c87da7c0721b3a3d18af0d231fbacda2 [file] [log] [blame]
function run({script, port}) {
const reports = [];
const observer = new ReportingObserver((rs) => {
for (const r of rs) {
reports.push(r.toJSON());
}
});
// Wait 200ms for reports to settle.
setTimeout(() => {
observer.disconnect();
port.postMessage(reports);
}, 200);
observer.observe();
// This eval call may generate some reports.
eval(script);
}
// For DedicatedWorker and ServiceWorker
self.addEventListener('message', (e) => run(e.data));
// For SharedWorker
self.addEventListener('connect', (e) => {
e.ports[0].onmessage = (ev) => run(ev.data);
});