tor-browser

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

commit 6854b83e2ef14ba08c409f5420b9e94419f9b0db
parent 04cf27582307a9c351e991c740828d54cf786b76
Author: James Teow <jteow@mozilla.com>
Date:   Wed, 10 Dec 2025 17:26:53 +0000

Bug 1880021 - Simplify duplicate SearchEngine detection - r=Standard8

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

Diffstat:
Mtoolkit/components/search/OpenSearchEngine.sys.mjs | 6------
Mtoolkit/components/search/SearchService.sys.mjs | 2+-
Mtoolkit/components/search/tests/xpcshell/test_userEngine.js | 16++++++++++++++++
3 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/toolkit/components/search/OpenSearchEngine.sys.mjs b/toolkit/components/search/OpenSearchEngine.sys.mjs @@ -196,12 +196,6 @@ export class OpenSearchEngine extends SearchEngine { */ #setEngineData(data, originAttributes) { let name = data.name.trim(); - if (Services.search.getEngineByName(name)) { - throw Components.Exception( - "Found a duplicate engine", - Ci.nsISearchService.ERROR_DUPLICATE_ENGINE - ); - } this._name = name; this._queryCharset = data.queryCharset ?? "UTF-8"; diff --git a/toolkit/components/search/SearchService.sys.mjs b/toolkit/components/search/SearchService.sys.mjs @@ -2671,7 +2671,7 @@ export class SearchService { if (!skipDuplicateCheck && this.#getEngineByName(engine.name)) { throw Components.Exception( `#addEngineToStore: An engine called ${engine.name} already exists!`, - Cr.NS_ERROR_FILE_ALREADY_EXISTS + Ci.nsISearchService.ERROR_DUPLICATE_ENGINE ); } diff --git a/toolkit/components/search/tests/xpcshell/test_userEngine.js b/toolkit/components/search/tests/xpcshell/test_userEngine.js @@ -240,3 +240,19 @@ add_task(async function test_changeIcon() { "The icon was re-scaled." ); }); + +add_task(async function test_duplicate_engine_error() { + let engineData = { + name: "Engine Name", + url: "https://example.com/search?q={searchTerms}", + }; + let engine = await Services.search.addUserEngine(engineData); + Assert.ok(engine, "User engine should be added successfully."); + await Assert.rejects( + Services.search.addUserEngine(engineData), + ex => ex.result == Ci.nsISearchService.ERROR_DUPLICATE_ENGINE, + "Adding a user engine with a duplicate name should throw ERROR_DUPLICATE_ENGINE." + ); + + await Services.search.removeEngine(engine); +});