Bug 1381579 - Remove async from functions in ExtensionPreferencesManager that don't need to be async, r?aswan
Also adds test_ext_browserSettings.js back into xpcshell-common.ini. It was somehow removed from the ini
files in https://hg.mozilla.org/mozilla-central/rev/9704283b0e3a and never added back.
MozReview-Commit-ID: 7Nv1jj7KMe2
--- a/toolkit/components/extensions/ExtensionPreferencesManager.jsm
+++ b/toolkit/components/extensions/ExtensionPreferencesManager.jsm
@@ -114,23 +114,23 @@ function setPrefs(setting, item) {
* @param {Extension} extension
* The extension for which a setting is being modified.
* @param {string} name
* The name of the setting being processed.
* @param {string} action
* The action that is being performed. Will be one of disable, enable
* or removeSetting.
- * @returns {Promise}
- * Resolves to true if preferences were set as a result and to false
+ * @returns {boolean}
+ * True if preferences were set as a result and false
* if preferences were not set.
*/
-async function processSetting(extension, name, action) {
- let expectedItem = await ExtensionSettingsStore.getSetting(STORE_TYPE, name);
- let item = await ExtensionSettingsStore[action](extension, STORE_TYPE, name);
+function processSetting(extension, name, action) {
+ let expectedItem = ExtensionSettingsStore.getSetting(STORE_TYPE, name);
+ let item = ExtensionSettingsStore[action](extension, STORE_TYPE, name);
if (item) {
let setting = settingsMap.get(name);
let expectedPrefs = expectedItem.initialValue
|| setting.setCallback(expectedItem.value);
if (Object.keys(expectedPrefs).some(
pref => expectedPrefs[pref] && Preferences.get(pref) != expectedPrefs[pref])) {
return false;
}
@@ -198,102 +198,96 @@ this.ExtensionPreferencesManager = {
* Indicates that this extension wants to temporarily cede control over the
* given setting.
*
* @param {Extension} extension
* The extension for which a preference setting is being removed.
* @param {string} name
* The unique id of the setting.
*
- * @returns {Promise}
- * Resolves to true if the preferences were changed and to false if
- * the preferences were not changed.
+ * @returns {boolean}
+ * True if preferences were changed and false if preferences
+ * were not changed.
*/
disableSetting(extension, name) {
return processSetting(extension, name, "disable");
},
/**
* Enable a setting that has been disabled.
*
* @param {Extension} extension
* The extension for which a setting is being enabled.
* @param {string} name
* The unique id of the setting.
*
- * @returns {Promise}
- * Resolves to true if the preferences were changed and to false if
- * the preferences were not changed.
+ * @returns {boolean}
+ * True if preferences were changed and false if preferences
+ * were not changed.
*/
enableSetting(extension, name) {
return processSetting(extension, name, "enable");
},
/**
* Indicates that this extension no longer wants to set the given setting.
*
* @param {Extension} extension
* The extension for which a preference setting is being removed.
* @param {string} name
* The unique id of the setting.
*
- * @returns {Promise}
- * Resolves to true if the preferences were changed and to false if
- * the preferences were not changed.
+ * @returns {boolean}
+ * True if preferences were changed and false if preferences
+ * were not changed.
*/
removeSetting(extension, name) {
return processSetting(extension, name, "removeSetting");
},
/**
* Disables all previously set settings for an extension. This can be called when
* an extension is being disabled, for example.
*
* @param {Extension} extension
* The extension for which all settings are being unset.
*/
- async disableAll(extension) {
- let settings = await ExtensionSettingsStore.getAllForExtension(extension, STORE_TYPE);
- let disablePromises = [];
+ disableAll(extension) {
+ let settings = ExtensionSettingsStore.getAllForExtension(extension, STORE_TYPE);
for (let name of settings) {
- disablePromises.push(this.disableSetting(extension, name));
+ this.disableSetting(extension, name);
}
- await Promise.all(disablePromises);
},
/**
* Enables all disabled settings for an extension. This can be called when
* an extension has finsihed updating or is being re-enabled, for example.
*
* @param {Extension} extension
* The extension for which all settings are being enabled.
*/
- async enableAll(extension) {
- let settings = await ExtensionSettingsStore.getAllForExtension(extension, STORE_TYPE);
- let enablePromises = [];
+ enableAll(extension) {
+ let settings = ExtensionSettingsStore.getAllForExtension(extension, STORE_TYPE);
for (let name of settings) {
- enablePromises.push(this.enableSetting(extension, name));
+ this.enableSetting(extension, name);
}
- await Promise.all(enablePromises);
},
/**
* Removes all previously set settings for an extension. This can be called when
* an extension is being uninstalled, for example.
*
* @param {Extension} extension
* The extension for which all settings are being unset.
*/
- async removeAll(extension) {
- let settings = await ExtensionSettingsStore.getAllForExtension(extension, STORE_TYPE);
- let removePromises = [];
+ removeAll(extension) {
+ let settings = ExtensionSettingsStore.getAllForExtension(extension, STORE_TYPE);
for (let name of settings) {
- removePromises.push(this.removeSetting(extension, name));
+ this.removeSetting(extension, name);
}
- await Promise.all(removePromises);
},
/**
* Return the levelOfControl for a setting / extension combo.
* This queries the levelOfControl from the ExtensionSettingsStore and also
* takes into account whether any of the setting's preferences are locked.
*
* @param {Extension} extension
--- a/toolkit/components/extensions/ext-browserSettings.js
+++ b/toolkit/components/extensions/ext-browserSettings.js
@@ -18,17 +18,18 @@ const getSettingsAPI = (extension, name,
value: await callback(),
};
},
set(details) {
return ExtensionPreferencesManager.setSetting(
extension, name, details.value);
},
clear(details) {
- return ExtensionPreferencesManager.removeSetting(extension, name);
+ return Promise.resolve(
+ ExtensionPreferencesManager.removeSetting(extension, name));
},
};
};
// Add settings objects for supported APIs to the preferences manager.
ExtensionPreferencesManager.addSetting("cacheEnabled", {
prefNames: [
"browser.cache.disk.enable",
--- a/toolkit/components/extensions/ext-privacy.js
+++ b/toolkit/components/extensions/ext-privacy.js
@@ -30,18 +30,18 @@ const getPrivacyAPI = (extension, name,
},
set(details) {
checkScope(details.scope);
return ExtensionPreferencesManager.setSetting(
extension, name, details.value);
},
clear(details) {
checkScope(details.scope);
- return ExtensionPreferencesManager.removeSetting(
- extension, name);
+ return Promise.resolve(
+ ExtensionPreferencesManager.removeSetting(extension, name));
},
};
};
// Add settings objects for supported APIs to the preferences manager.
ExtensionPreferencesManager.addSetting("network.networkPredictionEnabled", {
prefNames: [
"network.predictor.enabled",
--- a/toolkit/components/extensions/test/xpcshell/test_ext_extensionPreferencesManager.js
+++ b/toolkit/components/extensions/test/xpcshell/test_ext_extensionPreferencesManager.js
@@ -120,52 +120,52 @@ add_task(async function test_preference_
"getLevelOfControl returns correct levelOfControl when a pref has been set.");
let newValue2 = "newValue2";
prefsChanged = await ExtensionPreferencesManager.setSetting(extensions[0], setting, newValue2);
ok(!prefsChanged, "setSetting returns false when the pref(s) have not been set.");
checkPrefs(settingObj, newValue1,
"setSetting does not set the pref(s) for an earlier extension.");
- prefsChanged = await ExtensionPreferencesManager.disableSetting(extensions[0], setting);
+ prefsChanged = ExtensionPreferencesManager.disableSetting(extensions[0], setting);
ok(!prefsChanged, "disableSetting returns false when the pref(s) have not been set.");
checkPrefs(settingObj, newValue1,
"disableSetting does not change the pref(s) for the non-top extension.");
- prefsChanged = await ExtensionPreferencesManager.enableSetting(extensions[0], setting);
+ prefsChanged = ExtensionPreferencesManager.enableSetting(extensions[0], setting);
ok(!prefsChanged, "enableSetting returns false when the pref(s) have not been set.");
checkPrefs(settingObj, newValue1,
"enableSetting does not change the pref(s) for the non-top extension.");
- prefsChanged = await ExtensionPreferencesManager.removeSetting(extensions[0], setting);
+ prefsChanged = ExtensionPreferencesManager.removeSetting(extensions[0], setting);
ok(!prefsChanged, "removeSetting returns false when the pref(s) have not been set.");
checkPrefs(settingObj, newValue1,
"removeSetting does not change the pref(s) for the non-top extension.");
prefsChanged = await ExtensionPreferencesManager.setSetting(extensions[0], setting, newValue2);
ok(!prefsChanged, "setSetting returns false when the pref(s) have not been set.");
checkPrefs(settingObj, newValue1,
"setSetting does not set the pref(s) for an earlier extension.");
- prefsChanged = await ExtensionPreferencesManager.disableSetting(extensions[1], setting);
+ prefsChanged = ExtensionPreferencesManager.disableSetting(extensions[1], setting);
ok(prefsChanged, "disableSetting returns true when the pref(s) have been set.");
checkPrefs(settingObj, newValue2,
"disableSetting sets the pref(s) to the next value when disabling the top extension.");
- prefsChanged = await ExtensionPreferencesManager.enableSetting(extensions[1], setting);
+ prefsChanged = ExtensionPreferencesManager.enableSetting(extensions[1], setting);
ok(prefsChanged, "enableSetting returns true when the pref(s) have been set.");
checkPrefs(settingObj, newValue1,
"enableSetting sets the pref(s) to the previous value(s).");
- prefsChanged = await ExtensionPreferencesManager.removeSetting(extensions[1], setting);
+ prefsChanged = ExtensionPreferencesManager.removeSetting(extensions[1], setting);
ok(prefsChanged, "removeSetting returns true when the pref(s) have been set.");
checkPrefs(settingObj, newValue2,
"removeSetting sets the pref(s) to the next value when removing the top extension.");
- prefsChanged = await ExtensionPreferencesManager.removeSetting(extensions[0], setting);
+ prefsChanged = ExtensionPreferencesManager.removeSetting(extensions[0], setting);
ok(prefsChanged, "removeSetting returns true when the pref(s) have been set.");
for (let i = 0; i < settingObj.prefNames.length; i++) {
equal(Preferences.get(settingObj.prefNames[i]), settingObj.initalValues[i],
"removeSetting sets the pref(s) to the initial value(s) when removing the last extension.");
}
}
// Tests for unsetAll.
@@ -173,36 +173,36 @@ add_task(async function test_preference_
for (let setting in SETTINGS) {
let settingObj = SETTINGS[setting];
await ExtensionPreferencesManager.setSetting(extensions[0], setting, newValue3);
checkPrefs(settingObj, newValue3, "setSetting set the pref.");
}
let setSettings = await ExtensionSettingsStore.getAllForExtension(extensions[0], STORE_TYPE);
deepEqual(setSettings, Object.keys(SETTINGS), "Expected settings were set for extension.");
- await ExtensionPreferencesManager.disableAll(extensions[0]);
+ ExtensionPreferencesManager.disableAll(extensions[0]);
for (let setting in SETTINGS) {
let settingObj = SETTINGS[setting];
for (let i = 0; i < settingObj.prefNames.length; i++) {
equal(Preferences.get(settingObj.prefNames[i]), settingObj.initalValues[i],
"disableAll unset the pref.");
}
}
setSettings = await ExtensionSettingsStore.getAllForExtension(extensions[0], STORE_TYPE);
deepEqual(setSettings, Object.keys(SETTINGS), "disableAll retains the settings.");
- await ExtensionPreferencesManager.enableAll(extensions[0]);
+ ExtensionPreferencesManager.enableAll(extensions[0]);
for (let setting in SETTINGS) {
let settingObj = SETTINGS[setting];
checkPrefs(settingObj, newValue3, "enableAll re-set the pref.");
}
- await ExtensionPreferencesManager.removeAll(extensions[0]);
+ ExtensionPreferencesManager.removeAll(extensions[0]);
for (let setting in SETTINGS) {
let settingObj = SETTINGS[setting];
for (let i = 0; i < settingObj.prefNames.length; i++) {
equal(Preferences.get(settingObj.prefNames[i]), settingObj.initalValues[i],
"removeAll unset the pref.");
}
}
@@ -230,36 +230,36 @@ add_task(async function test_preference_
`${method} did not change another pref when a pref was manually set.`);
}
}
};
// Manually set the preference to a different value.
Preferences.set(settingObj.prefNames[0], manualValue);
- await ExtensionPreferencesManager.disableAll(extension);
+ ExtensionPreferencesManager.disableAll(extension);
checkResetPrefs("disableAll");
- await ExtensionPreferencesManager.enableAll(extension);
+ ExtensionPreferencesManager.enableAll(extension);
checkResetPrefs("enableAll");
- await ExtensionPreferencesManager.removeAll(extension);
+ ExtensionPreferencesManager.removeAll(extension);
checkResetPrefs("removeAll");
}
// Test with an uninitialized pref.
let setting = "singlePref";
let settingObj = SETTINGS[setting];
let pref = settingObj.prefNames[0];
let newValue = "newValue";
Preferences.reset(pref);
await ExtensionPreferencesManager.setSetting(extensions[1], setting, newValue);
equal(Preferences.get(pref), settingObj.valueFn(pref, newValue),
"Uninitialized pref is set.");
- await ExtensionPreferencesManager.removeSetting(extensions[1], setting);
+ ExtensionPreferencesManager.removeSetting(extensions[1], setting);
ok(!Preferences.has(pref), "removeSetting removed the pref.");
// Test levelOfControl with a locked pref.
setting = "multiple_prefs";
let prefToLock = SETTINGS[setting].prefNames[0];
Preferences.lock(prefToLock, 1);
ok(Preferences.locked(prefToLock), `Preference ${prefToLock} is locked.`);
let levelOfControl = await ExtensionPreferencesManager.getLevelOfControl(extensions[1], setting);
--- a/toolkit/components/extensions/test/xpcshell/xpcshell-common.ini
+++ b/toolkit/components/extensions/test/xpcshell/xpcshell-common.ini
@@ -8,16 +8,17 @@
[test_ext_background_global_history.js]
skip-if = os == "android" # Android does not use Places for history.
[test_ext_background_private_browsing.js]
[test_ext_background_runtime_connect_params.js]
[test_ext_background_sub_windows.js]
[test_ext_background_telemetry.js]
[test_ext_background_window_properties.js]
skip-if = os == "android"
+[test_ext_browserSettings.js]
[test_ext_contextual_identities.js]
skip-if = os == "android" # Containers are not exposed to android.
[test_ext_debugging_utils.js]
[test_ext_downloads.js]
[test_ext_downloads_download.js]
skip-if = os == "android"
[test_ext_downloads_misc.js]
skip-if = os == "android" || (os=='linux' && bits==32) # linux32: bug 1324870