1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
const ADDON_ID = "webext-test@tests.mozilla.org";
add_task(async function setup() {
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1");
await promiseStartupManager();
});
add_task(async function install_xpi() {
// WebExtension with a JSON syntax error in manifest.json
let xpi1 = AddonTestUtils.createTempWebExtensionFile({
files: {
"manifest.json": String.raw`{
"manifest_version: 2,
"browser_specific_settings": {"gecko": {"id": "${ADDON_ID}"}},
"name": "Temp WebExt with Error",
"version": "0.1"
}`,
},
});
// Valid WebExtension
let xpi2 = AddonTestUtils.createTempWebExtensionFile({
files: {
"manifest.json": String.raw`{
"manifest_version": 2,
"browser_specific_settings": {"gecko": {"id": "${ADDON_ID}"}},
"name": "Temp WebExt without Error",
"version": "0.1"
}`,
},
});
let install1 = await AddonManager.getInstallForFile(xpi1);
Assert.equal(install1.state, AddonManager.STATE_DOWNLOAD_FAILED);
Assert.equal(install1.error, AddonManager.ERROR_CORRUPT_FILE);
// Replace xpi1 with xpi2 to have the same filename to reproduce install error
xpi2.moveTo(xpi1.parent, xpi1.leafName);
let install2 = await AddonManager.getInstallForFile(xpi2);
Assert.equal(install2.error, 0);
});
|