summaryrefslogtreecommitdiffstats
path: root/browser/components/extensions/test/browser/browser_ext_themes_validation.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/extensions/test/browser/browser_ext_themes_validation.js')
-rw-r--r--browser/components/extensions/test/browser/browser_ext_themes_validation.js55
1 files changed, 55 insertions, 0 deletions
diff --git a/browser/components/extensions/test/browser/browser_ext_themes_validation.js b/browser/components/extensions/test/browser/browser_ext_themes_validation.js
new file mode 100644
index 0000000000..c004363a6b
--- /dev/null
+++ b/browser/components/extensions/test/browser/browser_ext_themes_validation.js
@@ -0,0 +1,55 @@
+"use strict";
+
+PromiseTestUtils.allowMatchingRejectionsGlobally(/packaging errors/);
+
+/**
+ * Helper function for testing a theme with invalid properties.
+ *
+ * @param {object} invalidProps The invalid properties to load the theme with.
+ */
+async function testThemeWithInvalidProperties(invalidProps) {
+ let manifest = {
+ theme: {},
+ };
+
+ invalidProps.forEach(prop => {
+ // Some properties require additional information:
+ switch (prop) {
+ case "background":
+ manifest[prop] = { scripts: ["background.js"] };
+ break;
+ case "permissions":
+ manifest[prop] = ["tabs"];
+ break;
+ case "omnibox":
+ manifest[prop] = { keyword: "test" };
+ break;
+ default:
+ manifest[prop] = {};
+ }
+ });
+
+ let extension = ExtensionTestUtils.loadExtension({ manifest });
+ await Assert.rejects(
+ extension.startup(),
+ /startup failed/,
+ "Theme should fail to load if it contains invalid properties"
+ );
+}
+
+add_task(
+ async function test_that_theme_with_invalid_properties_fails_to_load() {
+ let invalidProps = [
+ "page_action",
+ "browser_action",
+ "background",
+ "permissions",
+ "omnibox",
+ "commands",
+ ];
+ for (let prop in invalidProps) {
+ await testThemeWithInvalidProperties([prop]);
+ }
+ await testThemeWithInvalidProperties(invalidProps);
+ }
+);