const run_test = isolated => { // Multiplier to convert the clamped timestamps to microseconds. const multiplier = 1000; const windowOrigin = performance.timeOrigin; // Clamp to at least 5 microseconds in isolated contexts and at least 100 in // non-isolated ones. const resolution = isolated ? 5 : 100; const create_worker = () => { return new Promise(resolve => { const workerScript = 'postMessage({timeOrigin: performance.timeOrigin})'; const blob = new Blob([workerScript]); const worker = new Worker(URL.createObjectURL(blob)); worker.addEventListener('message', event => { resolve(event.data.timeOrigin); }); }); }; promise_test(async t => { assert_equals(self.crossOriginIsolated, isolated, "crossOriginIsolated is properly set"); let prev = windowOrigin; let current; for (let i = 1; i < 100; ++i) { current = await create_worker(); assert_true(current === prev || current - prev > resolution / 1000); prev = current; } }, 'timeOrigins are clamped.'); };