summaryrefslogtreecommitdiffstats
path: root/toolkit/components/webextensions/test/xpcshell/test_ext_schemas_allowed_contexts.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/webextensions/test/xpcshell/test_ext_schemas_allowed_contexts.js')
-rw-r--r--toolkit/components/webextensions/test/xpcshell/test_ext_schemas_allowed_contexts.js147
1 files changed, 0 insertions, 147 deletions
diff --git a/toolkit/components/webextensions/test/xpcshell/test_ext_schemas_allowed_contexts.js b/toolkit/components/webextensions/test/xpcshell/test_ext_schemas_allowed_contexts.js
deleted file mode 100644
index 606459764..000000000
--- a/toolkit/components/webextensions/test/xpcshell/test_ext_schemas_allowed_contexts.js
+++ /dev/null
@@ -1,147 +0,0 @@
-"use strict";
-
-Components.utils.import("resource://gre/modules/Schemas.jsm");
-
-let schemaJson = [
- {
- namespace: "noAllowedContexts",
- properties: {
- prop1: {type: "object"},
- prop2: {type: "object", allowedContexts: ["test_zero", "test_one"]},
- prop3: {type: "number", value: 1},
- prop4: {type: "number", value: 1, allowedContexts: ["numeric_one"]},
- },
- },
- {
- namespace: "defaultContexts",
- defaultContexts: ["test_two"],
- properties: {
- prop1: {type: "object"},
- prop2: {type: "object", allowedContexts: ["test_three"]},
- prop3: {type: "number", value: 1},
- prop4: {type: "number", value: 1, allowedContexts: ["numeric_two"]},
- },
- },
- {
- namespace: "withAllowedContexts",
- allowedContexts: ["test_four"],
- properties: {
- prop1: {type: "object"},
- prop2: {type: "object", allowedContexts: ["test_five"]},
- prop3: {type: "number", value: 1},
- prop4: {type: "number", value: 1, allowedContexts: ["numeric_three"]},
- },
- },
- {
- namespace: "withAllowedContextsAndDefault",
- allowedContexts: ["test_six"],
- defaultContexts: ["test_seven"],
- properties: {
- prop1: {type: "object"},
- prop2: {type: "object", allowedContexts: ["test_eight"]},
- prop3: {type: "number", value: 1},
- prop4: {type: "number", value: 1, allowedContexts: ["numeric_four"]},
- },
- },
- {
- namespace: "with_submodule",
- defaultContexts: ["test_nine"],
- types: [{
- id: "subtype",
- type: "object",
- functions: [{
- name: "noAllowedContexts",
- type: "function",
- parameters: [],
- }, {
- name: "allowedContexts",
- allowedContexts: ["test_ten"],
- type: "function",
- parameters: [],
- }],
- }],
- properties: {
- prop1: {$ref: "subtype"},
- prop2: {$ref: "subtype", allowedContexts: ["test_eleven"]},
- },
- },
-];
-add_task(function* testRestrictions() {
- let url = "data:," + JSON.stringify(schemaJson);
- yield Schemas.load(url);
- let results = {};
- let localWrapper = {
- shouldInject(ns, name, allowedContexts) {
- name = name === null ? ns : ns + "." + name;
- results[name] = allowedContexts.join(",");
- return true;
- },
- getImplementation() {
- // The actual implementation is not significant for this test.
- // Let's take this opportunity to see if schema generation is free of
- // exceptions even when somehow getImplementation does not return an
- // implementation.
- },
- };
-
- let root = {};
- Schemas.inject(root, localWrapper);
-
- function verify(path, expected) {
- let obj = root;
- for (let thing of path.split(".")) {
- try {
- obj = obj[thing];
- } catch (e) {
- // Blech.
- }
- }
-
- let result = results[path];
- equal(result, expected);
- }
-
- verify("noAllowedContexts", "");
- verify("noAllowedContexts.prop1", "");
- verify("noAllowedContexts.prop2", "test_zero,test_one");
- verify("noAllowedContexts.prop3", "");
- verify("noAllowedContexts.prop4", "numeric_one");
-
- verify("defaultContexts", "");
- verify("defaultContexts.prop1", "test_two");
- verify("defaultContexts.prop2", "test_three");
- verify("defaultContexts.prop3", "test_two");
- verify("defaultContexts.prop4", "numeric_two");
-
- verify("withAllowedContexts", "test_four");
- verify("withAllowedContexts.prop1", "");
- verify("withAllowedContexts.prop2", "test_five");
- verify("withAllowedContexts.prop3", "");
- verify("withAllowedContexts.prop4", "numeric_three");
-
- verify("withAllowedContextsAndDefault", "test_six");
- verify("withAllowedContextsAndDefault.prop1", "test_seven");
- verify("withAllowedContextsAndDefault.prop2", "test_eight");
- verify("withAllowedContextsAndDefault.prop3", "test_seven");
- verify("withAllowedContextsAndDefault.prop4", "numeric_four");
-
- verify("with_submodule", "");
- verify("with_submodule.prop1", "test_nine");
- verify("with_submodule.prop1.noAllowedContexts", "test_nine");
- verify("with_submodule.prop1.allowedContexts", "test_ten");
- verify("with_submodule.prop2", "test_eleven");
- // Note: test_nine inherits allowed contexts from the namespace, not from
- // submodule. There is no "defaultContexts" for submodule types to not
- // complicate things.
- verify("with_submodule.prop1.noAllowedContexts", "test_nine");
- verify("with_submodule.prop1.allowedContexts", "test_ten");
-
- // This is a constant, so it does not matter that getImplementation does not
- // return an implementation since the API injector should take care of it.
- equal(root.noAllowedContexts.prop3, 1);
-
- Assert.throws(() => root.noAllowedContexts.prop1,
- /undefined/,
- "Should throw when the implementation is absent.");
-});
-