Bug 1433334 - Add installTelemetryInfo to addon installed from AddonStudies.
MozReview-Commit-ID: Lt2ev2n7n0n
--- a/toolkit/components/normandy/lib/AddonStudies.jsm
+++ b/toolkit/components/normandy/lib/AddonStudies.jsm
@@ -253,17 +253,18 @@ var AddonStudies = {
const db = await getDatabase();
if (await getStore(db).get(recipeId)) {
throw new Error(`A study for recipe ${recipeId} already exists.`);
}
let addonFile;
try {
addonFile = await this.downloadAddonToTemporaryFile(addonUrl);
- const install = await AddonManager.getInstallForFile(addonFile);
+ const install = await AddonManager.getInstallForFile(addonFile, null, {source: "addon-studies"});
+
const study = {
recipeId,
name,
description,
addonId: install.addon.id,
addonVersion: install.addon.version,
addonUrl,
active: true,
--- a/toolkit/components/normandy/lib/Addons.jsm
+++ b/toolkit/components/normandy/lib/Addons.jsm
@@ -53,17 +53,19 @@ var Addons = {
* @async
* @returns {string}
* Add-on ID that was installed
* @throws {string}
* If the add-on can not be installed, or overwriting is disabled and an
* add-on with a matching ID is already installed.
*/
async install(addonUrl, options) {
- const installObj = await AddonManager.getInstallForURL(addonUrl, "application/x-xpinstall");
+ const installObj = await AddonManager.getInstallForURL(addonUrl, "application/x-xpinstall",
+ null, null, null, null, null,
+ {source: "normandy"});
return this.applyInstall(installObj, options);
},
async applyInstall(addonInstall, {update = false} = {}) {
const result = new Promise((resolve, reject) => addonInstall.addListener({
onInstallStarted(cbInstall) {
if (cbInstall.existingAddon && !update) {
reject(new Error(`
--- a/toolkit/components/normandy/test/browser/browser_AddonStudies.js
+++ b/toolkit/components/normandy/test/browser/browser_AddonStudies.js
@@ -203,16 +203,20 @@ decorate_task(
addonUrl,
});
await AddonStudies.start(args);
await startupPromise;
addon = await Addons.get(addonId);
ok(addon, "After start is called, the add-on is installed.");
+ let amAddon = await AddonManager.getAddonByID(addonId);
+ Assert.deepEqual(amAddon.installTelemetryInfo, {source: "addon-studies"},
+ "Got the expected installTelemetryInfo on the addon");
+
const study = await AddonStudies.get(args.recipeId);
Assert.deepEqual(
study,
{
recipeId: args.recipeId,
name: args.name,
description: args.description,
addonId,
--- a/toolkit/components/normandy/test/browser/browser_Addons.js
+++ b/toolkit/components/normandy/test/browser/browser_Addons.js
@@ -25,10 +25,14 @@ decorate_task(
await Addons.install(newAddonUrl, {update: true});
const addon = await startupPromise;
is(
addon.version,
"2.0",
"install can successfully update an already-installed addon when updating is enabled."
);
+
+ const amAddon = await AddonManager.getAddonByID(addon.id);
+ Assert.deepEqual(amAddon.installTelemetryInfo, {source: "normandy"},
+ "Got the expected installTelemetryInfo");
}
);