Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
"use strict";
const { ExperimentFakes } = ChromeUtils.importESModule(
);
const { ExperimentAPI } = ChromeUtils.importESModule(
);
const { OnboardingMessageProvider } = ChromeUtils.importESModule(
);
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();
});