зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1524001 update manifest to validate manifest.icons, r=kmag
Differential Revision: https://phabricator.services.mozilla.com/D18105 --HG-- rename : toolkit/components/extensions/test/xpcshell/test_ext_manifest.js => browser/components/extensions/test/xpcshell/test_ext_manifest.js extra : moz-landing-system : lando
This commit is contained in:
Родитель
40e0ac9225
Коммит
5b5b01194d
|
@ -0,0 +1,48 @@
|
|||
/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
||||
/* vim: set sts=2 sw=2 et tw=80: */
|
||||
"use strict";
|
||||
|
||||
async function testIconPaths(icon, manifest, expectedError) {
|
||||
let normalized = await ExtensionTestUtils.normalizeManifest(manifest);
|
||||
|
||||
if (expectedError) {
|
||||
ok(expectedError.test(normalized.error),
|
||||
`Should have an error for ${JSON.stringify(manifest)}`);
|
||||
} else {
|
||||
ok(!normalized.error, `Should not have an error ${JSON.stringify(manifest)}, ${normalized.error}`);
|
||||
}
|
||||
}
|
||||
|
||||
add_task(async function test_manifest() {
|
||||
let badpaths = ["", " ", "\t", "http://foo.com/icon.png"];
|
||||
for (let path of badpaths) {
|
||||
for (let action of ["browser_action", "page_action", "sidebar_action"]) {
|
||||
let manifest = {};
|
||||
manifest[action] = {default_icon: path};
|
||||
let error = new RegExp(`Error processing ${action}.default_icon`);
|
||||
await testIconPaths(path, manifest, error);
|
||||
|
||||
manifest[action] = {default_icon: {"16": path}};
|
||||
await testIconPaths(path, manifest, error);
|
||||
}
|
||||
}
|
||||
|
||||
let paths = ["icon.png", "/icon.png", "./icon.png", "path to an icon.png", " icon.png"];
|
||||
for (let path of paths) {
|
||||
for (let action of ["browser_action", "page_action", "sidebar_action"]) {
|
||||
let manifest = {};
|
||||
manifest[action] = {default_icon: path};
|
||||
if (action == "sidebar_action") {
|
||||
// Sidebar requires panel.
|
||||
manifest[action].default_panel = "foo.html";
|
||||
}
|
||||
await testIconPaths(path, manifest);
|
||||
|
||||
manifest[action] = {default_icon: {"16": path}};
|
||||
if (action == "sidebar_action") {
|
||||
manifest[action].default_panel = "foo.html";
|
||||
}
|
||||
await testIconPaths(path, manifest);
|
||||
}
|
||||
}
|
||||
});
|
|
@ -17,6 +17,7 @@ dupe-manifest =
|
|||
# For tests which should only run with both remote extensions and remote content.
|
||||
|
||||
[test_ext_geckoProfiler_schema.js]
|
||||
[test_ext_manifest.js]
|
||||
[test_ext_manifest_commands.js]
|
||||
[test_ext_manifest_omnibox.js]
|
||||
[test_ext_manifest_permissions.js]
|
||||
|
|
|
@ -95,7 +95,7 @@
|
|||
"type": "object",
|
||||
"optional": true,
|
||||
"patternProperties": {
|
||||
"^[1-9]\\d*$": { "type": "string" }
|
||||
"^[1-9]\\d*$": { "$ref": "ExtensionFileUrl" }
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
@ -2,48 +2,42 @@
|
|||
/* vim: set sts=2 sw=2 et tw=80: */
|
||||
"use strict";
|
||||
|
||||
async function testIconPaths(icon, manifest, expectedError) {
|
||||
let normalized = await ExtensionTestUtils.normalizeManifest(manifest);
|
||||
|
||||
if (expectedError) {
|
||||
ok(expectedError.test(normalized.error),
|
||||
`Should have an error for ${JSON.stringify(icon)}`);
|
||||
} else {
|
||||
ok(!normalized.error, `Should not have an error ${JSON.stringify(icon)}`);
|
||||
}
|
||||
}
|
||||
|
||||
add_task(async function test_manifest() {
|
||||
let badpaths = ["", " ", "\t", "http://foo.com/icon.png"];
|
||||
for (let path of badpaths) {
|
||||
let normalized = await ExtensionTestUtils.normalizeManifest({
|
||||
"browser_action": {
|
||||
"default_icon": path,
|
||||
await testIconPaths(path, {
|
||||
"icons": path,
|
||||
}, /Error processing icons/);
|
||||
|
||||
await testIconPaths(path, {
|
||||
"icons": {
|
||||
"16": path,
|
||||
},
|
||||
});
|
||||
|
||||
ok(/Error processing browser_action.default_icon/.test(normalized.error),
|
||||
`Should have an error for ${JSON.stringify(path)}`);
|
||||
|
||||
normalized = await ExtensionTestUtils.normalizeManifest({
|
||||
"browser_action": {
|
||||
"default_icon": {
|
||||
"16": path,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
ok(/Error processing browser_action.default_icon/.test(normalized.error),
|
||||
`Should have an error for ${JSON.stringify(path)}`);
|
||||
}, /Error processing icons/);
|
||||
}
|
||||
|
||||
let paths = ["icon.png", "/icon.png", "./icon.png", "path to an icon.png", " icon.png"];
|
||||
for (let path of paths) {
|
||||
let normalized = await ExtensionTestUtils.normalizeManifest({
|
||||
"browser_action": {
|
||||
"default_icon": {
|
||||
"16": path,
|
||||
},
|
||||
// manifest.icons is an object
|
||||
await testIconPaths(path, {
|
||||
"icons": path,
|
||||
}, /Error processing icons/);
|
||||
|
||||
await testIconPaths(path, {
|
||||
"icons": {
|
||||
"16": path,
|
||||
},
|
||||
});
|
||||
|
||||
ok(!normalized.error, `Should not have an error ${JSON.stringify(path)}`);
|
||||
|
||||
normalized = await ExtensionTestUtils.normalizeManifest({
|
||||
"browser_action": {
|
||||
"default_icon": path,
|
||||
},
|
||||
});
|
||||
|
||||
ok(!normalized.error, `Should not have an error ${JSON.stringify(path)}`);
|
||||
}
|
||||
});
|
||||
|
|
|
@ -11,6 +11,7 @@ function backgroundGetSelf() {
|
|||
browser.management.getSelf().then(extInfo => {
|
||||
let url = browser.extension.getURL("*");
|
||||
extInfo.hostPermissions = extInfo.hostPermissions.filter(i => i != url);
|
||||
extInfo.url = browser.extension.getURL("");
|
||||
browser.test.sendMessage("management-getSelf", extInfo);
|
||||
}, error => {
|
||||
browser.test.notifyFail(`getSelf rejected with error: ${error}`);
|
||||
|
@ -65,8 +66,9 @@ add_task(async function test_management_get_self_complete() {
|
|||
equal(extInfo.updateUrl, manifest.applications.gecko.update_url, "getSelf returned the expected updateUrl");
|
||||
ok(extInfo.optionsUrl.endsWith(manifest.options_ui.page), "getSelf returned the expected optionsUrl");
|
||||
for (let [index, size] of Object.keys(manifest.icons).sort().entries()) {
|
||||
let iconUrl = `${extInfo.url}${manifest.icons[size]}`;
|
||||
equal(extInfo.icons[index].size, +size, "getSelf returned the expected icon size");
|
||||
equal(extInfo.icons[index].url, manifest.icons[size], "getSelf returned the expected icon url");
|
||||
equal(extInfo.icons[index].url, iconUrl, "getSelf returned the expected icon url");
|
||||
}
|
||||
deepEqual(extInfo.permissions.sort(), permissions.sort(), "getSelf returned the expected permissions");
|
||||
deepEqual(extInfo.hostPermissions.sort(), hostPermissions.sort(), "getSelf returned the expected hostPermissions");
|
||||
|
|
Загрузка…
Ссылка в новой задаче