Bug 1383782 - Record an installDate when a temporary add-on is reloaded, r?aswan draft
authorBob Silverberg <bsilverberg@mozilla.com>
Thu, 03 Aug 2017 16:57:56 -0400
changeset 645182 e7b555f1b2a73feb8a2da403c8aee43ae9f29027
parent 644849 64f5e3f40f0e7accb12cd90080e58eff0be46383
child 725842 993f9d18e3218f36e1c3fc84726ca2abfec268ab
push id73687
push userbmo:bob.silverberg@gmail.com
push dateFri, 11 Aug 2017 22:37:57 +0000
reviewersaswan
bugs1383782
milestone57.0a1
Bug 1383782 - Record an installDate when a temporary add-on is reloaded, r?aswan MozReview-Commit-ID: FXIAeBCuGfd
toolkit/mozapps/extensions/internal/XPIProvider.jsm
toolkit/mozapps/extensions/test/xpcshell/test_webextension_install.js
--- a/toolkit/mozapps/extensions/internal/XPIProvider.jsm
+++ b/toolkit/mozapps/extensions/internal/XPIProvider.jsm
@@ -3460,16 +3460,18 @@ this.XPIProvider = {
       if (!oldAddon.bootstrap) {
         logger.warn("Non-restartless Add-on is already installed", addon.id);
         throw new Error("Non-restartless add-on with ID "
                         + oldAddon.id + " is already installed");
       } else {
         logger.warn("Addon with ID " + oldAddon.id + " already installed,"
                     + " older version will be disabled");
 
+        addon.installDate = oldAddon.installDate;
+
         let existingAddonID = oldAddon.id;
         let existingAddon = oldAddon._sourceBundle;
 
         // We'll be replacing a currently active bootstrapped add-on so
         // call its uninstall method
         let newVersion = addon.version;
         let oldVersion = oldAddon.version;
 
--- a/toolkit/mozapps/extensions/test/xpcshell/test_webextension_install.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_webextension_install.js
@@ -103,16 +103,18 @@ add_task(async function test_unsigned_no
 
   // Install the same directory again, as if re-installing or reloading.
   const [secondAddon] = await Promise.all([
     AddonManager.installTemporaryAddon(addonDir),
     promiseWebExtensionStartup(),
   ]);
   // The IDs should be the same.
   equal(secondAddon.id, addon.id, "Reinstalled add-on has the expected ID");
+  equal(secondAddon.installDate.valueOf(), addon.installDate.valueOf(),
+        "Reloaded add-on has the expected installDate.");
 
   secondAddon.uninstall();
   Services.obs.notifyObservers(addonDir, "flush-cache-entry");
   addonDir.remove(true);
   AddonTestUtils.useRealCertChecks = false;
 });
 
 // We should be able to install two extensions from manifests without IDs