%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
const syncDelay = ms => { const start = performance.now(); let elapsedTime; do { elapsedTime = performance.now() - start; } while (elapsedTime < ms); }; const markTime = (docName, lifecycleEventName) => { // Calculating these values before the below `mark` invocation ensures that delays in // reaching across to the other window object doesn't interfere with the correctness // of the test. const dateNow = Date.now(); const performanceNow = performance.now(); window.opener.mark({ docName, lifecycleEventName, performanceNow: performanceNow, dateNow: dateNow }); }; const setupUnloadPrompt = (docName, msg) => { window.addEventListener("beforeunload", ev => { markTime(docName, "beforeunload"); return ev.returnValue = msg || "Click OK to continue test." }); }; const setupListeners = (docName, nextDocument) => { window.addEventListener("load", () => { markTime(docName, "load"); document.getElementById("proceed").addEventListener("click", ev => { ev.preventDefault(); if (nextDocument) { document.location = nextDocument; } else { window.close(); } }) }); setupUnloadPrompt(docName); window.addEventListener("unload", () => { markTime(docName, "unload"); if (docName !== "c") { syncDelay(1000); } }); };