Source code

Revision control

Copy as Markdown

Other Tools

/* Any copyright is dedicated to the Public Domain.
"use strict";
const { ExtensionTestUtils } = ChromeUtils.importESModule(
);
ExtensionTestUtils.init(this);
// ID of the WebExtension that bundles the DLP wasm module, shared by the tests
// that install it. keep in sync with EXTENSION_ID in
// ContentAnalysisWasmRunner.sys.mjs
const EXTENSION_ID = "dlp-wasm-provider@mozilla.org";
// Name the wasm module has both as a test support-file and inside the extension
// package.
const WASM_PATH = "content_analysis_wasm.wasm";
// The ContentAnalysisWasm process actor is normally registered at browser
// startup (via ActorManagerParent/DesktopActorRegistry), which does not run in
// xpcshell, so register it here.
try {
ChromeUtils.registerProcessActor("ContentAnalysisWasm", {
parent: {
esModuleURI: "resource://gre/modules/ContentAnalysisWasmParent.sys.mjs",
},
child: {
esModuleURI: "resource://gre/modules/ContentAnalysisWasmChild.sys.mjs",
},
remoteTypes: ["privilegedabout"],
});
} catch (e) {
if (e.name !== "NotSupportedError") {
throw e;
}
}
// Install a WebExtension bundling the wasm module under WASM_PATH
async function installModuleExtension() {
const extension = ExtensionTestUtils.loadExtension({
manifest: {
browser_specific_settings: { gecko: { id: EXTENSION_ID } },
web_accessible_resources: [WASM_PATH],
},
files: {
// The XPI writer requires an ArrayBuffer for binary entries. do_get_file
// resolves WASM_PATH against the test's directory (the wasm is a
// support-file copied there) and IOUtils.read needs an absolute path.
[WASM_PATH]: (await IOUtils.read(do_get_file(WASM_PATH).path)).buffer,
},
});
await extension.startup();
return extension;
}