diff --git a/toolkit/mozapps/extensions/internal/XPIProvider.jsm b/toolkit/mozapps/extensions/internal/XPIProvider.jsm index e68f8e6a3..09b57be50 100644 --- a/toolkit/mozapps/extensions/internal/XPIProvider.jsm +++ b/toolkit/mozapps/extensions/internal/XPIProvider.jsm @@ -1247,22 +1247,13 @@ function loadManifestFromRDF(aUri, aStream) { } 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; diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_syncGUID.js b/toolkit/mozapps/extensions/test/xpcshell/test_syncGUID.js index 390fb5de3..385f58405 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_syncGUID.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_syncGUID.js @@ -22,6 +22,8 @@ function run_test() { 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 = { @@ -35,7 +37,7 @@ add_test(function test_getter_and_setter() { 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";