Bug 1277295 Remove obsolete reference to storage service r?kmag draft
authorAndrew Swan <aswan@mozilla.com>
Fri, 24 Jun 2016 13:14:35 -0700
changeset 381230 49bddb1f9422581735e9cf6e27d7dd78d90299dd
parent 381119 939ecc4e9d055c263633cbe276bfb634a68fe4c5
child 523926 5dc89794b3a16efd7405587cd060a17e8aeba0da
push id21438
push useraswan@mozilla.com
push dateFri, 24 Jun 2016 20:39:39 +0000
reviewerskmag
bugs1277295
milestone50.0a1
Bug 1277295 Remove obsolete reference to storage service r?kmag MozReview-Commit-ID: 27BEb2XGQkZ
toolkit/mozapps/extensions/internal/XPIProvider.jsm
toolkit/mozapps/extensions/test/xpcshell/test_syncGUID.js
--- a/toolkit/mozapps/extensions/internal/XPIProvider.jsm
+++ b/toolkit/mozapps/extensions/internal/XPIProvider.jsm
@@ -1232,32 +1232,23 @@ function loadManifestFromRDF(aUri, aStre
 
   // icons will be filled by the calling function
   addon.icons = {};
 
   return addon;
 }
 
 function defineSyncGUID(aAddon) {
-  // Load the storage service before NSS (nsIRandomGenerator),
-  // to avoid a SQLite initialization error (bug 717904).
-  let storage = Services.storage;
-
   // Define .syncGUID as a lazy property which is also settable
   Object.defineProperty(aAddon, "syncGUID", {
     get: () => {
       // Generate random GUID used for Sync.
-      // This was lifted from util.js:makeGUID() from services-sync.
-      let rng = Cc["@mozilla.org/security/random-generator;1"].
-        createInstance(Ci.nsIRandomGenerator);
-      let bytes = rng.generateRandomBytes(9);
-      let byte_string = bytes.map(byte => String.fromCharCode(byte)).join("");
-      // Base64 encode
-      let guid = btoa(byte_string).replace(/\+/g, '-')
-        .replace(/\//g, '_');
+      let guid = Cc["@mozilla.org/uuid-generator;1"]
+          .getService(Ci.nsIUUIDGenerator)
+          .generateUUID().toString();
 
       delete aAddon.syncGUID;
       aAddon.syncGUID = guid;
       return guid;
     },
     set: (val) => {
       delete aAddon.syncGUID;
       aAddon.syncGUID = val;
--- a/toolkit/mozapps/extensions/test/xpcshell/test_syncGUID.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_syncGUID.js
@@ -17,30 +17,32 @@ function run_test() {
   Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false);
 
   createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9");
   startupManager();
 
   run_next_test();
 }
 
+const UUID_PATTERN = /^\{[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}$/i;
+
 add_test(function test_getter_and_setter() {
   // Our test add-on requires a restart.
   let listener = {
     onInstallEnded: function onInstallEnded() {
      AddonManager.removeInstallListener(listener);
      // never restart directly inside an onInstallEnded handler!
      do_execute_soon(function getter_setter_install_ended() {
       restartManager();
 
       AddonManager.getAddonByID(addonId, function(addon) {
 
         do_check_neq(addon, null);
         do_check_neq(addon.syncGUID, null);
-        do_check_true(addon.syncGUID.length >= 9);
+        do_check_true(UUID_PATTERN.test(addon.syncGUID));
 
         let oldGUID = addon.SyncGUID;
         let newGUID = "foo";
 
         addon.syncGUID = newGUID;
         do_check_eq(newGUID, addon.syncGUID);
 
         // Verify change made it to DB.