tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 58e2f2364a33bd91662856f12dd7a23bed063149
parent 7541f696a88750c102fe7c63ef6f66acc446bb4a
Author: Moritz Beier <mbeier@mozilla.com>
Date:   Fri, 19 Dec 2025 14:46:15 +0000

Bug 1998930 - Don't show contextual search for default search engine. r=urlbar-reviewers,Standard8

Differential Revision: https://phabricator.services.mozilla.com/D271766

Diffstat:
Mbrowser/components/urlbar/ActionsProviderContextualSearch.sys.mjs | 11+++++++++--
Mbrowser/components/urlbar/tests/browser/browser_contextualsearch.js | 62++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Mbrowser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_bounce.js | 10++--------
3 files changed, 71 insertions(+), 12 deletions(-)

diff --git a/browser/components/urlbar/ActionsProviderContextualSearch.sys.mjs b/browser/components/urlbar/ActionsProviderContextualSearch.sys.mjs @@ -123,6 +123,11 @@ class ProviderContextualSearch extends ActionsProvider { return engine; } + // Don't match the default engine for non-query-matches. + let defaultEngine = queryContext.isPrivate + ? Services.search.defaultPrivateEngine + : Services.search.defaultEngine; + let browser = lazy.BrowserWindowTracker.getTopWindow()?.gBrowser.selectedBrowser; if (!browser) { @@ -160,12 +165,12 @@ class ProviderContextualSearch extends ActionsProvider { // Cache the result against this host so we do not need to rerun // the same query every keystroke. this.#hostEngines.set(host, hostEngine); - if (hostEngine) { + if (hostEngine && hostEngine.engine.name != defaultEngine.name) { return hostEngine; } } else if (host) { let cachedEngine = this.#hostEngines.get(host); - if (cachedEngine) { + if (cachedEngine && cachedEngine.engine.name != defaultEngine.name) { return cachedEngine; } } @@ -173,6 +178,8 @@ class ProviderContextualSearch extends ActionsProvider { // Lastly match any openSearch if (browser) { let openSearchEngines = lazy.OpenSearchManager.getEngines(browser); + // We don't need to check if the engine has the same name as the + // default engine because OpenSearchManager already handles that. if (openSearchEngines.length) { return { type: OPEN_SEARCH_ENGINE, engine: openSearchEngines[0] }; } diff --git a/browser/components/urlbar/tests/browser/browser_contextualsearch.js b/browser/components/urlbar/tests/browser/browser_contextualsearch.js @@ -265,14 +265,72 @@ add_task(async function test_tab_to_search_engine() { await SearchTestUtils.updateRemoteSettingsConfig(CONFIG); }); -add_task(async function test_onboarding_default_engine() { +add_task(async function test_dont_suggest_default_engine() { + await UrlbarTestUtils.promiseAutocompleteResultPopup({ + window, + value: "default", + }); + + Assert.ok( + await hasActions(1), + "Default engine is suggested when it matches the query" + ); + + // Load a URI from the host of the default engine. + await loadUri("https://example.com/"); + + await UrlbarTestUtils.promiseAutocompleteResultPopup({ + window, + value: "something", + }); + + Assert.ok( + !(await hasActions(1)), + "Default engine is not suggested based on current host" + ); + + await UrlbarTestUtils.promisePopupClose(window, () => { + EventUtils.synthesizeKey("KEY_Escape"); + }); +}); + +add_task(async function test_dont_suggest_default_engine() { + await UrlbarTestUtils.promiseAutocompleteResultPopup({ + window, + value: "default", + }); + + Assert.ok( + await hasActions(1), + "Default engine is suggested when it matches the query" + ); + + // Load a URI from the host of the default engine. + await loadUri("https://example.com/"); + + await UrlbarTestUtils.promiseAutocompleteResultPopup({ + window, + value: "something", + }); + + Assert.ok( + !(await hasActions(1)), + "Default engine is not suggested based on current host" + ); + + await UrlbarTestUtils.promisePopupClose(window, () => { + EventUtils.synthesizeKey("KEY_Escape"); + }); +}); + +add_task(async function test_onboarding() { await SpecialPowers.pushPrefEnv({ set: [["browser.urlbar.quickactions.timesToShowOnboardingLabel", 3]], }); await UrlbarTestUtils.promiseAutocompleteResultPopup({ window, - value: "default", + value: "non-default", }); Assert.ok( diff --git a/browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_bounce.js b/browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_bounce.js @@ -26,8 +26,6 @@ add_setup(async function () { ], }); - let oldDefaultEngine = await Services.search.getDefault(); - let root = gTestPath; let engineURL = new URL("../../browser/searchSuggestionEngine.xml", root) .href; @@ -41,10 +39,6 @@ add_setup(async function () { Services.prefs.clearUserPref( "browser.urlbar.quickactions.timesShownOnboardingLabel" ); - await Services.search.setDefault( - oldDefaultEngine, - Ci.nsISearchService.CHANGE_REASON_UNKNOWN - ); }); }); @@ -228,8 +222,8 @@ add_task(async function test_other_engagement() { { view_time: "1.2", selected_result: expected.selected_result, - results: "search_engine,action", - n_results: "2", + results: expected.results, + n_results: expected.n_results, interaction: expected.interaction, search_mode: expected.search_mode, search_engine_default_id: expected.search_engine_default_id,