65 lines
1.9 KiB
JavaScript
65 lines
1.9 KiB
JavaScript
/**
|
|
* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/
|
|
*/
|
|
"use strict";
|
|
|
|
(async () => {
|
|
SimpleTest.waitForExplicitFinish();
|
|
|
|
const HTTP_BASE_URL = "http://mochi.test:8888/tests/dom/workers/test/";
|
|
const IFRAME_URL = HTTP_BASE_URL + "sourcemap_header_iframe.html";
|
|
const WORKER_URL = HTTP_BASE_URL + "sourcemap_header_worker.js";
|
|
const DEBUGGER_URL = BASE_URL + "sourcemap_header_debugger.js";
|
|
|
|
const workerFrame = document.getElementById("worker-frame");
|
|
ok(workerFrame, "has frame");
|
|
|
|
await new Promise(r => {
|
|
workerFrame.onload = r;
|
|
workerFrame.src = IFRAME_URL;
|
|
});
|
|
|
|
info("Start worker and watch for registration");
|
|
const workerLoadedChannel = new MessageChannel();
|
|
|
|
const loadDebuggerAndWorker = Promise.all([
|
|
waitForRegister(WORKER_URL, DEBUGGER_URL),
|
|
// We need to wait for the worker to load so a Debugger.Source will be
|
|
// guaranteed to exist.
|
|
new Promise(r => {
|
|
workerLoadedChannel.port1.onmessage = r;
|
|
}),
|
|
]);
|
|
workerFrame.contentWindow.postMessage(WORKER_URL, "*", [
|
|
workerLoadedChannel.port2,
|
|
]);
|
|
const [dbg] = await loadDebuggerAndWorker;
|
|
|
|
// Wait for the debugger server to reply with the sourceMapURL of the
|
|
// loaded worker scripts.
|
|
info("Querying for the sourceMapURL of the worker script");
|
|
const urls = await new Promise(res => {
|
|
dbg.addListener({
|
|
onMessage(msg) {
|
|
const data = JSON.parse(msg);
|
|
if (data.type !== "response-sourceMapURL") {
|
|
return;
|
|
}
|
|
dbg.removeListener(this);
|
|
res(data.value);
|
|
},
|
|
});
|
|
dbg.postMessage(
|
|
JSON.stringify({
|
|
type: "request-sourceMapURL",
|
|
url: WORKER_URL,
|
|
})
|
|
);
|
|
});
|
|
|
|
ok(Array.isArray(urls) && urls.length === 1, "has a single source actor");
|
|
is(urls[0], "worker-header.js.map", "has the right map URL");
|
|
|
|
SimpleTest.finish();
|
|
})();
|