summaryrefslogtreecommitdiffstats
path: root/browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_engagement_selected_result.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_engagement_selected_result.js')
-rw-r--r--browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_engagement_selected_result.js920
1 files changed, 920 insertions, 0 deletions
diff --git a/browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_engagement_selected_result.js b/browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_engagement_selected_result.js
new file mode 100644
index 0000000000..c19c511ccc
--- /dev/null
+++ b/browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_engagement_selected_result.js
@@ -0,0 +1,920 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+// Test for the following data of engagement telemetry.
+// - selected_result
+// - selected_result_subtype
+// - provider
+// - results
+
+// This test has many subtests and can time out in verify mode.
+requestLongerTimeout(5);
+
+Services.scriptloader.loadSubScript(
+ "chrome://mochitests/content/browser/browser/components/urlbar/tests/ext/browser/head.js",
+ this
+);
+
+add_setup(async function () {
+ await setup();
+});
+
+add_task(async function selected_result_autofill_about() {
+ await doTest(async browser => {
+ await openPopup("about:about");
+ await doEnter();
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "autofill_about",
+ selected_result_subtype: "",
+ provider: "Autofill",
+ results: "autofill_about",
+ },
+ ]);
+ });
+});
+
+add_task(async function selected_result_autofill_adaptive() {
+ await SpecialPowers.pushPrefEnv({
+ set: [["browser.urlbar.autoFill.adaptiveHistory.enabled", true]],
+ });
+
+ await doTest(async browser => {
+ await PlacesTestUtils.addVisits("https://example.com/test");
+ await UrlbarUtils.addToInputHistory("https://example.com/test", "exa");
+ await openPopup("exa");
+ await doEnter();
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "autofill_adaptive",
+ selected_result_subtype: "",
+ provider: "Autofill",
+ results: "autofill_adaptive",
+ },
+ ]);
+ });
+
+ await SpecialPowers.popPrefEnv();
+});
+
+add_task(async function selected_result_autofill_origin() {
+ await doTest(async browser => {
+ await PlacesTestUtils.addVisits("https://example.com/test");
+ await openPopup("exa");
+ await doEnter();
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "autofill_origin",
+ selected_result_subtype: "",
+ provider: "Autofill",
+ results: "autofill_origin,history",
+ },
+ ]);
+ });
+});
+
+add_task(async function selected_result_autofill_url() {
+ await doTest(async browser => {
+ await PlacesTestUtils.addVisits("https://example.com/test");
+ await openPopup("https://example.com/test");
+ await doEnter();
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "autofill_url",
+ selected_result_subtype: "",
+ provider: "Autofill",
+ results: "autofill_url",
+ },
+ ]);
+ });
+});
+
+add_task(async function selected_result_bookmark() {
+ await doTest(async browser => {
+ await PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.unfiledGuid,
+ url: "https://example.com/bookmark",
+ title: "bookmark",
+ });
+
+ await openPopup("bookmark");
+ await selectRowByURL("https://example.com/bookmark");
+ await doEnter();
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "bookmark",
+ selected_result_subtype: "",
+ provider: "Places",
+ results: "search_engine,action,bookmark",
+ },
+ ]);
+ });
+});
+
+add_task(async function selected_result_history() {
+ await SpecialPowers.pushPrefEnv({
+ set: [["browser.urlbar.autoFill", false]],
+ });
+
+ await doTest(async browser => {
+ await PlacesTestUtils.addVisits("https://example.com/test");
+
+ await openPopup("example");
+ await selectRowByURL("https://example.com/test");
+ await doEnter();
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "history",
+ selected_result_subtype: "",
+ provider: "Places",
+ results: "search_engine,history",
+ },
+ ]);
+ });
+
+ await SpecialPowers.popPrefEnv();
+});
+
+add_task(async function selected_result_keyword() {
+ await doTest(async browser => {
+ await PlacesUtils.keywords.insert({
+ keyword: "keyword",
+ url: "https://example.com/?q=%s",
+ });
+
+ await openPopup("keyword test");
+ await doEnter();
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "keyword",
+ selected_result_subtype: "",
+ provider: "BookmarkKeywords",
+ results: "keyword",
+ },
+ ]);
+
+ await PlacesUtils.keywords.remove("keyword");
+ });
+});
+
+add_task(async function selected_result_search_engine() {
+ await doTest(async browser => {
+ await openPopup("x");
+ await doEnter();
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "search_engine",
+ selected_result_subtype: "",
+ provider: "HeuristicFallback",
+ results: "search_engine",
+ },
+ ]);
+ });
+});
+
+add_task(async function selected_result_search_suggest() {
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ ["browser.urlbar.suggest.searches", true],
+ ["browser.urlbar.maxHistoricalSearchSuggestions", 2],
+ ],
+ });
+
+ await doTest(async browser => {
+ await openPopup("foo");
+ await selectRowByURL("http://mochi.test:8888/?terms=foofoo");
+ await doEnter();
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "search_suggest",
+ selected_result_subtype: "",
+ provider: "SearchSuggestions",
+ results: "search_engine,search_suggest,search_suggest",
+ },
+ ]);
+ });
+
+ await SpecialPowers.popPrefEnv();
+});
+
+add_task(async function selected_result_search_history() {
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ ["browser.urlbar.suggest.searches", true],
+ ["browser.urlbar.maxHistoricalSearchSuggestions", 2],
+ ],
+ });
+
+ await doTest(async browser => {
+ await UrlbarTestUtils.formHistory.add(["foofoo", "foobar"]);
+
+ await openPopup("foo");
+ await selectRowByURL("http://mochi.test:8888/?terms=foofoo");
+ await doEnter();
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "search_history",
+ selected_result_subtype: "",
+ provider: "SearchSuggestions",
+ results: "search_engine,search_history,search_history",
+ },
+ ]);
+ });
+
+ await SpecialPowers.popPrefEnv();
+});
+
+add_task(async function selected_result_url() {
+ await doTest(async browser => {
+ await openPopup("https://example.com/");
+ await doEnter();
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "url",
+ selected_result_subtype: "",
+ provider: "HeuristicFallback",
+ results: "url",
+ },
+ ]);
+ });
+});
+
+add_task(async function selected_result_action() {
+ await doTest(async browser => {
+ await showResultByArrowDown();
+ await selectRowByProvider("quickactions");
+ const onLoad = BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser);
+ doClickSubButton(".urlbarView-quickaction-row[data-key=addons]");
+ await onLoad;
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "action",
+ selected_result_subtype: "addons",
+ provider: "quickactions",
+ results: "action",
+ },
+ ]);
+ });
+});
+
+add_task(async function selected_result_tab() {
+ const tab = BrowserTestUtils.addTab(gBrowser, "https://example.com/");
+
+ await doTest(async browser => {
+ await openPopup("example");
+ await selectRowByProvider("Places");
+ EventUtils.synthesizeKey("KEY_Enter");
+ await BrowserTestUtils.waitForCondition(() => gBrowser.selectedTab === tab);
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "tab",
+ selected_result_subtype: "",
+ provider: "Places",
+ results: "search_engine,search_suggest,search_suggest,tab",
+ },
+ ]);
+ });
+
+ BrowserTestUtils.removeTab(tab);
+});
+
+add_task(async function selected_result_remote_tab() {
+ const remoteTab = await loadRemoteTab("https://example.com");
+
+ await doTest(async browser => {
+ await openPopup("example");
+ await selectRowByProvider("RemoteTabs");
+ await doEnter();
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "remote_tab",
+ selected_result_subtype: "",
+ provider: "RemoteTabs",
+ results: "search_engine,remote_tab",
+ },
+ ]);
+ });
+
+ await remoteTab.unload();
+});
+
+add_task(async function selected_result_addon() {
+ const addon = loadOmniboxAddon({ keyword: "omni" });
+ await addon.startup();
+
+ await doTest(async browser => {
+ await openPopup("omni test");
+ await doEnter();
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "addon",
+ selected_result_subtype: "",
+ provider: "Omnibox",
+ results: "addon",
+ },
+ ]);
+ });
+
+ await addon.unload();
+});
+
+add_task(async function selected_result_tab_to_search() {
+ await SpecialPowers.pushPrefEnv({
+ set: [["browser.urlbar.tabToSearch.onboard.interactionsLeft", 0]],
+ });
+
+ await SearchTestUtils.installSearchExtension({
+ name: "mozengine",
+ search_url: "https://mozengine/",
+ });
+
+ await doTest(async browser => {
+ for (let i = 0; i < 3; i++) {
+ await PlacesTestUtils.addVisits(["https://mozengine/"]);
+ }
+
+ await openPopup("moze");
+ await selectRowByProvider("TabToSearch");
+ const onComplete = UrlbarTestUtils.promiseSearchComplete(window);
+ EventUtils.synthesizeKey("KEY_Enter");
+ await onComplete;
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "tab_to_search",
+ selected_result_subtype: "",
+ provider: "TabToSearch",
+ results: "search_engine,tab_to_search,history",
+ },
+ ]);
+ });
+
+ await SpecialPowers.popPrefEnv();
+});
+
+add_task(async function selected_result_top_site() {
+ await doTest(async browser => {
+ await addTopSites("https://example.com/");
+ await showResultByArrowDown();
+ await selectRowByURL("https://example.com/");
+ await doEnter();
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "top_site",
+ selected_result_subtype: "",
+ provider: "UrlbarProviderTopSites",
+ results: "top_site,action",
+ },
+ ]);
+ });
+});
+
+add_task(async function selected_result_calc() {
+ await SpecialPowers.pushPrefEnv({
+ set: [["browser.urlbar.suggest.calculator", true]],
+ });
+
+ await doTest(async browser => {
+ await openPopup("8*8");
+ await selectRowByProvider("calculator");
+ await SimpleTest.promiseClipboardChange("64", () => {
+ EventUtils.synthesizeKey("KEY_Enter");
+ });
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "calc",
+ selected_result_subtype: "",
+ provider: "calculator",
+ results: "search_engine,calc",
+ },
+ ]);
+ });
+
+ await SpecialPowers.popPrefEnv();
+});
+
+add_task(async function selected_result_unit() {
+ await SpecialPowers.pushPrefEnv({
+ set: [["browser.urlbar.unitConversion.enabled", true]],
+ });
+
+ await doTest(async browser => {
+ await openPopup("1m to cm");
+ await selectRowByProvider("UnitConversion");
+ await SimpleTest.promiseClipboardChange("100 cm", () => {
+ EventUtils.synthesizeKey("KEY_Enter");
+ });
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "unit",
+ selected_result_subtype: "",
+ provider: "UnitConversion",
+ results: "search_engine,unit",
+ },
+ ]);
+ });
+
+ await SpecialPowers.popPrefEnv();
+});
+
+add_task(async function selected_result_site_specific_contextual_search() {
+ await SpecialPowers.pushPrefEnv({
+ set: [["browser.urlbar.contextualSearch.enabled", true]],
+ });
+
+ await doTest(async browser => {
+ const extension = await SearchTestUtils.installSearchExtension(
+ {
+ name: "Contextual",
+ search_url: "https://example.com/browser",
+ },
+ { skipUnload: true }
+ );
+ const onLoaded = BrowserTestUtils.browserLoaded(
+ gBrowser.selectedBrowser,
+ false,
+ "https://example.com/"
+ );
+ BrowserTestUtils.loadURIString(
+ gBrowser.selectedBrowser,
+ "https://example.com/"
+ );
+ await onLoaded;
+
+ await openPopup("search");
+ await selectRowByProvider("UrlbarProviderContextualSearch");
+ await doEnter();
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "site_specific_contextual_search",
+ selected_result_subtype: "",
+ provider: "UrlbarProviderContextualSearch",
+ results: "search_engine,site_specific_contextual_search",
+ },
+ ]);
+
+ await extension.unload();
+ });
+
+ await SpecialPowers.popPrefEnv();
+});
+
+add_task(async function selected_result_experimental_addon() {
+ const extension = await loadExtension({
+ background: async () => {
+ browser.experiments.urlbar.addDynamicResultType("testDynamicType");
+ browser.experiments.urlbar.addDynamicViewTemplate("testDynamicType", {
+ children: [
+ {
+ name: "text",
+ tag: "span",
+ attributes: {
+ role: "button",
+ },
+ },
+ ],
+ });
+ browser.urlbar.onBehaviorRequested.addListener(query => {
+ return "active";
+ }, "testProvider");
+ browser.urlbar.onResultsRequested.addListener(query => {
+ return [
+ {
+ type: "dynamic",
+ source: "local",
+ payload: {
+ dynamicType: "testDynamicType",
+ },
+ },
+ ];
+ }, "testProvider");
+ browser.experiments.urlbar.onViewUpdateRequested.addListener(payload => {
+ return {
+ text: {
+ textContent: "This is a dynamic result.",
+ },
+ };
+ }, "testProvider");
+ },
+ });
+
+ await TestUtils.waitForCondition(
+ () =>
+ UrlbarProvidersManager.getProvider("testProvider") &&
+ UrlbarResult.getDynamicResultType("testDynamicType"),
+ "Waiting for provider and dynamic type to be registered"
+ );
+
+ await doTest(async browser => {
+ await openPopup("test");
+ EventUtils.synthesizeKey("KEY_ArrowDown");
+ await UrlbarTestUtils.promisePopupClose(window, () =>
+ EventUtils.synthesizeKey("KEY_Enter")
+ );
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "experimental_addon",
+ selected_result_subtype: "",
+ provider: "testProvider",
+ results: "search_engine,experimental_addon",
+ },
+ ]);
+ });
+
+ await extension.unload();
+});
+
+add_task(async function selected_result_adm_sponsored() {
+ const cleanupQuickSuggest = await ensureQuickSuggestInit();
+
+ await doTest(async browser => {
+ await openPopup("sponsored");
+ await selectRowByURL("https://example.com/sponsored");
+ await doEnter();
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "rs_adm_sponsored",
+ selected_result_subtype: "",
+ provider: "UrlbarProviderQuickSuggest",
+ results: "search_engine,rs_adm_sponsored",
+ },
+ ]);
+ });
+
+ cleanupQuickSuggest();
+});
+
+add_task(async function selected_result_adm_nonsponsored() {
+ const cleanupQuickSuggest = await ensureQuickSuggestInit();
+
+ await doTest(async browser => {
+ await openPopup("nonsponsored");
+ await selectRowByURL("https://example.com/nonsponsored");
+ await doEnter();
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "rs_adm_nonsponsored",
+ selected_result_subtype: "",
+ provider: "UrlbarProviderQuickSuggest",
+ results: "search_engine,rs_adm_nonsponsored",
+ },
+ ]);
+ });
+
+ cleanupQuickSuggest();
+});
+
+add_task(async function selected_result_input_field() {
+ const expected = [
+ {
+ selected_result: "input_field",
+ selected_result_subtype: "",
+ provider: null,
+ results: "",
+ },
+ ];
+
+ await doTest(async browser => {
+ await doDropAndGo("example.com");
+
+ assertEngagementTelemetry(expected);
+ });
+
+ await doTest(async browser => {
+ await doPasteAndGo("example.com");
+
+ assertEngagementTelemetry(expected);
+ });
+});
+
+add_task(async function selected_result_weather() {
+ await SpecialPowers.pushPrefEnv({
+ set: [["browser.urlbar.quickactions.enabled", false]],
+ });
+
+ const cleanupQuickSuggest = await ensureQuickSuggestInit();
+ await MerinoTestUtils.initWeather();
+
+ await doTest(async browser => {
+ await openPopup(MerinoTestUtils.WEATHER_KEYWORD);
+ await selectRowByProvider("Weather");
+ await doEnter();
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "weather",
+ selected_result_subtype: "",
+ provider: "Weather",
+ results: "search_engine,weather",
+ },
+ ]);
+ });
+
+ cleanupQuickSuggest();
+ await SpecialPowers.popPrefEnv();
+});
+
+add_task(async function selected_result_navigational() {
+ const cleanupQuickSuggest = await ensureQuickSuggestInit({
+ merinoSuggestions: [
+ {
+ title: "Navigational suggestion",
+ url: "https://example.com/navigational-suggestion",
+ provider: "top_picks",
+ is_sponsored: false,
+ score: 0.25,
+ block_id: 0,
+ is_top_pick: true,
+ },
+ ],
+ });
+
+ await doTest(async browser => {
+ await openPopup("only match the Merino suggestion");
+ await selectRowByProvider("UrlbarProviderQuickSuggest");
+ await doEnter();
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "merino_top_picks",
+ selected_result_subtype: "",
+ provider: "UrlbarProviderQuickSuggest",
+ results: "search_engine,merino_top_picks",
+ },
+ ]);
+ });
+
+ cleanupQuickSuggest();
+});
+
+add_task(async function selected_result_dynamic_wikipedia() {
+ const cleanupQuickSuggest = await ensureQuickSuggestInit({
+ merinoSuggestions: [
+ {
+ block_id: 1,
+ url: "https://example.com/dynamic-wikipedia",
+ title: "Dynamic Wikipedia suggestion",
+ click_url: "https://example.com/click",
+ impression_url: "https://example.com/impression",
+ advertiser: "dynamic-wikipedia",
+ provider: "wikipedia",
+ iab_category: "5 - Education",
+ },
+ ],
+ });
+
+ await doTest(async browser => {
+ await openPopup("only match the Merino suggestion");
+ await selectRowByProvider("UrlbarProviderQuickSuggest");
+ await doEnter();
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "merino_wikipedia",
+ selected_result_subtype: "",
+ provider: "UrlbarProviderQuickSuggest",
+ results: "search_engine,merino_wikipedia",
+ },
+ ]);
+ });
+
+ cleanupQuickSuggest();
+});
+
+add_task(async function selected_result_search_shortcut_button() {
+ await doTest(async browser => {
+ const oneOffSearchButtons = UrlbarTestUtils.getOneOffSearchButtons(window);
+ await openPopup("x");
+ Assert.ok(!oneOffSearchButtons.selectedButton);
+
+ // Select oneoff button added for test in setup().
+ for (;;) {
+ EventUtils.synthesizeKey("KEY_ArrowDown");
+ if (!oneOffSearchButtons.selectedButton) {
+ continue;
+ }
+
+ if (
+ oneOffSearchButtons.selectedButton.engine.name.includes(
+ "searchSuggestionEngine.xml"
+ )
+ ) {
+ break;
+ }
+ }
+
+ // Search immediately.
+ await doEnter({ shiftKey: true });
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "search_shortcut_button",
+ selected_result_subtype: "",
+ provider: null,
+ results: "search_engine",
+ },
+ ]);
+ });
+});
+
+add_task(async function selected_result_trending() {
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ ["browser.urlbar.suggest.searches", true],
+ ["browser.urlbar.trending.featureGate", true],
+ ["browser.urlbar.trending.requireSearchMode", false],
+ ["browser.urlbar.trending.maxResultsNoSearchMode", 1],
+ ["browser.urlbar.weather.featureGate", false],
+ ],
+ });
+
+ let defaultEngine = await Services.search.getDefault();
+ let extension = await SearchTestUtils.installSearchExtension(
+ {
+ name: "mozengine",
+ search_url: "https://example.org/",
+ },
+ { setAsDefault: true, skipUnload: true }
+ );
+
+ SearchTestUtils.useMockIdleService();
+ await SearchTestUtils.updateRemoteSettingsConfig([
+ {
+ webExtension: { id: "mozengine@tests.mozilla.org" },
+ urls: {
+ trending: {
+ fullPath:
+ "https://example.com/browser/browser/components/search/test/browser/trendingSuggestionEngine.sjs",
+ query: "",
+ },
+ },
+ appliesTo: [{ included: { everywhere: true } }],
+ default: "yes",
+ },
+ ]);
+
+ await doTest(async browser => {
+ await openPopup("");
+ await selectRowByProvider("SearchSuggestions");
+ await doEnter();
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "trending_search",
+ selected_result_subtype: "",
+ provider: "SearchSuggestions",
+ results: "trending_search",
+ },
+ ]);
+ });
+
+ await extension.unload();
+ await Services.search.setDefault(
+ defaultEngine,
+ Ci.nsISearchService.CHANGE_REASON_UNKNOWN
+ );
+ let settingsWritten = SearchTestUtils.promiseSearchNotification(
+ "write-settings-to-disk-complete"
+ );
+ await SearchTestUtils.updateRemoteSettingsConfig();
+ await settingsWritten;
+ await PlacesUtils.history.clear();
+ await SpecialPowers.popPrefEnv();
+});
+
+add_task(async function selected_result_trending_rich() {
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ ["browser.urlbar.richSuggestions.featureGate", true],
+ ["browser.urlbar.suggest.searches", true],
+ ["browser.urlbar.trending.featureGate", true],
+ ["browser.urlbar.trending.requireSearchMode", false],
+ ["browser.urlbar.trending.maxResultsNoSearchMode", 1],
+ ["browser.urlbar.weather.featureGate", false],
+ ],
+ });
+
+ let defaultEngine = await Services.search.getDefault();
+ let extension = await SearchTestUtils.installSearchExtension(
+ {
+ name: "mozengine",
+ search_url: "https://example.org/",
+ },
+ { setAsDefault: true, skipUnload: true }
+ );
+
+ SearchTestUtils.useMockIdleService();
+ await SearchTestUtils.updateRemoteSettingsConfig([
+ {
+ webExtension: { id: "mozengine@tests.mozilla.org" },
+ urls: {
+ trending: {
+ fullPath:
+ "https://example.com/browser/browser/components/search/test/browser/trendingSuggestionEngine.sjs?richsuggestions=true",
+ query: "",
+ },
+ },
+ appliesTo: [{ included: { everywhere: true } }],
+ default: "yes",
+ },
+ ]);
+
+ await doTest(async browser => {
+ await openPopup("");
+ await selectRowByProvider("SearchSuggestions");
+ await doEnter();
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "trending_search_rich",
+ selected_result_subtype: "",
+ provider: "SearchSuggestions",
+ results: "trending_search_rich",
+ },
+ ]);
+ });
+
+ await extension.unload();
+ await Services.search.setDefault(
+ defaultEngine,
+ Ci.nsISearchService.CHANGE_REASON_UNKNOWN
+ );
+ let settingsWritten = SearchTestUtils.promiseSearchNotification(
+ "write-settings-to-disk-complete"
+ );
+ await SearchTestUtils.updateRemoteSettingsConfig();
+ await settingsWritten;
+ await PlacesUtils.history.clear();
+ await SpecialPowers.popPrefEnv();
+});
+
+add_task(async function selected_result_addons() {
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ ["browser.urlbar.addons.featureGate", true],
+ ["browser.urlbar.suggest.searches", false],
+ ],
+ });
+
+ const cleanupQuickSuggest = await ensureQuickSuggestInit({
+ merinoSuggestions: [
+ {
+ provider: "amo",
+ icon: "https://example.com/good-addon.svg",
+ url: "https://example.com/good-addon",
+ title: "Good Addon",
+ description: "This is a good addon",
+ custom_details: {
+ amo: {
+ rating: "4.8",
+ number_of_ratings: "1234567",
+ guid: "good@addon",
+ },
+ },
+ is_top_pick: true,
+ },
+ ],
+ });
+
+ await doTest(async browser => {
+ await openPopup("only match the Merino suggestion");
+ await selectRowByProvider("UrlbarProviderQuickSuggest");
+ await doEnter();
+
+ assertEngagementTelemetry([
+ {
+ selected_result: "merino_amo",
+ selected_result_subtype: "",
+ provider: "UrlbarProviderQuickSuggest",
+ results: "search_engine,merino_amo",
+ },
+ ]);
+ });
+
+ cleanupQuickSuggest();
+ await SpecialPowers.popPrefEnv();
+});