Bug 1433334 - Add installTelemetryInfo to addon installed from AddonStudies. draft
authorLuca Greco <lgreco@mozilla.com>
Mon, 23 Jul 2018 20:16:35 +0200
changeset 830175 99503d1721d8a3f5301442418bda6af997846ab0
parent 830174 06c4bb685d700eab9315a4b4286471f8f6ba326d
child 830176 c11ec40fe2bcc3e97cb6436701096eb6e80b959f
push id118821
push userluca.greco@alcacoop.it
push dateMon, 20 Aug 2018 14:39:19 +0000
bugs1433334
milestone63.0a1
Bug 1433334 - Add installTelemetryInfo to addon installed from AddonStudies. MozReview-Commit-ID: Lt2ev2n7n0n
toolkit/components/normandy/lib/AddonStudies.jsm
toolkit/components/normandy/lib/Addons.jsm
toolkit/components/normandy/test/browser/browser_AddonStudies.js
toolkit/components/normandy/test/browser/browser_Addons.js
--- 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");
   }
 );