mirror of
https://github.com/servo/servo.git
synced 2025-07-12 09:53:40 +01:00
51 lines
1.3 KiB
JavaScript
51 lines
1.3 KiB
JavaScript
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); }
|
|
});
|
|
};
|
|
|