diff --git a/browser/components/extensions/test/xpcshell/test_ext_manifest.js b/browser/components/extensions/test/xpcshell/test_ext_manifest.js deleted file mode 100644 index a2a3c79bdadf..000000000000 --- a/browser/components/extensions/test/xpcshell/test_ext_manifest.js +++ /dev/null @@ -1,48 +0,0 @@ -/* -*- 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); - } - } -}); diff --git a/browser/components/extensions/test/xpcshell/xpcshell.ini b/browser/components/extensions/test/xpcshell/xpcshell.ini index 230f60d22590..190b90749e4a 100644 --- a/browser/components/extensions/test/xpcshell/xpcshell.ini +++ b/browser/components/extensions/test/xpcshell/xpcshell.ini @@ -17,7 +17,6 @@ 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] diff --git a/toolkit/components/extensions/schemas/manifest.json b/toolkit/components/extensions/schemas/manifest.json index db1f6a2552e9..2b778a8c5ca3 100644 --- a/toolkit/components/extensions/schemas/manifest.json +++ b/toolkit/components/extensions/schemas/manifest.json @@ -95,7 +95,7 @@ "type": "object", "optional": true, "patternProperties": { - "^[1-9]\\d*$": { "$ref": "ExtensionFileUrl" } + "^[1-9]\\d*$": { "type": "string" } } }, diff --git a/toolkit/components/extensions/test/xpcshell/test_ext_manifest.js b/toolkit/components/extensions/test/xpcshell/test_ext_manifest.js index bde6bff3357d..b21dbda6d585 100644 --- a/toolkit/components/extensions/test/xpcshell/test_ext_manifest.js +++ b/toolkit/components/extensions/test/xpcshell/test_ext_manifest.js @@ -2,42 +2,48 @@ /* 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) { - await testIconPaths(path, { - "icons": path, - }, /Error processing icons/); - - await testIconPaths(path, { - "icons": { - "16": path, + let normalized = await ExtensionTestUtils.normalizeManifest({ + "browser_action": { + "default_icon": path, }, - }, /Error processing icons/); + }); + + 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)}`); } let paths = ["icon.png", "/icon.png", "./icon.png", "path to an icon.png", " icon.png"]; for (let path of paths) { - // manifest.icons is an object - await testIconPaths(path, { - "icons": path, - }, /Error processing icons/); - - await testIconPaths(path, { - "icons": { - "16": path, + let normalized = await ExtensionTestUtils.normalizeManifest({ + "browser_action": { + "default_icon": { + "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)}`); } });