Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

// 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"]);
distroDir.create(Ci.nsIFile.DIRECTORY_TYPE, FileUtils.PERMS_DIRECTORY);
registerDirectory("XREAppFeat", distroDir);
AddonTestUtils.usePrivilegedSignatures = () => "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();
});