71 lines
1.6 KiB
JavaScript
71 lines
1.6 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
const { DevToolsWorker } = ChromeUtils.importESModule(
|
|
"resource://devtools/shared/worker/worker.sys.mjs"
|
|
);
|
|
|
|
const BUFFER_SIZE = 8;
|
|
|
|
add_task(async function () {
|
|
// Test both CJS and JSM versions
|
|
|
|
await testWorker();
|
|
await testTransfer();
|
|
});
|
|
|
|
async function testWorker() {
|
|
const worker = new DevToolsWorker(
|
|
getRootDirectory(gTestPath) + "file_worker-01-worker.worker.js"
|
|
);
|
|
|
|
const results = await worker.performTask("groupByField", {
|
|
items: [
|
|
{ name: "Paris", country: "France" },
|
|
{ name: "Lagos", country: "Nigeria" },
|
|
{ name: "Lyon", country: "France" },
|
|
],
|
|
groupField: "country",
|
|
});
|
|
|
|
is(
|
|
Object.keys(results.groups).join(","),
|
|
"France,Nigeria",
|
|
`worker should have returned the expected result`
|
|
);
|
|
|
|
worker.destroy();
|
|
}
|
|
|
|
async function testTransfer() {
|
|
const worker = new DevToolsWorker(
|
|
getRootDirectory(gTestPath) + "file_worker-01-transfer.worker.js"
|
|
);
|
|
|
|
const buf = new ArrayBuffer(BUFFER_SIZE);
|
|
|
|
is(
|
|
buf.byteLength,
|
|
BUFFER_SIZE,
|
|
"Size of the buffer before transfer is correct."
|
|
);
|
|
|
|
is(
|
|
await worker.performTask("transfer", { buf }),
|
|
8,
|
|
"Sent array buffer to worker"
|
|
);
|
|
is(buf.byteLength, 8, "Array buffer was copied, not transferred.");
|
|
|
|
is(
|
|
await worker.performTask("transfer", { buf }, [buf]),
|
|
8,
|
|
"Sent array buffer to worker"
|
|
);
|
|
is(buf.byteLength, 0, "Array buffer was transferred, not copied.");
|
|
|
|
worker.destroy();
|
|
}
|