tor-browser

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

commit 6c6b0579a99701df58aa0d415327ecaedee46628
parent e944aead54319f0718b27a3cb2bc7207b95135dc
Author: Dão Gottwald <dao@mozilla.com>
Date:   Thu,  2 Oct 2025 09:37:45 +0000

Bug 1990543 - Tab to search and contextual search actions should be available in the search bar re-implementation. r=daleharvey

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

Diffstat:
Mbrowser/components/urlbar/ActionsProviderQuickActions.sys.mjs | 3++-
Mbrowser/components/urlbar/ActionsProviderTabGroups.sys.mjs | 3++-
Mbrowser/components/urlbar/UrlbarProviderGlobalActions.sys.mjs | 15++++++++++-----
Mbrowser/components/urlbar/UrlbarProviderInterventions.sys.mjs | 5+++--
Mbrowser/components/urlbar/UrlbarProviderTabToSearch.sys.mjs | 7++++---
Mbrowser/components/urlbar/UrlbarProvidersManager.sys.mjs | 4++--
Mbrowser/components/urlbar/tests/unit/test_quickactions.js | 9+++++++--
7 files changed, 30 insertions(+), 16 deletions(-)

diff --git a/browser/components/urlbar/ActionsProviderQuickActions.sys.mjs b/browser/components/urlbar/ActionsProviderQuickActions.sys.mjs @@ -43,8 +43,9 @@ class ProviderQuickActions extends ActionsProvider { return "ActionsProviderQuickActions"; } - isActive(queryContext) { + isActive(queryContext, controller) { return ( + controller?.input.isAddressbar && lazy.UrlbarPrefs.get(ENABLED_PREF) && !queryContext.searchMode && queryContext.trimmedSearchString.length < 50 && diff --git a/browser/components/urlbar/ActionsProviderTabGroups.sys.mjs b/browser/components/urlbar/ActionsProviderTabGroups.sys.mjs @@ -26,8 +26,9 @@ class ProviderTabGroups extends ActionsProvider { return "ActionsProviderTabGroups"; } - isActive(queryContext) { + isActive(queryContext, controller) { return ( + controller?.input.isAddressbar && Services.prefs.getBoolPref("browser.tabs.groups.enabled") && (!queryContext.restrictSource || queryContext.restrictSource == lazy.UrlbarUtils.RESULT_SOURCE.TABS) && diff --git a/browser/components/urlbar/UrlbarProviderGlobalActions.sys.mjs b/browser/components/urlbar/UrlbarProviderGlobalActions.sys.mjs @@ -57,12 +57,16 @@ export class UrlbarProviderGlobalActions extends UrlbarProvider { return UrlbarUtils.PROVIDER_TYPE.PROFILE; } - async isActive() { - return ( + #controller; + async isActive(_queryContext, controller) { + let isActive = (lazy.UrlbarPrefs.get(SCOTCH_BONNET_PREF) || lazy.UrlbarPrefs.get(ACTIONS_PREF)) && - lazy.UrlbarPrefs.get(QUICK_ACTIONS_PREF) - ); + lazy.UrlbarPrefs.get(QUICK_ACTIONS_PREF); + if (isActive && controller) { + this.#controller = controller; + } + return isActive; } async startQuery(queryContext, addCallback) { @@ -70,7 +74,7 @@ export class UrlbarProviderGlobalActions extends UrlbarProvider { let searchModeEngine = ""; for (let provider of globalActionsProviders) { - if (provider.isActive(queryContext)) { + if (provider.isActive(queryContext, this.#controller)) { for (let action of (await provider.queryActions(queryContext)) || []) { if (action.engine && !searchModeEngine) { searchModeEngine = action.engine; @@ -83,6 +87,7 @@ export class UrlbarProviderGlobalActions extends UrlbarProvider { } } } + this.#controller = null; if (!actionsResults.length) { return; diff --git a/browser/components/urlbar/UrlbarProviderInterventions.sys.mjs b/browser/components/urlbar/UrlbarProviderInterventions.sys.mjs @@ -481,8 +481,9 @@ export class UrlbarProviderInterventions extends UrlbarProvider { * with this provider, to save on resources. * * @param {UrlbarQueryContext} queryContext The query context object + * @param {UrlbarController} controller The current controller. */ - async isActive(queryContext) { + async isActive(queryContext, controller) { if ( !queryContext.searchString || queryContext.searchString.length > UrlbarUtils.MAX_TEXT_LENGTH || @@ -493,7 +494,7 @@ export class UrlbarProviderInterventions extends UrlbarProvider { !Services.policies.isAllowed("urlbarinterventions") || (await this.queryInstance .getProvider(lazy.UrlbarProviderGlobalActions.name) - ?.isActive()) + ?.isActive(queryContext, controller)) ) { return false; } diff --git a/browser/components/urlbar/UrlbarProviderTabToSearch.sys.mjs b/browser/components/urlbar/UrlbarProviderTabToSearch.sys.mjs @@ -123,8 +123,9 @@ export class UrlbarProviderTabToSearch extends UrlbarProvider { * with this provider, to save on resources. * * @param {UrlbarQueryContext} queryContext The query context object + * @param {UrlbarController} controller The current controller. */ - async isActive(queryContext) { + async isActive(queryContext, controller) { return ( queryContext.searchString && queryContext.tokens.length == 1 && @@ -133,8 +134,8 @@ export class UrlbarProviderTabToSearch extends UrlbarProvider { !( (await this.queryInstance .getProvider(lazy.UrlbarProviderGlobalActions.name) - ?.isActive()) && - lazy.ActionsProviderContextualSearch.isActive(queryContext) + ?.isActive(queryContext, controller)) && + lazy.ActionsProviderContextualSearch.isActive(queryContext, controller) ) ); } diff --git a/browser/components/urlbar/UrlbarProvidersManager.sys.mjs b/browser/components/urlbar/UrlbarProvidersManager.sys.mjs @@ -52,7 +52,7 @@ var localProviderModules = [ name: "UrlbarProviderGlobalActions", module: "moz-src:///browser/components/urlbar/UrlbarProviderGlobalActions.sys.mjs", - supportedInputTypes: ["urlbar"], + supportedInputTypes: ["urlbar", "searchbar"], }, { name: "UrlbarProviderAliasEngines", @@ -183,7 +183,7 @@ var localProviderModules = [ name: "UrlbarProviderTabToSearch", module: "moz-src:///browser/components/urlbar/UrlbarProviderTabToSearch.sys.mjs", - supportedInputTypes: ["urlbar"], + supportedInputTypes: ["urlbar", "searchbar"], }, { name: "UrlbarProviderTokenAliasEngines", diff --git a/browser/components/urlbar/tests/unit/test_quickactions.js b/browser/components/urlbar/tests/unit/test_quickactions.js @@ -90,8 +90,12 @@ add_task(async function minimum_search_string() { UrlbarPrefs.set("quickactions.minimumSearchString", minimumSearchString); for (let i = 1; i < 4; i++) { let context = createContext(searchString.substring(0, i), {}); + let controller = UrlbarTestUtils.newMockController(); let result = await ActionsProviderQuickActions.queryActions(context); - let isActive = await ActionsProviderQuickActions.isActive(context); + let isActive = await ActionsProviderQuickActions.isActive( + context, + controller + ); if (i >= minimumSearchString) { Assert.equal(result[0].key, "newaction", "Matched the new action"); @@ -113,9 +117,10 @@ add_task(async function interventions_disabled() { getProvider: name => UrlbarProvidersManager.getProvider(name), }; let context = createContext("test", { isPrivate: false }); + let controller = UrlbarTestUtils.newMockController(); Assert.ok( - !(await interventionsProvider.isActive(context)), + !(await interventionsProvider.isActive(context, controller)), "Urlbar interventions are disabled when actions are enabled" ); interventionsProvider.queryInstance = null;