summaryrefslogtreecommitdiffstats
path: root/browser/components/preferences/tests/browser_searchsuggestions.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/preferences/tests/browser_searchsuggestions.js')
-rw-r--r--browser/components/preferences/tests/browser_searchsuggestions.js231
1 files changed, 231 insertions, 0 deletions
diff --git a/browser/components/preferences/tests/browser_searchsuggestions.js b/browser/components/preferences/tests/browser_searchsuggestions.js
new file mode 100644
index 0000000000..6aca310eb2
--- /dev/null
+++ b/browser/components/preferences/tests/browser_searchsuggestions.js
@@ -0,0 +1,231 @@
+const SUGGEST_PREF_NAME = "browser.search.suggest.enabled";
+const URLBAR_SUGGEST_PREF_NAME = "browser.urlbar.suggest.searches";
+const PRIVATE_PREF_NAME = "browser.search.suggest.enabled.private";
+const SEARCHBAR_PREF_NAME = "browser.search.widget.inNavBar";
+
+let initialUrlbarSuggestValue;
+let initialSuggestionsInPrivateValue;
+
+add_setup(async function () {
+ const originalSuggest = Services.prefs.getBoolPref(SUGGEST_PREF_NAME);
+ initialUrlbarSuggestValue = Services.prefs.getBoolPref(
+ URLBAR_SUGGEST_PREF_NAME
+ );
+ initialSuggestionsInPrivateValue =
+ Services.prefs.getBoolPref(PRIVATE_PREF_NAME);
+
+ registerCleanupFunction(() => {
+ Services.prefs.setBoolPref(SUGGEST_PREF_NAME, originalSuggest);
+ Services.prefs.setBoolPref(
+ PRIVATE_PREF_NAME,
+ initialSuggestionsInPrivateValue
+ );
+ });
+});
+
+async function toggleElement(
+ id,
+ prefName,
+ element,
+ initialCheckboxValue,
+ initialPrefValue,
+ descCheckbox,
+ descPref,
+ shouldUpdatePref = false
+) {
+ await BrowserTestUtils.synthesizeMouseAtCenter(
+ `#${id}`,
+ {},
+ gBrowser.selectedBrowser
+ );
+ is(
+ element.checked,
+ !initialCheckboxValue,
+ `Should have flipped the ${descCheckbox} checkbox`
+ );
+ let expectedPrefValue = shouldUpdatePref
+ ? !initialPrefValue
+ : initialPrefValue;
+ let prefValue = Services.prefs.getBoolPref(prefName);
+
+ is(
+ prefValue,
+ expectedPrefValue,
+ `Should ${
+ shouldUpdatePref ? "" : "not"
+ } have updated the ${descPref} preference value`
+ );
+
+ await BrowserTestUtils.synthesizeMouseAtCenter(
+ `#${id}`,
+ {},
+ gBrowser.selectedBrowser
+ );
+ is(
+ element.checked,
+ initialCheckboxValue,
+ `Should have flipped the ${descCheckbox} checkbox back to the original value`
+ );
+ prefValue = Services.prefs.getBoolPref(prefName);
+ expectedPrefValue = shouldUpdatePref ? !expectedPrefValue : initialPrefValue;
+ is(
+ prefValue,
+ expectedPrefValue,
+ `Should ${
+ shouldUpdatePref ? "" : "not"
+ } have updated the ${descPref} preference value`
+ );
+}
+
+// Open with suggestions enabled
+add_task(async function test_suggestions_start_enabled() {
+ Services.prefs.setBoolPref(SUGGEST_PREF_NAME, true);
+ Services.prefs.setBoolPref(SEARCHBAR_PREF_NAME, true);
+
+ await openPreferencesViaOpenPreferencesAPI("search", { leaveOpen: true });
+
+ let doc = gBrowser.selectedBrowser.contentDocument;
+ let urlbarBox = doc.getElementById("urlBarSuggestion");
+ let privateBox = doc.getElementById("showSearchSuggestionsPrivateWindows");
+ ok(!urlbarBox.disabled, "Should have enabled the urlbar checkbox");
+ ok(
+ !privateBox.disabled,
+ "Should have enabled the private mode suggestions checkbox"
+ );
+ is(
+ urlbarBox.checked,
+ initialUrlbarSuggestValue,
+ "Should have the correct value for the urlbar checkbox"
+ );
+ is(
+ privateBox.checked,
+ initialSuggestionsInPrivateValue,
+ "Should have the correct value for the private mode suggestions checkbox"
+ );
+
+ await toggleElement(
+ "urlBarSuggestion",
+ URLBAR_SUGGEST_PREF_NAME,
+ urlbarBox,
+ initialUrlbarSuggestValue,
+ initialUrlbarSuggestValue,
+ "urlbar",
+ "urlbar",
+ true
+ );
+
+ await toggleElement(
+ "showSearchSuggestionsPrivateWindows",
+ PRIVATE_PREF_NAME,
+ privateBox,
+ initialSuggestionsInPrivateValue,
+ initialSuggestionsInPrivateValue,
+ "private suggestion",
+ "private suggestion",
+ true
+ );
+
+ Services.prefs.setBoolPref(SUGGEST_PREF_NAME, false);
+ ok(!urlbarBox.checked, "Should have unchecked the urlbar box");
+ ok(urlbarBox.disabled, "Should have disabled the urlbar box");
+ Services.prefs.setBoolPref(SEARCHBAR_PREF_NAME, false);
+ ok(urlbarBox.hidden, "Should have hidden the urlbar box");
+ ok(!privateBox.checked, "Should have unchecked the private suggestions box");
+ ok(privateBox.disabled, "Should have disabled the private suggestions box");
+
+ gBrowser.removeCurrentTab();
+});
+
+// Open with suggestions disabled
+add_task(async function test_suggestions_start_disabled() {
+ 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, "Should have the urlbar box disabled");
+ let privateBox = doc.getElementById("showSearchSuggestionsPrivateWindows");
+ ok(privateBox.disabled, "Should have the private suggestions box disabled");
+
+ Services.prefs.setBoolPref(SUGGEST_PREF_NAME, true);
+
+ ok(!urlbarBox.disabled, "Should have enabled the urlbar box");
+ ok(!privateBox.disabled, "Should have enabled the private suggestions box");
+
+ gBrowser.removeCurrentTab();
+});
+
+add_task(async function test_sync_search_suggestions_prefs() {
+ info("Adding the search bar to the toolbar");
+ Services.prefs.setBoolPref(SEARCHBAR_PREF_NAME, true);
+ Services.prefs.setBoolPref(SUGGEST_PREF_NAME, true);
+ Services.prefs.setBoolPref(URLBAR_SUGGEST_PREF_NAME, false);
+ await openPreferencesViaOpenPreferencesAPI("search", { leaveOpen: true });
+
+ let doc = gBrowser.selectedBrowser.contentDocument;
+ let suggestionsInSearchFieldsCheckbox = doc.getElementById(
+ "suggestionsInSearchFieldsCheckbox"
+ );
+
+ is(
+ suggestionsInSearchFieldsCheckbox.checked,
+ true,
+ "Should have the correct value for the search suggestions checkbox"
+ );
+
+ is(
+ Services.prefs.getBoolPref(SUGGEST_PREF_NAME),
+ true,
+ `${SUGGEST_PREF_NAME} should be enabled`
+ );
+ is(
+ Services.prefs.getBoolPref(URLBAR_SUGGEST_PREF_NAME),
+ false,
+ `${URLBAR_SUGGEST_PREF_NAME} should be disabled`
+ );
+
+ await toggleElement(
+ "suggestionsInSearchFieldsCheckbox",
+ URLBAR_SUGGEST_PREF_NAME,
+ suggestionsInSearchFieldsCheckbox,
+ suggestionsInSearchFieldsCheckbox.checked,
+ false,
+ "search suggestion",
+ "urlbar suggest"
+ );
+
+ info("Removing the search bar from the toolbar");
+ Services.prefs.setBoolPref(SEARCHBAR_PREF_NAME, false);
+
+ const suggestsPref = [true, false];
+ const urlbarSuggestsPref = [true, false];
+
+ for (let suggestState of suggestsPref) {
+ for (let urlbarSuggestsState of urlbarSuggestsPref) {
+ Services.prefs.setBoolPref(SUGGEST_PREF_NAME, suggestState);
+ Services.prefs.setBoolPref(URLBAR_SUGGEST_PREF_NAME, urlbarSuggestsState);
+
+ if (suggestState && urlbarSuggestsState) {
+ ok(
+ suggestionsInSearchFieldsCheckbox.checked,
+ "Should have checked the suggestions checkbox"
+ );
+ } else {
+ ok(
+ !suggestionsInSearchFieldsCheckbox.checked,
+ "Should have unchecked the suggestions checkbox"
+ );
+ }
+ ok(
+ !suggestionsInSearchFieldsCheckbox.disabled,
+ "Should have the suggestions checkbox enabled"
+ );
+ }
+ }
+
+ gBrowser.removeCurrentTab();
+ Services.prefs.clearUserPref(SEARCHBAR_PREF_NAME);
+ Services.prefs.clearUserPref(URLBAR_SUGGEST_PREF_NAME);
+ Services.prefs.clearUserPref(SUGGEST_PREF_NAME);
+});