diff options
Diffstat (limited to '')
-rw-r--r-- | toolkit/mozapps/extensions/test/xpcshell/test_system_update_installTelemetryInfo.js | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_system_update_installTelemetryInfo.js b/toolkit/mozapps/extensions/test/xpcshell/test_system_update_installTelemetryInfo.js new file mode 100644 index 0000000000..3d41b81198 --- /dev/null +++ b/toolkit/mozapps/extensions/test/xpcshell/test_system_update_installTelemetryInfo.js @@ -0,0 +1,94 @@ +// Test that the expected installTelemetryInfo are being set on the system addon +// installed/updated through Balrog. + +createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2"); + +let distroDir = FileUtils.getDir("ProfD", ["sysfeatures", "empty"], true); +registerDirectory("XREAppFeat", distroDir); + +AddonTestUtils.usePrivilegedSignatures = id => "system"; + +add_task(() => initSystemAddonDirs()); + +add_task(async function test_addon_update() { + Services.prefs.setBoolPref(PREF_SYSTEM_ADDON_UPDATE_ENABLED, true); + + // Define the set of initial conditions to run each test against: + // - setup: A task to setup the profile into the initial state. + // - initialState: The initial expected system add-on state after setup has run. + const initialSetup = { + async setup() { + await buildPrefilledUpdatesDir(); + distroDir.leafName = "empty"; + }, + initialState: [ + { isUpgrade: false, version: null }, + { isUpgrade: true, version: "2.0" }, + ], + }; + + await setupSystemAddonConditions(initialSetup, distroDir); + + const newlyInstalledSystemAddonId = "system1@tests.mozilla.org"; + const updatedSystemAddonId = "system2@tests.mozilla.org"; + + const updateXML = buildSystemAddonUpdates([ + // Newly installed system addon entry. + { + id: newlyInstalledSystemAddonId, + version: "1.0", + path: "system1_1.xpi", + xpi: await getSystemAddonXPI(1, "1.0"), + }, + // Updated system addon entry. + { + id: updatedSystemAddonId, + version: "3.0", + path: "system2_3.xpi", + xpi: await getSystemAddonXPI(2, "3.0"), + }, + ]); + + await Promise.all([ + updateAllSystemAddons(updateXML), + promiseWebExtensionStartup(newlyInstalledSystemAddonId), + promiseWebExtensionStartup(updatedSystemAddonId), + ]); + + await verifySystemAddonState( + initialSetup.initialState, + [ + { isUpgrade: true, version: "1.0" }, + { isUpgrade: true, version: "3.0" }, + { isUpgrade: false, version: null }, + { isUpgrade: false, version: null }, + { isUpgrade: false, version: null }, + ], + false, + distroDir + ); + + const newlyInstalledSystemAddon = await AddonManager.getAddonByID( + newlyInstalledSystemAddonId + ); + Assert.deepEqual( + newlyInstalledSystemAddon.installTelemetryInfo, + // For addons installed for the first time through the product addon checker + // we set a `method` in the telemetryInfo. + { source: "system-addon", method: "product-updates" }, + "Got the expected telemetry info on balrog system addon installed addon" + ); + + const updatedSystemAddon = await AddonManager.getAddonByID( + updatedSystemAddonId + ); + Assert.deepEqual( + updatedSystemAddon.installTelemetryInfo, + // For addons that are distributed in Firefox, then updated through the product + // addon checker, `method` will not be set. + { source: "system-addon" }, + "Got the expected telemetry info on balrog system addon updated addon" + ); + + await promiseShutdownManager(); +}); |