diff options
Diffstat (limited to 'toolkit/components/extensions/test/xpcshell/test_change_backgroundServiceWorker_enabled_pref_true.js')
-rw-r--r-- | toolkit/components/extensions/test/xpcshell/test_change_backgroundServiceWorker_enabled_pref_true.js | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/toolkit/components/extensions/test/xpcshell/test_change_backgroundServiceWorker_enabled_pref_true.js b/toolkit/components/extensions/test/xpcshell/test_change_backgroundServiceWorker_enabled_pref_true.js new file mode 100644 index 0000000000..06286427f5 --- /dev/null +++ b/toolkit/components/extensions/test/xpcshell/test_change_backgroundServiceWorker_enabled_pref_true.js @@ -0,0 +1,85 @@ +"use strict"; + +// extensions.backgroundServiceWorker.enabled=true is set in the test manifest +// because there is no guarantee that the pref value set at runtime takes effect +// due to the pref being declared "mirror: once". The value of this pref is +// frozen upon the first access to any "mirror:once" pref, and we can therefore +// not assume the pref value to be mutable at runtime. +const PREF_EXT_SW_ENABLED = "extensions.backgroundServiceWorker.enabled"; +const defaultPrefs = Services.prefs.getDefaultBranch(""); + +add_task( + { skip_if: () => AppConstants.MOZ_WEBEXT_WEBIDL_ENABLED }, + async function test_when_extensions_webidl_bindings_disabled() { + Assert.equal( + defaultPrefs.getBoolPref(PREF_EXT_SW_ENABLED), + false, + "The default pref value should be false" + ); + Assert.ok( + Services.prefs.prefIsLocked(PREF_EXT_SW_ENABLED), + "Pref should be locked when MOZ_WEBEXT_WEBIDL_ENABLED is false" + ); + // Despite the pref set to true (see comment at PREF_EXT_SW_ENABLED), the + // pref should be locked to false when IDL is disabled. + Assert.equal( + Services.prefs.getBoolPref(PREF_EXT_SW_ENABLED), + false, + "Pref value should be the default value" + ); + Assert.equal( + WebExtensionPolicy.backgroundServiceWorkerEnabled, + false, + "backgroundServiceWorkerEnabled should be false" + ); + + Services.prefs.unlockPref(PREF_EXT_SW_ENABLED); + + // After unlocking the pref, the pref set to true in the test manifest + // should apply now. + Assert.ok( + Services.prefs.getBoolPref(PREF_EXT_SW_ENABLED), + "After unlocking the pref, the pref can have a non-default value" + ); + Assert.equal( + WebExtensionPolicy.backgroundServiceWorkerEnabled, + false, + "backgroundServiceWorkerEnabled is still false despite the pref flip" + ); + } +); + +add_task( + { skip_if: () => !AppConstants.MOZ_WEBEXT_WEBIDL_ENABLED }, + async function test_when_extensions_webidl_bindings_enabled() { + const defaultPrefValue = defaultPrefs.getBoolPref(PREF_EXT_SW_ENABLED); + info(`The default pref value is ${defaultPrefValue}`); + Assert.ok( + !Services.prefs.prefIsLocked(PREF_EXT_SW_ENABLED), + "Pref should not be locked when MOZ_WEBEXT_WEBIDL_ENABLED is true" + ); + // Note: Pref is set to true, see comment at PREF_EXT_SW_ENABLED. + Assert.equal( + Services.prefs.getBoolPref(PREF_EXT_SW_ENABLED), + true, + "Pref value should be true" + ); + Assert.equal( + WebExtensionPolicy.backgroundServiceWorkerEnabled, + true, + "backgroundServiceWorkerEnabled should be false" + ); + + // Flip pref and test result. + Services.prefs.setBoolPref(PREF_EXT_SW_ENABLED, false); + Assert.ok( + !Services.prefs.getBoolPref(PREF_EXT_SW_ENABLED), + "The pref can be flipped to a different value" + ); + Assert.equal( + WebExtensionPolicy.backgroundServiceWorkerEnabled, + true, + "backgroundServiceWorkerEnabled is still true despite the pref flip" + ); + } +); |