Bug 1443229 - Add a 'command' event listener for the urlbar search suggestions checkbox. r?gijs
This was inadvertently removed when the preference attribute was removed to clean up a race condition.
MozReview-Commit-ID: 8yNPMwkGS3u
--- a/browser/components/preferences/in-content/search.js
+++ b/browser/components/preferences/in-content/search.js
@@ -59,16 +59,21 @@ var gSearchPane = {
this._initAutocomplete();
let suggestsPref = Preferences.get("browser.search.suggest.enabled");
let urlbarSuggestsPref = Preferences.get("browser.urlbar.suggest.searches");
let updateSuggestionCheckboxes = this._updateSuggestionCheckboxes.bind(this);
suggestsPref.on("change", updateSuggestionCheckboxes);
urlbarSuggestsPref.on("change", updateSuggestionCheckboxes);
+ let urlbarSuggests = document.getElementById("urlBarSuggestion");
+ urlbarSuggests.addEventListener("command", () => {
+ urlbarSuggestsPref.value = !urlbarSuggests.checked;
+ });
+
this._initShowSearchSuggestionsFirst();
this._updateSuggestionCheckboxes();
},
_initShowSearchSuggestionsFirst() {
this._urlbarSuggestionsPosPref = Preferences.get("browser.urlbar.matchBuckets");
let checkbox =
document.getElementById("showSearchSuggestionsFirstCheckbox");
--- a/browser/components/preferences/in-content/tests/browser_searchsuggestions.js
+++ b/browser/components/preferences/in-content/tests/browser_searchsuggestions.js
@@ -1,43 +1,56 @@
-var original = Services.prefs.getBoolPref("browser.search.suggest.enabled");
+const SUGGEST_PREF_NAME = "browser.search.suggest.enabled";
+const URLBAR_SUGGEST_PREF_NAME = "browser.urlbar.suggest.searches";
+var original = Services.prefs.getBoolPref(SUGGEST_PREF_NAME);
registerCleanupFunction(() => {
- Services.prefs.setBoolPref("browser.search.suggest.enabled", original);
+ Services.prefs.setBoolPref(SUGGEST_PREF_NAME, original);
});
// Open with suggestions enabled
add_task(async function() {
- Services.prefs.setBoolPref("browser.search.suggest.enabled", true);
+ Services.prefs.setBoolPref(SUGGEST_PREF_NAME, true);
+ const INITIAL_URLBAR_SUGGEST_VALUE = Services.prefs.getBoolPref(URLBAR_SUGGEST_PREF_NAME);
await openPreferencesViaOpenPreferencesAPI("search", { leaveOpen: true });
let doc = gBrowser.selectedBrowser.contentDocument;
let urlbarBox = doc.getElementById("urlBarSuggestion");
ok(!urlbarBox.disabled, "Checkbox should be enabled");
+ is(urlbarBox.checked, INITIAL_URLBAR_SUGGEST_VALUE,
+ "Checkbox should match initial pref value: " + INITIAL_URLBAR_SUGGEST_VALUE);
- Services.prefs.setBoolPref("browser.search.suggest.enabled", false);
+ urlbarBox.doCommand();
+ is(urlbarBox.checked, !INITIAL_URLBAR_SUGGEST_VALUE,
+ "Checkbox should be flipped after clicking it");
+ let prefValue = Services.prefs.getBoolPref(URLBAR_SUGGEST_PREF_NAME);
+ is(prefValue, urlbarBox.checked, "Pref should match checkbox. Pref: " + prefValue);
+ urlbarBox.doCommand();
+ is(urlbarBox.checked, INITIAL_URLBAR_SUGGEST_VALUE,
+ "Checkbox should be back to initial value after clicking it");
+ prefValue = Services.prefs.getBoolPref(URLBAR_SUGGEST_PREF_NAME);
+ is(prefValue, urlbarBox.checked, "Pref should match checkbox. Pref: " + prefValue);
+
+ Services.prefs.setBoolPref(SUGGEST_PREF_NAME, false);
+ ok(!urlbarBox.checked, "Checkbox should now be unchecked");
ok(urlbarBox.disabled, "Checkbox should be disabled");
gBrowser.removeCurrentTab();
});
// Open with suggestions disabled
add_task(async function() {
- Services.prefs.setBoolPref("browser.search.suggest.enabled", false);
+ Services.prefs.setBoolPref(SUGGEST_PREF_NAME, false);
await openPreferencesViaOpenPreferencesAPI("search", { leaveOpen: true });
let doc = gBrowser.selectedBrowser.contentDocument;
let urlbarBox = doc.getElementById("urlBarSuggestion");
ok(urlbarBox.disabled, "Checkbox should be disabled");
- Services.prefs.setBoolPref("browser.search.suggest.enabled", true);
+ Services.prefs.setBoolPref(SUGGEST_PREF_NAME, true);
ok(!urlbarBox.disabled, "Checkbox should be enabled");
gBrowser.removeCurrentTab();
});
-
-add_task(async function() {
- Services.prefs.setBoolPref("browser.search.suggest.enabled", original);
-});