diff --git a/.eslintignore b/.eslintignore index 883e6dae8654..37c1e5280539 100644 --- a/.eslintignore +++ b/.eslintignore @@ -37,8 +37,8 @@ browser/components/sessionstore/test/unit/data/sessionstore_valid.js browser/components/sessionstore/test/unit/data/sessionstore_invalid.js # This file is split into two in order to keep it as a valid json file # for documentation purposes (policies.json) but to be accessed by the -# code as a .jsm (schema.jsm) -browser/components/enterprisepolicies/schemas/schema.jsm +# code as a .sys.mjs (schema.sys.mjs) +browser/components/enterprisepolicies/schemas/schema.sys.mjs # generated or library files in pocket browser/components/pocket/content/panels/js/tmpl.js browser/components/pocket/content/panels/js/vendor.bundle.js diff --git a/.prettierignore b/.prettierignore index 12101edba09a..30db2098f393 100644 --- a/.prettierignore +++ b/.prettierignore @@ -101,8 +101,8 @@ browser/components/sessionstore/test/unit/data/sessionstore_valid.js browser/components/sessionstore/test/unit/data/sessionstore_invalid.js # This file is split into two in order to keep it as a valid json file # for documentation purposes (policies.json) but to be accessed by the -# code as a .jsm (schema.jsm) -browser/components/enterprisepolicies/schemas/schema.jsm +# code as a .sys.mjs (schema.sys.mjs) +browser/components/enterprisepolicies/schemas/schema.sys.mjs # generated or library files in pocket browser/components/pocket/content/panels/js/tmpl.js browser/components/pocket/content/panels/js/vendor.bundle.js diff --git a/browser/components/enterprisepolicies/content/aboutPolicies.js b/browser/components/enterprisepolicies/content/aboutPolicies.js index 705ceccfd81b..a20ebfc351b3 100644 --- a/browser/components/enterprisepolicies/content/aboutPolicies.js +++ b/browser/components/enterprisepolicies/content/aboutPolicies.js @@ -8,8 +8,8 @@ const { XPCOMUtils } = ChromeUtils.importESModule( "resource://gre/modules/XPCOMUtils.sys.mjs" ); -XPCOMUtils.defineLazyModuleGetters(this, { - schema: "resource:///modules/policies/schema.jsm", +ChromeUtils.defineESModuleGetters(this, { + schema: "resource:///modules/policies/schema.sys.mjs", }); function col(text, className) { diff --git a/browser/components/enterprisepolicies/schemas/moz.build b/browser/components/enterprisepolicies/schemas/moz.build index 19e17705e798..47b6fbee19cf 100644 --- a/browser/components/enterprisepolicies/schemas/moz.build +++ b/browser/components/enterprisepolicies/schemas/moz.build @@ -8,5 +8,5 @@ with Files("**"): BUG_COMPONENT = ("Firefox", "Enterprise Policies") EXTRA_PP_JS_MODULES.policies += [ - "schema.jsm", + "schema.sys.mjs", ] diff --git a/browser/components/enterprisepolicies/schemas/schema.jsm b/browser/components/enterprisepolicies/schemas/schema.sys.mjs similarity index 52% rename from browser/components/enterprisepolicies/schemas/schema.jsm rename to browser/components/enterprisepolicies/schemas/schema.sys.mjs index 54ae8751aa93..3d8ce82385dc 100644 --- a/browser/components/enterprisepolicies/schemas/schema.jsm +++ b/browser/components/enterprisepolicies/schemas/schema.sys.mjs @@ -2,9 +2,15 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ -"use strict"; - -const EXPORTED_SYMBOLS = ["schema"]; - -const schema = +const initialSchema = #include policies-schema.json + +export let schema = initialSchema; + +export function modifySchemaForTests(customSchema) { + if (customSchema) { + schema = customSchema; + } else { + schema = initialSchema; + } + } diff --git a/browser/components/enterprisepolicies/tests/xpcshell/test_sorted_alphabetically.js b/browser/components/enterprisepolicies/tests/xpcshell/test_sorted_alphabetically.js index b56a69a1b3ff..088e4fcb7e05 100644 --- a/browser/components/enterprisepolicies/tests/xpcshell/test_sorted_alphabetically.js +++ b/browser/components/enterprisepolicies/tests/xpcshell/test_sorted_alphabetically.js @@ -19,8 +19,8 @@ function checkArrayIsSorted(array, msg) { } add_task(async function test_policies_sorted() { - let { schema } = ChromeUtils.import( - "resource:///modules/policies/schema.jsm" + let { schema } = ChromeUtils.importESModule( + "resource:///modules/policies/schema.sys.mjs" ); let { Policies } = ChromeUtils.importESModule( "resource:///modules/policies/Policies.sys.mjs" @@ -37,8 +37,8 @@ add_task(async function test_policies_sorted() { }); add_task(async function check_naming_conventions() { - let { schema } = ChromeUtils.import( - "resource:///modules/policies/schema.jsm" + let { schema } = ChromeUtils.importESModule( + "resource:///modules/policies/schema.sys.mjs" ); equal( Object.keys(schema.properties).some(key => key.includes("__")), diff --git a/browser/components/urlbar/tests/ext/api.js b/browser/components/urlbar/tests/ext/api.js index 51a2757b5a81..77da790190c8 100644 --- a/browser/components/urlbar/tests/ext/api.js +++ b/browser/components/urlbar/tests/ext/api.js @@ -103,7 +103,7 @@ this.experiments_urlbar = class extends ExtensionAPI { value: Preferences.get(pref), // Nothing actually uses this, but on debug builds there are extra - // checks enabled in Schema.jsm that fail if it's not present. The + // checks enabled in Schema.sys.mjs that fail if it's not present. The // value doesn't matter. levelOfControl: "controllable_by_this_extension", }; diff --git a/netwerk/test/unit/xpcshell.ini b/netwerk/test/unit/xpcshell.ini index a6b214d8fedf..4682b7737cc7 100644 --- a/netwerk/test/unit/xpcshell.ini +++ b/netwerk/test/unit/xpcshell.ini @@ -678,7 +678,7 @@ skip-if = os == "android" run-sequentially = node server exceptions dont replay well [test_proxy_pac.js] [test_trr_enterprise_policy.js] -firefox-appdir = browser # needed for resource:///modules/policies/schema.jsm to be registered +firefox-appdir = browser # needed for resource:///modules/policies/schema.sys.mjs to be registered skip-if = os == "android" socketprocess_networking diff --git a/toolkit/components/enterprisepolicies/EnterprisePoliciesParent.sys.mjs b/toolkit/components/enterprisepolicies/EnterprisePoliciesParent.sys.mjs index 0a0c9601be5c..94ddeb07c303 100644 --- a/toolkit/components/enterprisepolicies/EnterprisePoliciesParent.sys.mjs +++ b/toolkit/components/enterprisepolicies/EnterprisePoliciesParent.sys.mjs @@ -170,8 +170,8 @@ EnterprisePoliciesManager.prototype = { }, _activatePolicies(unparsedPolicies) { - let { schema } = ChromeUtils.import( - "resource:///modules/policies/schema.jsm" + let { schema } = ChromeUtils.importESModule( + "resource:///modules/policies/schema.sys.mjs" ); for (let policyName of Object.keys(unparsedPolicies)) { diff --git a/toolkit/components/enterprisepolicies/macOSPoliciesParser.sys.mjs b/toolkit/components/enterprisepolicies/macOSPoliciesParser.sys.mjs index db2793a6ab20..09f67bba636f 100644 --- a/toolkit/components/enterprisepolicies/macOSPoliciesParser.sys.mjs +++ b/toolkit/components/enterprisepolicies/macOSPoliciesParser.sys.mjs @@ -41,8 +41,8 @@ export var macOSPoliciesParser = { }, removeUnknownPolicies(policies) { - let { schema } = ChromeUtils.import( - "resource:///modules/policies/schema.jsm" + let { schema } = ChromeUtils.importESModule( + "resource:///modules/policies/schema.sys.mjs" ); for (let policyName of Object.keys(policies)) { diff --git a/toolkit/components/enterprisepolicies/tests/EnterprisePolicyTesting.sys.mjs b/toolkit/components/enterprisepolicies/tests/EnterprisePolicyTesting.sys.mjs index f4432c938632..b877c6f73881 100644 --- a/toolkit/components/enterprisepolicies/tests/EnterprisePolicyTesting.sys.mjs +++ b/toolkit/components/enterprisepolicies/tests/EnterprisePolicyTesting.sys.mjs @@ -9,6 +9,7 @@ import { Assert } from "resource://testing-common/Assert.sys.mjs"; const lazy = {}; ChromeUtils.defineESModuleGetters(lazy, { FileTestUtils: "resource://testing-common/FileTestUtils.sys.mjs", + modifySchemaForTests: "resource:///modules/policies/schema.sys.mjs", }); export var EnterprisePolicyTesting = { @@ -41,15 +42,8 @@ export var EnterprisePolicyTesting = { }, "EnterprisePolicies:AllPoliciesApplied"); }); - // Clear any previously used custom schema - Cu.unload("resource:///modules/policies/schema.jsm"); - - if (customSchema) { - let schemaModule = ChromeUtils.import( - "resource:///modules/policies/schema.jsm" - ); - schemaModule.schema = customSchema; - } + // Clear any previously used custom schema or assign a new one + lazy.modifySchemaForTests(customSchema || null); Services.obs.notifyObservers(null, "EnterprisePolicies:Restart"); return promise; diff --git a/toolkit/components/enterprisepolicies/tests/xpcshell/xpcshell.ini b/toolkit/components/enterprisepolicies/tests/xpcshell/xpcshell.ini index b5ba816b2611..234dcb03c8df 100644 --- a/toolkit/components/enterprisepolicies/tests/xpcshell/xpcshell.ini +++ b/toolkit/components/enterprisepolicies/tests/xpcshell/xpcshell.ini @@ -1,4 +1,5 @@ [DEFAULT] +firefox-appdir = browser head = head.js skip-if = toolkit == 'android' diff --git a/tools/esmify/mach_commands.py b/tools/esmify/mach_commands.py index 6d1fb71d5b07..787de484244b 100644 --- a/tools/esmify/mach_commands.py +++ b/tools/esmify/mach_commands.py @@ -120,7 +120,7 @@ excluded_from_imports_prefix = list( # Files has macro. "browser/app/profile/firefox.js", "browser/branding/official/pref/firefox-branding.js", - "browser/components/enterprisepolicies/schemas/schema.jsm", + "browser/components/enterprisepolicies/schemas/schema.sys.mjs", "browser/locales/en-US/firefox-l10n.js", "mobile/android/app/geckoview-prefs.js", "mobile/android/app/mobile.js",