summaryrefslogtreecommitdiffstats
path: root/toolkit/components/extensions/test/xpcshell/test_ext_webRequest_urlclassification.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/extensions/test/xpcshell/test_ext_webRequest_urlclassification.js')
-rw-r--r--toolkit/components/extensions/test/xpcshell/test_ext_webRequest_urlclassification.js45
1 files changed, 45 insertions, 0 deletions
diff --git a/toolkit/components/extensions/test/xpcshell/test_ext_webRequest_urlclassification.js b/toolkit/components/extensions/test/xpcshell/test_ext_webRequest_urlclassification.js
new file mode 100644
index 0000000000..de2d059d96
--- /dev/null
+++ b/toolkit/components/extensions/test/xpcshell/test_ext_webRequest_urlclassification.js
@@ -0,0 +1,45 @@
+"use strict";
+
+const { Schemas } = ChromeUtils.importESModule(
+ "resource://gre/modules/Schemas.sys.mjs"
+);
+
+/**
+ * If this test fails, likely nsIClassifiedChannel has added or changed a
+ * CLASSIFIED_* flag. Those changes must be in sync with
+ * ChannelWrapper.webidl/cpp and the web_request.json schema file.
+ */
+add_task(async function test_webrequest_url_classification_enum() {
+ // The startupCache is removed whenever the buildid changes by code that runs
+ // during Firefox startup but not during xpcshell startup, remove it by hand
+ // before running this test to avoid failures with --conditioned-profile
+ let file = PathUtils.join(
+ Services.dirsvc.get("ProfLD", Ci.nsIFile).path,
+ "startupCache",
+ "webext.sc.lz4"
+ );
+ await IOUtils.remove(file, { ignoreAbsent: true });
+
+ // use normalizeManifest to get the schema loaded.
+ await ExtensionTestUtils.normalizeManifest({ permissions: ["webRequest"] });
+
+ let ns = Schemas.getNamespace("webRequest");
+ let schema_enum = ns.get("UrlClassificationFlags").enumeration;
+ ok(
+ !!schema_enum.length,
+ `UrlClassificationFlags: ${JSON.stringify(schema_enum)}`
+ );
+
+ let prefix = /^(?:CLASSIFIED_)/;
+ let entries = 0;
+ for (let c of Object.keys(Ci.nsIClassifiedChannel).filter(name =>
+ prefix.test(name)
+ )) {
+ let entry = c.replace(prefix, "").toLowerCase();
+ if (!entry.startsWith("socialtracking")) {
+ ok(schema_enum.includes(entry), `schema ${entry} is in IDL`);
+ entries++;
+ }
+ }
+ equal(schema_enum.length, entries, "same number of entries");
+});