diff --git a/browser/components/urlbar/UrlbarMuxerUnifiedComplete.jsm b/browser/components/urlbar/UrlbarMuxerUnifiedComplete.jsm index 560c5b4b955b..2f46cd59fea5 100644 --- a/browser/components/urlbar/UrlbarMuxerUnifiedComplete.jsm +++ b/browser/components/urlbar/UrlbarMuxerUnifiedComplete.jsm @@ -53,7 +53,8 @@ class MuxerUnifiedComplete extends UrlbarMuxer { */ sort(context) { // A Search in a Private Window result should only be shown when there are - // other results, and all of them are searches. + // other results, and all of them are searches. It should also not be shown + // if the user typed an alias, because it's an explicit search engine choice. let searchInPrivateWindowIndex = context.results.findIndex( r => r.type == UrlbarUtils.RESULT_TYPE.SEARCH && r.payload.inPrivateWindow ); @@ -62,7 +63,9 @@ class MuxerUnifiedComplete extends UrlbarMuxer { (context.results.length == 1 || context.results.some( r => - r.type != UrlbarUtils.RESULT_TYPE.SEARCH || r.payload.keywordOffer + r.type != UrlbarUtils.RESULT_TYPE.SEARCH || + r.payload.keywordOffer || + (r.heuristic && r.payload.keyword) )) ) { // Remove the result. diff --git a/browser/components/urlbar/tests/browser/browser_urlbar_separatePrivateDefault.js b/browser/components/urlbar/tests/browser/browser_urlbar_separatePrivateDefault.js index 0f98d625e88b..4dd20a5c5bb3 100644 --- a/browser/components/urlbar/tests/browser/browser_urlbar_separatePrivateDefault.js +++ b/browser/components/urlbar/tests/browser/browser_urlbar_separatePrivateDefault.js @@ -45,9 +45,17 @@ add_task(async function setup() { ); await Services.search.moveEngine(engine2, 0); + // Add an engine with an alias. + let aliasEngine = await Services.search.addEngineWithDetails("MozSearch", { + alias: "alias", + method: "GET", + template: "http://example.com/?q={searchTerms}", + }); + registerCleanupFunction(async () => { await Services.search.setDefault(oldDefaultEngine); await Services.search.setDefaultPrivate(oldDefaultPrivateEngine); + await Services.search.removeEngine(aliasEngine); await PlacesUtils.history.clear(); }); }); @@ -347,3 +355,22 @@ add_task(async function test_oneoff_selected_with_private_engine_keyboard() { await BrowserTestUtils.closeWindow(win); }); }); + +add_task(async function test_alias() { + info( + "Test that 'Search in a Private Window' doesn's appear if an alias is typed" + ); + await UrlbarTestUtils.promiseAutocompleteResultPopup({ + window, + waitForFocus, + value: "alias", + }); + await AssertNoPrivateResult(window); + + await UrlbarTestUtils.promiseAutocompleteResultPopup({ + window, + waitForFocus, + value: "alias something", + }); + await AssertNoPrivateResult(window); +});