%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
"use strict" // https://w3c.github.io/hr-time/#time-origin async_test(function(test) { // Cache global time before starting worker const globalTimeOrigin = performance.timeOrigin; const globalNowBeforeWorkerStart = performance.now(); // Start worker and retrieve time const workerScript = "postMessage({timeOrigin: performance.timeOrigin, now: performance.now()})"; const blob = new Blob([workerScript]); let worker = new Worker(URL.createObjectURL(blob)); worker.addEventListener("message", test.step_func_done(function(event) { const workerTimeOrigin = event.data.timeOrigin; const workerNow = event.data.now; assert_not_equals(workerTimeOrigin, 0, "worker timeOrigin must not be 0"); assert_not_equals(performance.timeOrigin, 0, "Document timeOrigin must not be 0"); assert_equals(globalTimeOrigin, performance.timeOrigin, "timeOrigin should not be changed in same document mode"); assert_less_than(globalTimeOrigin, workerTimeOrigin, "Document timeOrigin must be earlier than worker timeOrigin"); // Document and worker's now() start from their respective timeOrigins. const timeDiff = workerTimeOrigin - globalTimeOrigin; // convert worker's time to Document time. assert_less_than(globalTimeOrigin + globalNowBeforeWorkerStart, globalTimeOrigin + timeDiff + workerNow, "Document old now is earlier than worker now."); // Comparing timing between Document and worker threads could be delicate as it relies on the thread implementation and could be subject to race conditions. })); }, 'timeOrigin and now() should be correctly ordered between window and worker');