tor-browser

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

commit 44b5254ceb13ce1effd19a8f2ce9bd4697db4ca2
parent b54fa3b1aff0778c28aa7da673b4370d09cb00c2
Author: Moritz Beier <mbeier@mozilla.com>
Date:   Tue, 16 Dec 2025 09:47:03 +0000

Bug 2004788 - Disable url canonization in new searchbar. r=dao,urlbar-reviewers

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

Diffstat:
Mbrowser/components/urlbar/content/UrlbarInput.mjs | 1+
Mbrowser/components/urlbar/tests/browser/searchbar/browser.toml | 2++
Abrowser/components/urlbar/tests/browser/searchbar/browser_search.js | 41+++++++++++++++++++++++++++++++++++++++++
3 files changed, 44 insertions(+), 0 deletions(-)

diff --git a/browser/components/urlbar/content/UrlbarInput.mjs b/browser/components/urlbar/content/UrlbarInput.mjs @@ -3541,6 +3541,7 @@ export class UrlbarInput extends HTMLElement { // Only add the suffix when the URL bar value isn't already "URL-like", // and only if we get a keyboard event, to match user expectations. if ( + this.sapName == "searchbar" || !this.#isCanonizeKeyboardEvent(event) || !/^\s*[^.:\/\s]+(?:\/.*|\s*)$/i.test(value) ) { diff --git a/browser/components/urlbar/tests/browser/searchbar/browser.toml b/browser/components/urlbar/tests/browser/searchbar/browser.toml @@ -9,4 +9,6 @@ prefs = [ ["browser_new_searchbar_init.js"] +["browser_search.js"] + ["browser_searchmode.js"] diff --git a/browser/components/urlbar/tests/browser/searchbar/browser_search.js b/browser/components/urlbar/tests/browser/searchbar/browser_search.js @@ -0,0 +1,41 @@ +/* Any copyright is dedicated to the Public Domain. + https://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +const CANONIZE_MODIFIERS = + AppConstants.platform == "macosx" ? { metaKey: true } : { ctrlKey: true }; + +let searchbar = document.getElementById("searchbar-new"); +let defaultEngine; + +add_setup(async function () { + await SearchTestUtils.updateRemoteSettingsConfig([{ identifier: "engine" }]); + defaultEngine = Services.search.defaultEngine; +}); + +add_task(async function test_simple() { + let searchTerm = "test"; + searchbar.focus(); + EventUtils.sendString(searchTerm); + EventUtils.synthesizeKey("KEY_Enter"); + await BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser); + + let expectedUrl = defaultEngine.getSubmission(searchTerm).uri.spec; + Assert.equal(gBrowser.currentURI.spec, expectedUrl, "Search successful"); + Assert.equal(searchbar.value, searchTerm, "Search term was persisted"); + searchbar.value = ""; +}); + +add_task(async function test_no_canonization() { + let searchTerm = "test2"; + searchbar.focus(); + EventUtils.sendString(searchTerm); + EventUtils.synthesizeKey("KEY_Enter", CANONIZE_MODIFIERS); + await BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser); + + let expectedUrl = defaultEngine.getSubmission(searchTerm).uri.spec; + Assert.equal(gBrowser.currentURI.spec, expectedUrl, "Search successful"); + Assert.equal(searchbar.value, searchTerm, "Search term was persisted"); + searchbar.value = ""; +});