From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../browser_browserGlue_upgradeDialog_trigger.js | 204 +++++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100644 browser/components/tests/browser/browser_browserGlue_upgradeDialog_trigger.js (limited to 'browser/components/tests/browser/browser_browserGlue_upgradeDialog_trigger.js') diff --git a/browser/components/tests/browser/browser_browserGlue_upgradeDialog_trigger.js b/browser/components/tests/browser/browser_browserGlue_upgradeDialog_trigger.js new file mode 100644 index 0000000000..c0e1aadb8b --- /dev/null +++ b/browser/components/tests/browser/browser_browserGlue_upgradeDialog_trigger.js @@ -0,0 +1,204 @@ +/* Any copyright is dedicated to the Public Domain. +http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +const { ExperimentFakes } = ChromeUtils.importESModule( + "resource://testing-common/NimbusTestUtils.sys.mjs" +); +const { ExperimentAPI } = ChromeUtils.importESModule( + "resource://nimbus/ExperimentAPI.sys.mjs" +); +const { OnboardingMessageProvider } = ChromeUtils.import( + "resource://activity-stream/lib/OnboardingMessageProvider.jsm" +); + +XPCOMUtils.defineLazyServiceGetters(this, { + BrowserHandler: ["@mozilla.org/browser/clh;1", "nsIBrowserHandler"], +}); + +add_setup(() => { + Services.telemetry.clearEvents(); +}); + +async function forceMajorUpgrade() { + await SpecialPowers.pushPrefEnv({ + set: [["browser.startup.homepage_override.mstone", "88.0"]], + }); + + void BrowserHandler.defaultArgs; + + return async () => { + await SpecialPowers.popPrefEnv(); + BrowserHandler.majorUpgrade = false; + Services.prefs.clearUserPref("browser.startup.upgradeDialog.version"); + }; +} + +add_task(async function not_major_upgrade() { + await BROWSER_GLUE._maybeShowDefaultBrowserPrompt(); + + AssertEvents("Not major upgrade for upgrade dialog requirements", [ + "trigger", + "reason", + "not-major", + ]); +}); + +add_task(async function remote_disabled() { + await ExperimentAPI.ready(); + let doCleanup = await ExperimentFakes.enrollWithRollout({ + featureId: NimbusFeatures.upgradeDialog.featureId, + value: { + enabled: false, + }, + }); + + // Simulate starting from a previous version. + let cleanupUpgrade = await forceMajorUpgrade(); + + await BROWSER_GLUE._maybeShowDefaultBrowserPrompt(); + + AssertEvents("Feature disabled for upgrade dialog requirements", [ + "trigger", + "reason", + "disabled", + ]); + + await doCleanup(); + await cleanupUpgrade(); +}); + +add_task(async function enterprise_disabled() { + const defaultPrefs = Services.prefs.getDefaultBranch(""); + const pref = "browser.aboutwelcome.enabled"; + const orig = defaultPrefs.getBoolPref(pref, true); + defaultPrefs.setBoolPref(pref, false); + + let cleanupUpgrade = await forceMajorUpgrade(); + + await BROWSER_GLUE._maybeShowDefaultBrowserPrompt(); + + AssertEvents("Welcome disabled like enterprise policy", [ + "trigger", + "reason", + "no-welcome", + ]); + + await cleanupUpgrade(); + defaultPrefs.setBoolPref(pref, orig); +}); + +add_task(async function show_major_upgrade() { + const defaultPrefs = Services.prefs.getDefaultBranch(""); + const pref = "browser.startup.upgradeDialog.enabled"; + const orig = defaultPrefs.getBoolPref(pref, true); + defaultPrefs.setBoolPref(pref, true); + + let cleanupUpgrade = await forceMajorUpgrade(); + + await BROWSER_GLUE._maybeShowDefaultBrowserPrompt(); + const [win] = await TestUtils.topicObserved("subdialog-loaded"); + const data = await OnboardingMessageProvider.getUpgradeMessage(); + Assert.equal(data.id, "FX_MR_106_UPGRADE", "MR 106 Upgrade Dialog Shown"); + win.close(); + + AssertEvents("Upgrade dialog opened from major upgrade", [ + "trigger", + "reason", + "satisfied", + ]); + + await BrowserTestUtils.removeTab(gBrowser.selectedTab); + + await BROWSER_GLUE._maybeShowDefaultBrowserPrompt(); + + AssertEvents("Shouldn't reshow for upgrade dialog requirements", [ + "trigger", + "reason", + "already-shown", + ]); + + defaultPrefs.setBoolPref(pref, orig); + await cleanupUpgrade(); +}); + +add_task(async function test_mr2022_upgradeDialogEnabled() { + const FALLBACK_PREF = "browser.startup.upgradeDialog.enabled"; + + async function runMajorReleaseTest( + { onboarding = undefined, enabled = undefined, fallbackPref = undefined }, + expected + ) { + info("Testing upgradeDialog with:"); + info(` majorRelease2022.onboarding=${onboarding}`); + info(` upgradeDialog.enabled=${enabled}`); + info(` ${FALLBACK_PREF}=${fallbackPref}`); + + let mr2022Cleanup = async () => {}; + let upgradeDialogCleanup = async () => {}; + + if (typeof onboarding !== "undefined") { + mr2022Cleanup = await ExperimentFakes.enrollWithFeatureConfig({ + featureId: "majorRelease2022", + value: { onboarding }, + }); + } + + if (typeof enabled !== "undefined") { + upgradeDialogCleanup = await ExperimentFakes.enrollWithFeatureConfig({ + featureId: "upgradeDialog", + value: { enabled }, + }); + } + + if (typeof fallbackPref !== "undefined") { + await SpecialPowers.pushPrefEnv({ + set: [[FALLBACK_PREF, fallbackPref]], + }); + } + + const cleanupForcedUpgrade = await forceMajorUpgrade(); + + try { + await BROWSER_GLUE._maybeShowDefaultBrowserPrompt(); + AssertEvents(`Upgrade dialog ${expected ? "shown" : "not shown"}`, [ + "trigger", + "reason", + expected ? "satisfied" : "disabled", + ]); + + if (expected) { + const [win] = await TestUtils.topicObserved("subdialog-loaded"); + win.close(); + await BrowserTestUtils.removeTab(gBrowser.selectedTab); + } + } finally { + await cleanupForcedUpgrade(); + if (typeof fallbackPref !== "undefined") { + await SpecialPowers.popPrefEnv(); + } + await upgradeDialogCleanup(); + await mr2022Cleanup(); + } + } + + await runMajorReleaseTest({ onboarding: true }, true); + await runMajorReleaseTest({ onboarding: true, enabled: false }, true); + await runMajorReleaseTest({ onboarding: true, fallbackPref: false }, true); + + await runMajorReleaseTest({ onboarding: false }, false); + await runMajorReleaseTest({ onboarding: false, enabled: true }, false); + await runMajorReleaseTest({ onboarding: false, fallbackPref: true }, false); + + await runMajorReleaseTest({ enabled: true }, true); + await runMajorReleaseTest({ enabled: true, fallbackPref: false }, true); + await runMajorReleaseTest({ fallbackPref: true }, true); + + await runMajorReleaseTest({ enabled: false }, false); + await runMajorReleaseTest({ enabled: false, fallbackPref: true }, false); + await runMajorReleaseTest({ fallbackPref: false }, false); + + // Test the default configuration. + await runMajorReleaseTest({}, true); +}); -- cgit v1.2.3