summaryrefslogtreecommitdiffstats
path: root/browser/components/extensions/test/xpcshell/test_ext_manifest.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/extensions/test/xpcshell/test_ext_manifest.js')
-rw-r--r--browser/components/extensions/test/xpcshell/test_ext_manifest.js61
1 files changed, 61 insertions, 0 deletions
diff --git a/browser/components/extensions/test/xpcshell/test_ext_manifest.js b/browser/components/extensions/test/xpcshell/test_ext_manifest.js
new file mode 100644
index 0000000000..376d3901c0
--- /dev/null
+++ b/browser/components/extensions/test/xpcshell/test_ext_manifest.js
@@ -0,0 +1,61 @@
+/* -*- 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);
+ }
+ }
+});