Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Errors

"use strict";
const { ExtensionTestCommon } = ChromeUtils.importESModule(
);
const { AddonManager } = ChromeUtils.importESModule(
"resource://gre/modules/AddonManager.sys.mjs"
);
AddonTestUtils.init(this);
add_setup(async () => {
await ExtensionTestUtils.startAddonManager();
});
// Verifies that audio can successfully be loaded. For details on reproduction
add_task(async function test_audio_from_unpacked_moz_extension() {
let files = ExtensionTestCommon.generateFiles({
files: {
"test.mp3": (await IOUtils.read(do_get_file("data/test.mp3").path))
.buffer,
},
manifest: {
browser_specific_settings: { gecko: { id: "test@ext" } },
},
async background() {
await new Promise(resolve => {
const mozExtensionUrl = browser.runtime.getURL("test.mp3");
browser.test.log(`Loading Audio: ${mozExtensionUrl}`);
let audio = new Audio(mozExtensionUrl);
audio.onloadedmetadata = resolve;
});
browser.test.sendMessage("done");
},
});
const unpackedPath = await IOUtils.createUniqueDirectory(
AddonTestUtils.tempDir.path,
"unpacked-extension"
);
const dir = await AddonTestUtils.promiseWriteFilesToDir(unpackedPath, files);
const extension = ExtensionTestUtils.expectExtension("test@ext");
await AddonManager.installTemporaryAddon(dir);
await extension.awaitStartup();
await extension.awaitMessage("done");
await extension.unload();
await IOUtils.remove(unpackedPath, { recursive: true });
});