commit 2d40e63c43e81b4cc9d53b3f43c7bc0336e6a695 parent 8007d79861e5039107644c60fad145ed49c98f1f Author: Drew Willcoxon <adw@mozilla.com> Date: Mon, 27 Oct 2025 22:28:20 +0000 Bug 1995574 - Part 3: Other Suggest features: Replace the `browser.urlbar.suggest.quicksuggest.nonsponsored` pref with `browser.urlbar.suggest.quicksuggest.all`. r=daisuke,Standard8,urlbar-reviewers This integrates the new `all` pref with the remaining Suggest features that aren't handled in parts 1 and 2. Depends on D269894 Differential Revision: https://phabricator.services.mozilla.com/D269895 Diffstat:
23 files changed, 195 insertions(+), 176 deletions(-)
diff --git a/browser/components/urlbar/private/AddonSuggestions.sys.mjs b/browser/components/urlbar/private/AddonSuggestions.sys.mjs @@ -31,11 +31,7 @@ const RESULT_MENU_COMMAND = { */ export class AddonSuggestions extends SuggestProvider { get enablingPreferences() { - return [ - "addonsFeatureGate", - "suggest.addons", - "suggest.quicksuggest.nonsponsored", - ]; + return ["addonsFeatureGate", "suggest.addons", "suggest.quicksuggest.all"]; } get primaryUserControlledPreferences() { diff --git a/browser/components/urlbar/private/MDNSuggestions.sys.mjs b/browser/components/urlbar/private/MDNSuggestions.sys.mjs @@ -24,11 +24,7 @@ const RESULT_MENU_COMMAND = { */ export class MDNSuggestions extends SuggestProvider { get enablingPreferences() { - return [ - "mdn.featureGate", - "suggest.mdn", - "suggest.quicksuggest.nonsponsored", - ]; + return ["mdn.featureGate", "suggest.mdn", "suggest.quicksuggest.all"]; } get primaryUserControlledPreferences() { diff --git a/browser/components/urlbar/private/RealtimeSuggestProvider.sys.mjs b/browser/components/urlbar/private/RealtimeSuggestProvider.sys.mjs @@ -135,6 +135,7 @@ export class RealtimeSuggestProvider extends SuggestProvider { get enablingPreferences() { return [ + "suggest.quicksuggest.all", "suggest.realtimeOptIn", "quicksuggest.realtimeOptIn.dismissTypes", "quicksuggest.realtimeOptIn.notNowTimeSeconds", @@ -144,12 +145,11 @@ export class RealtimeSuggestProvider extends SuggestProvider { this.featureGatePref, this.suggestPref, - // We could check `this.isSponsored` here and only include the appropriate - // pref, but for maximum flexibility `this.isSponsored` is only a fallback - // for when individual suggestions do not have an `isSponsored` property. - // Since individual suggestions may be sponsored or not, we include both - // prefs here. - "suggest.quicksuggest.nonsponsored", + // We could include the sponsored pref only if `this.isSponsored` is true, + // but for maximum flexibility `this.isSponsored` is only a fallback for + // when individual suggestions do not have an `isSponsored` property. + // Since individual suggestions may be sponsored or not, we include the + // pref here. "suggest.quicksuggest.sponsored", ]; } @@ -167,10 +167,12 @@ export class RealtimeSuggestProvider extends SuggestProvider { get shouldEnable() { if ( !lazy.UrlbarPrefs.get(this.featureGatePref) || - !lazy.UrlbarPrefs.get("quickSuggestOnlineAvailable") + !lazy.UrlbarPrefs.get("quickSuggestOnlineAvailable") || + !lazy.UrlbarPrefs.get("suggest.quicksuggest.all") ) { - // The feature gate is disabled or online suggestions aren't available. - // Don't show opt-in or online suggestions for this realtime type. + // The feature gate is disabled, online suggestions aren't available, or + // all Suggest suggestions are disabled. Don't show opt-in or online + // suggestions for this realtime type. return false; } @@ -271,12 +273,10 @@ export class RealtimeSuggestProvider extends SuggestProvider { makeResult(queryContext, suggestion, searchString) { // For maximum flexibility individual suggestions can indicate whether they // are sponsored or not, despite `this.isSponsored`, which is a fallback. - let isSponsored = this.isSuggestionSponsored(suggestion); if ( - (isSponsored && - !lazy.UrlbarPrefs.get("suggest.quicksuggest.sponsored")) || - (!isSponsored && - !lazy.UrlbarPrefs.get("suggest.quicksuggest.nonsponsored")) + !lazy.UrlbarPrefs.get("suggest.quicksuggest.all") || + (this.isSuggestionSponsored(suggestion) && + !lazy.UrlbarPrefs.get("suggest.quicksuggest.sponsored")) ) { return null; } diff --git a/browser/components/urlbar/private/WeatherSuggestions.sys.mjs b/browser/components/urlbar/private/WeatherSuggestions.sys.mjs @@ -153,6 +153,7 @@ export class WeatherSuggestions extends SuggestProvider { return [ "weatherFeatureGate", "suggest.weather", + "suggest.quicksuggest.all", "suggest.quicksuggest.sponsored", ]; } diff --git a/browser/components/urlbar/private/YelpSuggestions.sys.mjs b/browser/components/urlbar/private/YelpSuggestions.sys.mjs @@ -39,6 +39,7 @@ export class YelpSuggestions extends SuggestProvider { return [ "yelpFeatureGate", "suggest.yelp", + "suggest.quicksuggest.all", "suggest.quicksuggest.sponsored", ]; } diff --git a/browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_realtime_flight_status_engagement.js b/browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_realtime_flight_status_engagement.js @@ -46,7 +46,7 @@ add_setup(async function () { prefs: [ ["flightStatus.featureGate", true], ["suggest.flightStatus", true], - ["suggest.quicksuggest.nonsponsored", true], + ["suggest.quicksuggest.all", true], ], }); }); diff --git a/browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_realtime_market_engagement.js b/browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_realtime_market_engagement.js @@ -29,7 +29,7 @@ add_setup(async function () { prefs: [ ["market.featureGate", true], ["suggest.market", true], - ["suggest.quicksuggest.nonsponsored", true], + ["suggest.quicksuggest.all", true], ], }); }); diff --git a/browser/components/urlbar/tests/quicksuggest/browser/browser_quicksuggest_realtime_flight_status.js b/browser/components/urlbar/tests/quicksuggest/browser/browser_quicksuggest_realtime_flight_status.js @@ -165,7 +165,7 @@ add_setup(async function () { prefs: [ ["flightStatus.featureGate", true], ["suggest.flightStatus", true], - ["suggest.quicksuggest.nonsponsored", true], + ["suggest.quicksuggest.all", true], ], }); }); diff --git a/browser/components/urlbar/tests/quicksuggest/browser/browser_quicksuggest_realtime_market.js b/browser/components/urlbar/tests/quicksuggest/browser/browser_quicksuggest_realtime_market.js @@ -98,7 +98,7 @@ add_setup(async function () { ["market.featureGate", true], ["suggest.market", true], ["suggest.quickactions", false], - ["suggest.quicksuggest.nonsponsored", true], + ["suggest.quicksuggest.all", true], ], }); }); diff --git a/browser/components/urlbar/tests/quicksuggest/browser/browser_quicksuggest_realtime_yelp.js b/browser/components/urlbar/tests/quicksuggest/browser/browser_quicksuggest_realtime_yelp.js @@ -114,7 +114,7 @@ add_setup(async function () { prefs: [ ["yelpRealtime.featureGate", true], ["suggest.yelpRealtime", true], - ["suggest.quicksuggest.nonsponsored", true], + ["suggest.quicksuggest.all", true], ], }); }); diff --git a/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_addons.js b/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_addons.js @@ -101,7 +101,7 @@ add_setup(async function init() { await QuickSuggestTestUtils.ensureQuickSuggestInit({ remoteSettingsRecords: REMOTE_SETTINGS_RESULTS, merinoSuggestions: MERINO_SUGGESTIONS, - prefs: [["suggest.quicksuggest.nonsponsored", true]], + prefs: [["suggest.quicksuggest.all", true]], }); }); @@ -114,9 +114,16 @@ add_task(async function telemetryType() { }); // When quick suggest prefs are disabled, addon suggestions should be disabled. -add_task(async function quickSuggestPrefsDisabled() { - let prefs = ["quicksuggest.enabled", "suggest.quicksuggest.nonsponsored"]; +add_task(async function prefsDisabled() { + let prefs = [ + "quicksuggest.enabled", + "addons.featureGate", + "suggest.quicksuggest.all", + "suggest.addons", + ]; for (let pref of prefs) { + info("Testing pref: " + pref); + // Before disabling the pref, first make sure the suggestion is added. await check_results({ context: createContext("test", { @@ -147,42 +154,6 @@ add_task(async function quickSuggestPrefsDisabled() { } }); -// When addon suggestions specific preference is disabled, addon suggestions -// should not be added. -add_task(async function addonSuggestionsSpecificPrefDisabled() { - const prefs = ["suggest.addons", "addons.featureGate"]; - for (const pref of prefs) { - // First make sure the suggestion is added. - await check_results({ - context: createContext("test", { - providers: [UrlbarProviderQuickSuggest.name], - isPrivate: false, - }), - matches: [ - makeExpectedResult({ - suggestion: MERINO_SUGGESTIONS[0], - source: "merino", - provider: "amo", - }), - ], - }); - - // Now disable the pref. - UrlbarPrefs.set(pref, false); - await check_results({ - context: createContext("test", { - providers: [UrlbarProviderQuickSuggest.name], - isPrivate: false, - }), - matches: [], - }); - - // Revert. - UrlbarPrefs.clear(pref); - await QuickSuggestTestUtils.forceSync(); - } -}); - // Check wheather the addon suggestions will be shown by the setup of Nimbus // variable. add_task(async function nimbus() { diff --git a/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_exposures.js b/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_exposures.js @@ -113,7 +113,7 @@ add_setup(async function () { "quicksuggest.dynamicSuggestionTypes", "test-exposure-aaa,test-exposure-bbb", ], - ["suggest.quicksuggest.nonsponsored", true], + ["suggest.quicksuggest.all", true], ["quicksuggest.ampTopPickCharThreshold", 0], ], }); @@ -458,11 +458,11 @@ async function doMaxResultsTest({ await QuickSuggestTestUtils.forceSync(); } -// Exposure suggestions are neither sponsored nor nonsponsored, so they should -// be added even when sponsored and nonsponsored are disabled. -add_task(async function sponsoredAndNonsponsoredDisabled() { +// Exposure suggestions should automatically bypass the usual `all` and +// sponsored prefs. +add_task(async function bypassPrefs() { + UrlbarPrefs.set("suggest.quicksuggest.all", false); UrlbarPrefs.set("suggest.quicksuggest.sponsored", false); - UrlbarPrefs.set("suggest.quicksuggest.nonsponsored", false); await withSuggestionTypesPref("test-exposure-aaa", async () => { await doQueries([ @@ -485,8 +485,8 @@ add_task(async function sponsoredAndNonsponsoredDisabled() { ]); }); + UrlbarPrefs.set("suggest.quicksuggest.all", true); UrlbarPrefs.clear("suggest.quicksuggest.sponsored"); - UrlbarPrefs.set("suggest.quicksuggest.nonsponsored", true); await QuickSuggestTestUtils.forceSync(); }); diff --git a/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_exposures_locales.js b/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_exposures_locales.js @@ -227,8 +227,8 @@ async function doLocaleTest({ function assertSuggestPrefs(expectedEnabled) { let prefs = [ "browser.urlbar.quicksuggest.enabled", + "browser.urlbar.suggest.quicksuggest.all", "browser.urlbar.suggest.quicksuggest.sponsored", - "browser.urlbar.suggest.quicksuggest.nonsponsored", ]; for (let p of prefs) { Assert.equal( diff --git a/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_flight_status.js b/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_flight_status.js @@ -46,7 +46,7 @@ add_setup(async function init() { prefs: [ ["flightStatus.featureGate", true], ["suggest.flightStatus", true], - ["suggest.quicksuggest.nonsponsored", true], + ["suggest.quicksuggest.all", true], ], }); }); @@ -61,6 +61,41 @@ add_task(async function telemetry_type() { ); }); +add_task(async function disabledPrefs() { + let prefs = [ + "quicksuggest.enabled", + "suggest.flightStatus", + "suggest.quicksuggest.all", + ]; + + for (let pref of prefs) { + info("Testing pref: " + pref); + + // First make sure the suggestion is added. + await check_results({ + context: createContext("test", { + providers: [UrlbarProviderQuickSuggest.name], + isPrivate: false, + }), + matches: [merinoResult()], + }); + + // Now disable them. + UrlbarPrefs.set(pref, false); + await check_results({ + context: createContext("test", { + providers: [UrlbarProviderQuickSuggest.name], + isPrivate: false, + }), + matches: [], + }); + + // Revert. + UrlbarPrefs.set(pref, true); + await QuickSuggestTestUtils.forceSync(); + } +}); + add_task(async function not_interested_on_realtime() { await doDismissAllTest({ result: merinoResult(), diff --git a/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_importantDatesSuggestions.js b/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_importantDatesSuggestions.js @@ -185,8 +185,8 @@ add_task(async function enablingPrefs() { }); // Important dates are considered "utility" suggestions and not part of the -// Suggest brand, so they should be enabled regardless of the sponsored and -// nonsponsored Suggest prefs. +// Suggest brand, so they should be enabled regardless of the `all` and +// sponsored Suggest prefs. add_task(async function neitherSponsoredNorNonsponsored() { setTime("2025-03-01T00:00"); @@ -199,23 +199,22 @@ add_task(async function neitherSponsoredNorNonsponsored() { }, }); - for (let sponsored of [true, false]) { - for (let nonsponsored of [true, false]) { + for (let all of [true, false]) { + for (let sponsored of [true, false]) { info( - "Doing sponsored/nonsponsored test: " + - JSON.stringify({ sponsored, nonsponsored }) + "Doing all/sponsored pref test: " + JSON.stringify({ all, sponsored }) ); + UrlbarPrefs.set("suggest.quicksuggest.all", all); UrlbarPrefs.set("suggest.quicksuggest.sponsored", sponsored); - UrlbarPrefs.set("suggest.quicksuggest.nonsponsored", nonsponsored); await QuickSuggestTestUtils.forceSync(); await checkDatesResults(query, expected); } } + UrlbarPrefs.clear("suggest.quicksuggest.all"); UrlbarPrefs.clear("suggest.quicksuggest.sponsored"); - UrlbarPrefs.clear("suggest.quicksuggest.nonsponsored"); await QuickSuggestTestUtils.forceSync(); }); @@ -321,8 +320,8 @@ add_task(async function lastDayDuringMultiDay() { // Test whether the date suggestion is before the other // isBestMatch suggestion. add_task(async function testTwoSuggestions() { - // `other_suggestions` is nonsponsored so it depends on the nonsponsored pref. - UrlbarPrefs.set("suggest.quicksuggest.nonsponsored", true); + // `other_suggestions` is nonsponsored so it depends on the `all` pref. + UrlbarPrefs.set("suggest.quicksuggest.all", true); await QuickSuggestTestUtils.forceSync(); setTime("2025-03-01T00:00"); @@ -367,7 +366,7 @@ add_task(async function testTwoSuggestions() { expectedOtherSuggestion, ]); - UrlbarPrefs.clear("suggest.quicksuggest.nonsponsored"); + UrlbarPrefs.clear("suggest.quicksuggest.all"); await QuickSuggestTestUtils.forceSync(); }); diff --git a/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_impressionCaps.js b/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_impressionCaps.js @@ -109,7 +109,7 @@ add_setup(async () => { prefs: [ ["quicksuggest.impressionCaps.sponsoredEnabled", true], ["quicksuggest.impressionCaps.nonSponsoredEnabled", true], - ["suggest.quicksuggest.nonsponsored", true], + ["suggest.quicksuggest.all", true], ["suggest.quicksuggest.sponsored", true], ], }); diff --git a/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_market.js b/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_market.js @@ -50,7 +50,7 @@ add_setup(async function init() { prefs: [ ["market.featureGate", true], ["suggest.market", true], - ["suggest.quicksuggest.nonsponsored", true], + ["suggest.quicksuggest.all", true], ], }); }); @@ -63,6 +63,41 @@ add_task(async function telemetryType() { ); }); +add_task(async function disabledPrefs() { + let prefs = [ + "quicksuggest.enabled", + "suggest.market", + "suggest.quicksuggest.all", + ]; + + for (let pref of prefs) { + info("Testing pref: " + pref); + + // First make sure the suggestion is added. + await check_results({ + context: createContext("test", { + providers: [UrlbarProviderQuickSuggest.name], + isPrivate: false, + }), + matches: [marketResult()], + }); + + // Now disable them. + UrlbarPrefs.set(pref, false); + await check_results({ + context: createContext("test", { + providers: [UrlbarProviderQuickSuggest.name], + isPrivate: false, + }), + matches: [], + }); + + // Revert. + UrlbarPrefs.set(pref, true); + await QuickSuggestTestUtils.forceSync(); + } +}); + // Tests the "Not interested" command: all Market suggestions should be disabled // and not added anymore. add_task(async function notInterested() { diff --git a/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_mdn.js b/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_mdn.js @@ -45,7 +45,7 @@ add_setup(async function init() { await QuickSuggestTestUtils.ensureQuickSuggestInit({ remoteSettingsRecords: REMOTE_SETTINGS_DATA, prefs: [ - ["suggest.quicksuggest.nonsponsored", true], + ["suggest.quicksuggest.all", true], ["suggest.quicksuggest.sponsored", false], ], }); @@ -89,8 +89,9 @@ add_task(async function disableByLocalPref() { const prefs = [ "suggest.mdn", + "mdn.featureGate", "quicksuggest.enabled", - "suggest.quicksuggest.nonsponsored", + "suggest.quicksuggest.all", ]; for (const pref of prefs) { diff --git a/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_topPicks.js b/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_topPicks.js @@ -40,13 +40,12 @@ add_setup(async function init() { await QuickSuggestTestUtils.ensureQuickSuggestInit({ merinoSuggestions: MERINO_SUGGESTIONS, - prefs: [["suggest.quicksuggest.nonsponsored", true]], + prefs: [["suggest.quicksuggest.all", true]], }); }); -// When non-sponsored suggestions are disabled, navigational suggestions should -// be disabled. -add_task(async function nonsponsoredDisabled() { +// When `all` is disabled, navigational suggestions should be disabled. +add_task(async function allDisabled() { // Disable sponsored suggestions. Navigational suggestions are non-sponsored, // so doing this should not prevent them from being enabled. UrlbarPrefs.set("suggest.quicksuggest.sponsored", false); @@ -67,7 +66,7 @@ add_task(async function nonsponsoredDisabled() { }); // Now disable them. - UrlbarPrefs.set("suggest.quicksuggest.nonsponsored", false); + UrlbarPrefs.set("suggest.quicksuggest.all", false); await check_results({ context: createContext(SUGGESTION_SEARCH_STRING, { providers: [UrlbarProviderQuickSuggest.name], @@ -76,7 +75,7 @@ add_task(async function nonsponsoredDisabled() { matches: [], }); - UrlbarPrefs.set("suggest.quicksuggest.nonsponsored", true); + UrlbarPrefs.set("suggest.quicksuggest.all", true); UrlbarPrefs.clear("suggest.quicksuggest.sponsored"); }); diff --git a/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_yelp.js b/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_yelp.js @@ -330,67 +330,19 @@ add_task(async function telemetryType() { ); }); -// When sponsored suggestions are disabled, Yelp suggestions should be -// disabled. -add_task(async function sponsoredDisabled() { - UrlbarPrefs.set("suggest.quicksuggest.nonsponsored", false); - - // First make sure the suggestion is added when non-sponsored - // suggestions are enabled, if the rust is enabled. - await check_results({ - context: createContext("the shop in tokyo", { - providers: [ - UrlbarProviderQuickSuggest.name, - UrlbarProviderSearchSuggestions.name, - ], - isPrivate: false, - }), - matches: [QuickSuggestTestUtils.yelpResult(TOKYO_RESULT)], - }); - - // Now disable the pref. - UrlbarPrefs.set("suggest.quicksuggest.sponsored", false); - Assert.ok( - !QuickSuggest.getFeature("YelpSuggestions").isEnabled, - "Yelp should be disabled" - ); - await check_results({ - context: createContext("the shop in tokyo", { - providers: [ - UrlbarProviderQuickSuggest.name, - UrlbarProviderSearchSuggestions.name, - ], - isPrivate: false, - }), - matches: [], - }); - - UrlbarPrefs.set("suggest.quicksuggest.sponsored", true); - UrlbarPrefs.clear("suggest.quicksuggest.nonsponsored"); - await QuickSuggestTestUtils.forceSync(); - - // Make sure Yelp is enabled again. - Assert.ok( - QuickSuggest.getFeature("YelpSuggestions").isEnabled, - "Yelp should be re-enabled" - ); - await check_results({ - context: createContext("the shop in tokyo", { - providers: [ - UrlbarProviderQuickSuggest.name, - UrlbarProviderSearchSuggestions.name, - ], - isPrivate: false, - }), - matches: [QuickSuggestTestUtils.yelpResult(TOKYO_RESULT)], - }); -}); - -// When Yelp-specific preferences are disabled, suggestions should not be +// When relevant Yelp and Suggest prefs are disabled, suggestions should not be // added. -add_task(async function yelpSpecificPrefsDisabled() { - const prefs = ["suggest.yelp", "yelp.featureGate"]; +add_task(async function prefsDisabled() { + const prefs = [ + "suggest.yelp", + "yelp.featureGate", + "suggest.quicksuggest.all", + "suggest.quicksuggest.sponsored", + "quicksuggest.enabled", + ]; for (const pref of prefs) { + info("Doing test with pref: " + pref); + // First make sure the suggestion is added, if the rust is enabled. await check_results({ context: createContext("the shop in tokyo", { diff --git a/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_yelp_ml.js b/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_yelp_ml.js @@ -54,7 +54,7 @@ add_setup(async function init() { prefs: [ ["browser.ml.enable", true], ["quicksuggest.mlEnabled", true], - ["suggest.quicksuggest.nonsponsored", true], + ["suggest.quicksuggest.all", true], ["suggest.quicksuggest.sponsored", true], ["yelp.mlEnabled", true], ["yelp.serviceResultDistinction", false], @@ -87,28 +87,28 @@ add_task(async function yelpDisabled() { { prefs: { "suggest.quicksuggest.sponsored": true, - "suggest.quicksuggest.nonsponsored": true, + "suggest.quicksuggest.all": true, }, expected: true, }, { prefs: { "suggest.quicksuggest.sponsored": true, - "suggest.quicksuggest.nonsponsored": false, + "suggest.quicksuggest.all": false, }, - expected: true, + expected: false, }, { prefs: { "suggest.quicksuggest.sponsored": false, - "suggest.quicksuggest.nonsponsored": true, + "suggest.quicksuggest.all": true, }, expected: false, }, { prefs: { "suggest.quicksuggest.sponsored": false, - "suggest.quicksuggest.nonsponsored": false, + "suggest.quicksuggest.all": false, }, expected: false, }, diff --git a/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_yelp_realtime.js b/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_yelp_realtime.js @@ -51,6 +51,41 @@ add_task(async function telemetry_type_on_realtime() { ); }); +add_task(async function disabledPrefs() { + let prefs = [ + "quicksuggest.enabled", + "suggest.yelpRealtime", + "suggest.quicksuggest.all", + ]; + + for (let pref of prefs) { + info("Testing pref: " + pref); + + // First make sure the suggestion is added. + await check_results({ + context: createContext("coffee", { + providers: [UrlbarProviderQuickSuggest.name], + isPrivate: false, + }), + matches: [yelpMerinoResult()], + }); + + // Now disable them. + UrlbarPrefs.set(pref, false); + await check_results({ + context: createContext("coffee", { + providers: [UrlbarProviderQuickSuggest.name], + isPrivate: false, + }), + matches: [], + }); + + // Revert. + UrlbarPrefs.set(pref, true); + await QuickSuggestTestUtils.forceSync(); + } +}); + add_task(async function not_interested_on_realtime() { await doDismissAllTest({ result: yelpMerinoResult(), diff --git a/browser/components/urlbar/tests/quicksuggest/unit/test_weather.js b/browser/components/urlbar/tests/quicksuggest/unit/test_weather.js @@ -56,20 +56,18 @@ add_setup(async () => { gWeather = QuickSuggest.getFeature("WeatherSuggestions"); }); -// The feature should be properly enabled according to `weather.featureGate`. -add_task(async function disableAndEnable_featureGate() { - await doBasicDisableAndEnableTest("weather.featureGate"); -}); - -// The feature should be properly enabled according to `suggest.weather`. -add_task(async function disableAndEnable_suggestPref() { - await doBasicDisableAndEnableTest("suggest.weather"); -}); - -// The feature should be properly enabled according to -// `suggest.quicksuggest.sponsored`. -add_task(async function disableAndEnable_sponsoredPref() { - await doBasicDisableAndEnableTest("suggest.quicksuggest.sponsored"); +// The feature should be properly enabled according to relavant prefs. +add_task(async function disableAndEnable() { + let prefs = [ + "weather.featureGate", + "suggest.weather", + "suggest.quicksuggest.all", + "suggest.quicksuggest.sponsored", + ]; + for (let pref of prefs) { + info("Testing pref: " + pref); + await doBasicDisableAndEnableTest(pref); + } }); async function doBasicDisableAndEnableTest(pref) {