Index: chrome/installer/util/shell_util.h |
diff --git a/chrome/installer/util/shell_util.h b/chrome/installer/util/shell_util.h |
index a29caddafe4100c985a69cc7e77c860aa858d52c..945211ae27b15849116862a44a2f34b494a9ca3b 100644 |
--- a/chrome/installer/util/shell_util.h |
+++ b/chrome/installer/util/shell_util.h |
@@ -16,6 +16,7 @@ |
#include <vector> |
#include "base/basictypes.h" |
+#include "base/md5.h" |
#include "base/string16.h" |
#include "chrome/installer/util/work_item_list.h" |
@@ -243,8 +244,8 @@ class ShellUtil { |
const string16& chrome_exe); |
// Returns the AppUserModelId for |dist|. This identifier is unconditionally |
- // suffixed with the user id for user-level installs (in contrast to other |
- // registration entries which are suffix as described in |
+ // suffixed with a unique id for this user on user-level installs (in contrast |
+ // to other registration entries which are suffixed as described in |
// GetCurrentInstallationSuffix() above). |
static string16 GetBrowserModelId(BrowserDistribution* dist, |
const string16& chrome_exe); |
@@ -405,6 +406,40 @@ class ShellUtil { |
int icon_index, |
uint32 options); |
+ // Sets |suffix| to the base 32 encoding of the md5 hash of this user's |
+ // username preceded by a dot. |
+ // This is guaranteed to be unique on the machine and 27 characters long |
+ // (including the '.'). |
+ // This suffix is then meant to be added to all registration that may conflict |
+ // with another user-level Chrome install. |
+ // Note that prior to Chrome 21, the suffix registered used to be the user's |
+ // username (see GetOldUserSpecificRegistrySuffix() below). We still honor old |
+ // installs registered that way, but it was wrong because some of the |
+ // characters allowed in a username are not allowed in a ProgId. |
+ // Returns true unless the OS call to retrieve the username fails. |
+ // NOTE: Only the installer should use this suffix directly. Other callers |
+ // should call GetCurrentInstallationSuffix(). |
+ static bool GetNewUserSpecificRegistrySuffix(string16* suffix); |
+ |
+ // Sets |suffix| to this user's username preceded by a dot. This suffix is |
+ // then meant to be added to all registration that may conflict with another |
+ // user-level Chrome install. |
+ // Returns true unless the OS call to retrieve the username fails. |
+ // NOTE: Only the installer should use this suffix directly. Other callers |
+ // should call GetCurrentInstallationSuffix(). |
+ static bool GetOldUserSpecificRegistrySuffix(string16* suffix); |
+ |
+ // Returns the base32 encoding (using the [A-Z2-7] alphabet) of |digest|. |
+ // The returned string will be exactly 26 characters in length. |
+ static string16 MD5DigestToBase32(const base::MD5Digest& digest); |
+ |
+ // Returns the base32 encoding (using the [A-Z2-7] alphabet) of |bytes|. |
+ // |size| is the length of |bytes|. |
+ // Note: This method does not suffix the output with '=' signs as technically |
+ // required by the base32 standard for inputs that aren't a multiple of 5 |
+ // bits. |
+ static string16 ByteArrayToBase32(const unsigned char bytes[], int size); |
+ |
private: |
DISALLOW_COPY_AND_ASSIGN(ShellUtil); |
}; |