Bug 1743709 - Dedupe switchTab by checking if tab is already added to results. r=harry,adw

Differential Revision: https://phabricator.services.mozilla.com/D135175
This commit is contained in:
mcheang
2022-01-10 19:44:23 +00:00
parent 74b2b6c66e
commit cf7cd14b17
4 changed files with 64 additions and 1 deletions

View File

@@ -74,6 +74,7 @@ class MuxerUnifiedComplete extends UrlbarMuxer {
strippedUrlToTopPrefixAndTitle: new Map(),
urlToTabResultType: new Map(),
addedRemoteTabUrls: new Set(),
addedSwitchTabUrls: new Set(),
canShowPrivateSearch: context.results.length > 1,
canShowTailSuggestions: true,
// Form history and remote suggestions added so far. Used for deduping
@@ -186,6 +187,7 @@ class MuxerUnifiedComplete extends UrlbarMuxer {
),
urlToTabResultType: new Map(state.urlToTabResultType),
addedRemoteTabUrls: new Set(state.addedRemoteTabUrls),
addedSwitchTabUrls: new Set(state.addedSwitchTabUrls),
suggestions: new Set(state.suggestions),
});
@@ -805,6 +807,14 @@ class MuxerUnifiedComplete extends UrlbarMuxer {
}
}
// Discard switch-to-tab results that dupes another switch-to-tab result.
if (
result.type == UrlbarUtils.RESULT_TYPE.TAB_SWITCH &&
state.addedSwitchTabUrls.has(result.payload.url)
) {
return false;
}
// Discard history results that dupe either remote or switch-to-tab results.
if (
!result.heuristic &&
@@ -1087,6 +1097,11 @@ class MuxerUnifiedComplete extends UrlbarMuxer {
if (result.type == UrlbarUtils.RESULT_TYPE.REMOTE_TAB) {
state.addedRemoteTabUrls.add(result.payload.url);
}
// Keep track of which switch tabs we've added to dedupe switch tabs.
if (result.type == UrlbarUtils.RESULT_TYPE.TAB_SWITCH) {
state.addedSwitchTabUrls.add(result.payload.url);
}
}
/**

View File

@@ -200,7 +200,7 @@ add_task(async function test_n_autocomplete_results() {
new UrlbarResult(
UrlbarUtils.RESULT_TYPE.TAB_SWITCH,
UrlbarUtils.RESULT_SOURCE.TABS,
{ url: TEST_URL + "/i" }
{ url: TEST_URL + "/" + i }
),
],
false

View File

@@ -0,0 +1,47 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
add_task(async function setup() {
let engine = await addTestSuggestionsEngine();
let oldDefaultEngine = await Services.search.getDefault();
registerCleanupFunction(async () => {
Services.search.setDefault(oldDefaultEngine);
Services.prefs.clearUserPref("browser.urlbar.suggest.searches");
await cleanupPlaces();
});
// Install a test engine.
Services.search.setDefault(engine);
Services.prefs.setBoolPref("browser.urlbar.suggest.searches", false);
});
add_task(async function test_deduplication_for_switch_tab() {
// Set up Places to think the tab is open locally.
let uri = Services.io.newURI("http://example.com/");
await PlacesTestUtils.addVisits({ uri, title: "An Example" });
await addOpenPages(uri, 1);
await UrlbarUtils.addToInputHistory("http://example.com/", "An");
let query = "An";
let context = createContext(query, { isPrivate: false });
await check_results({
context,
matches: [
makeSearchResult(context, {
engineName: SUGGESTIONS_ENGINE_NAME,
heuristic: true,
}),
makeTabSwitchResult(context, {
uri: "http://example.com/",
title: "An Example",
}),
],
});
await removeOpenPages(uri, 1);
await cleanupPlaces();
});

View File

@@ -21,6 +21,7 @@ support-files =
[test_calculator.js]
[test_casing.js]
[test_dedupe_prefix.js]
[test_dedupe_switchTab.js]
[test_download_embed_bookmarks.js]
[test_empty_search.js]
[test_encoded_urls.js]