function testScript(script) { var mode = location.href.includes("http2") ? "?mode=http2&" : "?"; function makeWrapperUrl(wrapper) { return wrapper + mode + "script=" + script;
}
let workerWrapperUrl = makeWrapperUrl("worker_wrapper.js");
// The framework runs the entire test in many different configurations. // On slow platforms and builds this can make the tests likely to // timeout while they are still running. Lengthen the timeout to // accomodate this.
SimpleTest.requestLongerTimeout(4);
// reroute.html should have set this variable if a service worker is present! if (!("isSWPresent" in window)) {
window.isSWPresent = false;
}
function workerTest() { returnnew Promise(function (resolve, reject) { var worker = new Worker(workerWrapperUrl);
worker.onmessage = function (event) { if (event.data.context != "Worker") { return;
} if (event.data.type == "finish") {
resolve();
} elseif (event.data.type == "status") {
ok(event.data.status, event.data.context + ": " + event.data.msg);
}
};
worker.onerror = function (event) {
reject("Worker error: " + event.message);
};
worker.postMessage({ script });
});
}
function nestedWorkerTest() { returnnew Promise(function (resolve, reject) { var worker = new Worker(makeWrapperUrl("nested_worker_wrapper.js"));
worker.onmessage = function (event) { if (event.data.context != "NestedWorker") { return;
} if (event.data.type == "finish") {
resolve();
} elseif (event.data.type == "status") {
ok(event.data.status, event.data.context + ": " + event.data.msg);
}
};
worker.onerror = function (event) {
reject("Nested Worker error: " + event.message);
};
worker.postMessage({ script });
});
}
function serviceWorkerTest() { var isB2G =
!navigator.userAgent.includes("Android") &&
/Mobile|Tablet/.test(navigator.userAgent); if (isB2G) { // TODO B2G doesn't support running service workers for now due to bug 1137683.
dump("Skipping running the test in SW until bug 1137683 gets fixed.\n"); return Promise.resolve();
} returnnew Promise(function (resolve, reject) { function setupSW(registration) { var worker =
registration.installing ||
registration.waiting ||
registration.active; var iframe;
function windowTest() { returnnew Promise(function (resolve, reject) { var scriptEl = document.createElement("script");
scriptEl.setAttribute("src", script);
scriptEl.onload = function () {
runTest().then(resolve, reject);
};
document.body.appendChild(scriptEl);
});
}
SimpleTest.waitForExplicitFinish(); // We have to run the window, worker and service worker tests sequentially // since some tests set and compare cookies and running in parallel can lead // to conflicting values.
setupPrefs()
.then(function () { return windowTest();
})
.then(function () { return workerTest();
})
.then(function () { return nestedWorkerTest();
})
.then(function () { return serviceWorkerTest();
})
.catch(function (e) {
ok(false, "Some test failed in " + script);
info(e);
info(e.message); return Promise.resolve();
})
.then(function () { try { if (parent && parent.finishTest) {
parent.finishTest(); return;
}
} catch {}
SimpleTest.finish();
});
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.