diff options
Diffstat (limited to 'browser/components/preferences/tests/browser_trendingsuggestions.js')
-rw-r--r-- | browser/components/preferences/tests/browser_trendingsuggestions.js | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/browser/components/preferences/tests/browser_trendingsuggestions.js b/browser/components/preferences/tests/browser_trendingsuggestions.js new file mode 100644 index 0000000000..1cfae387cf --- /dev/null +++ b/browser/components/preferences/tests/browser_trendingsuggestions.js @@ -0,0 +1,80 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +const { SearchTestUtils } = ChromeUtils.importESModule( + "resource://testing-common/SearchTestUtils.sys.mjs" +); + +const MAIN_PREF = "browser.search.suggest.enabled"; +const URLBAR_PREF = "browser.urlbar.suggest.searches"; +const TRENDING_PREF = "browser.urlbar.trending.featureGate"; + +const TRENDING_CHECKBOX_ID = "showTrendingSuggestions"; +const SUGGESTIONED_CHECKBOX_ID = "suggestionsInSearchFieldsCheckbox"; + +SearchTestUtils.init(this); + +add_setup(async function () { + await SpecialPowers.pushPrefEnv({ + set: [ + [MAIN_PREF, true], + [URLBAR_PREF, true], + [TRENDING_PREF, true], + ], + }); + + await SearchTestUtils.installSearchExtension({ + name: "engine1", + search_url: "https://example.com/engine1", + search_url_get_params: "search={searchTerms}", + }); + const defaultEngine = await Services.search.getDefault(); + + registerCleanupFunction(async () => { + await Services.search.setDefault( + defaultEngine, + Ci.nsISearchService.CHANGE_REASON_UNKNOWN + ); + }); +}); + +add_task(async function testSuggestionsDisabled() { + await openPreferencesViaOpenPreferencesAPI("search", { leaveOpen: true }); + let doc = gBrowser.selectedBrowser.contentDocument; + let trendingCheckbox = doc.getElementById(TRENDING_CHECKBOX_ID); + let suggestionsCheckbox = doc.getElementById(SUGGESTIONED_CHECKBOX_ID); + + Assert.ok(trendingCheckbox.checked, "Checkbox should be visible and checked"); + Assert.ok(!trendingCheckbox.disabled, "Checkbox should not be disabled"); + + // Disable search suggestions. + suggestionsCheckbox.checked = false; + suggestionsCheckbox.doCommand(); + + await BrowserTestUtils.waitForCondition( + () => trendingCheckbox.disabled, + "Trending checkbox should be disabled when search suggestions are disabled" + ); + + // Clean up. + Services.prefs.clearUserPref(MAIN_PREF); + gBrowser.removeCurrentTab(); +}); + +add_task(async function testNonTrendingEngine() { + // Set engine that does not support trending suggestions as default. + const engine1 = Services.search.getEngineByName("engine1"); + Services.search.setDefault( + engine1, + Ci.nsISearchService.CHANGE_REASON_UNKNOWN + ); + await openPreferencesViaOpenPreferencesAPI("search", { leaveOpen: true }); + let doc = gBrowser.selectedBrowser.contentDocument; + let trendingCheckbox = doc.getElementById(TRENDING_CHECKBOX_ID); + + Assert.ok( + trendingCheckbox.disabled, + "Checkbox should be disabled when an engine that doesnt support trending suggestions is default" + ); + gBrowser.removeCurrentTab(); +}); |