Index: chrome/installer/util/shell_util.h |
diff --git a/chrome/installer/util/shell_util.h b/chrome/installer/util/shell_util.h |
index a834496c62b8a1684577527a4f593673f9217546..6eb7390fa6fe8abde54a56ee50422817877b1e06 100644 |
--- a/chrome/installer/util/shell_util.h |
+++ b/chrome/installer/util/shell_util.h |
@@ -1,4 +1,4 @@ |
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
+// Copyright (c) 2009 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
// |
@@ -6,8 +6,8 @@ |
// Windows shell. These methods are all static and currently part of |
// ShellUtil class. |
-#ifndef CHROME_INSTALLER_UTIL_SHELL_UTIL_H__ |
-#define CHROME_INSTALLER_UTIL_SHELL_UTIL_H__ |
+#ifndef CHROME_INSTALLER_UTIL_SHELL_UTIL_H_ |
+#define CHROME_INSTALLER_UTIL_SHELL_UTIL_H_ |
#include <windows.h> |
#include <string> |
@@ -25,13 +25,6 @@ class ShellUtil { |
SYSTEM_LEVEL = 0x2 // Make any shell changes only at the system level |
}; |
- // Return value of AddChromeToSetAccessDefaults. |
- enum RegisterStatus { |
- SUCCESS, // Registration of Chrome successful (in HKLM) |
- FAILURE, // Registration failed (no changes made) |
- REGISTERED_PER_USER // Registered Chrome as per user (in HKCU) |
- }; |
- |
// Relative path of DefaultIcon registry entry (prefixed with '\'). |
static const wchar_t* kRegDefaultIcon; |
@@ -62,7 +55,7 @@ class ShellUtil { |
// Name that we give to Chrome file association handler ProgId. |
static const wchar_t* kChromeHTMLProgId; |
- // Description of Chrome file/URL association handler ProgId. |
+ // Description of Chrome file association handler ProgId. |
static const wchar_t* kChromeHTMLProgIdDesc; |
// Registry path that stores url associations on Vista. |
@@ -83,27 +76,6 @@ class ShellUtil { |
// Description of Chrome file/URL association handler ProgId. |
static const wchar_t* kChromeExtProgIdDesc; |
- // This method adds Chrome to the list that shows up in Add/Remove Programs-> |
- // Set Program Access and Defaults and also creates Chrome ProgIds under |
- // Software\Classes. This method requires write access to HKLM so is just |
- // best effort deal. If write to HKLM fails and skip_if_not_admin is false, |
- // this method will: |
- // - add the ProgId entries to HKCU on XP. HKCU entries will not make |
- // Chrome show in Set Program Access and Defaults but they are still useful |
- // because we can make Chrome run when user clicks on http link or html |
- // file. |
- // - will try to launch setup.exe with admin priviledges on Vista to do |
- // these tasks. Users will see standard Vista elevation prompt and if they |
- // enter the right credentials, the write operation will work. |
- // Currently skip_if_not_admin is false only when user tries to make Chrome |
- // default browser and Chrome is not registered on the machine. |
- // |
- // chrome_exe: full path to chrome.exe. |
- // skip_if_not_admin: if false will make this method try alternate methods |
- // as described above. |
- static RegisterStatus AddChromeToSetAccessDefaults( |
- const std::wstring& chrome_exe, bool skip_if_not_admin); |
- |
// Checks if we need Admin rights for registry cleanup by checking if any |
// entry exists in HKLM. |
static bool AdminNeededForRegistryCleanup(); |
@@ -137,8 +109,8 @@ class ShellUtil { |
// This method appends the Chrome icon index inside chrome.exe to the |
// chrome.exe path passed in as input, to generate the full path for |
// Chrome icon that can be used as value for Windows registry keys. |
- // chrome_icon: full path to chrome.exe. |
- static bool GetChromeIcon(std::wstring& chrome_icon); |
+ // |chrome_exe| full path to chrome.exe. |
+ static std::wstring GetChromeIcon(const std::wstring& chrome_exe); |
// This method returns the command to open URLs/files using chrome. Typically |
// this command is written to the registry under shell\open\command key. |
@@ -167,17 +139,48 @@ class ShellUtil { |
// User's profile only affects any new user profiles (not existing ones). |
static bool GetQuickLaunchPath(bool system_level, std::wstring* path); |
- // Make Chrome default browser. Before calling this function Chrome should |
- // already have been registered by calling AddChromeToSetAccessDefaults() |
- // method, otherwise this function will fail. |
+ // This function gets a suffix (user's login name) that can be added |
+ // to Chromium default browser entry in the registry to create a unique name |
+ // if there are multiple users on the machine, each with their own copy of |
+ // Chromium that they want to set as default browser. |
+ // This suffix value is assigned to |entry|. |
+ static bool GetUserSpecificDefaultBrowserSuffix(std::wstring* entry); |
+ |
+ // Make Chrome default browser. |
// shell_change: Defined whether to register as default browser at system |
// level or user level. If value has ShellChange::SYSTEM_LEVEL |
- // we should be running as admin user. Currently this setting |
- // does not have any effect on Vista where we always set |
- // as default only for the current user. |
+ // we should be running as admin user. |
// chrome_exe: The chrome.exe path to register as default browser. |
+ // elevate_if_not_admin: On Vista if user is not admin, try to elevate for |
+ // Chrome registration. |
static bool MakeChromeDefault(int shell_change, |
- const std::wstring& chrome_exe); |
+ const std::wstring& chrome_exe, |
+ bool elevate_if_not_admin); |
+ |
+ // This method adds Chrome to the list that shows up in Add/Remove Programs-> |
+ // Set Program Access and Defaults and also creates Chrome ProgIds under |
+ // Software\Classes. This method requires write access to HKLM so is just |
+ // best effort deal. If write to HKLM fails and elevate_if_not_admin is true, |
+ // this method will: |
+ // - add the ProgId entries to HKCU on XP. HKCU entries will not make |
+ // Chrome show in Set Program Access and Defaults but they are still useful |
+ // because we can make Chrome run when user clicks on http link or html |
+ // file. |
+ // - will try to launch setup.exe with admin priviledges on Vista to do |
+ // these tasks. Users will see standard Vista elevation prompt and if they |
+ // enter the right credentials, the write operation will work. |
+ // Currently elevate_if_not_admin is true only when user tries to make Chrome |
+ // default browser (through the UI or through installer options) and Chrome |
+ // is not registered on the machine. |
+ // |
+ // |chrome_exe| full path to chrome.exe. |
+ // |unique_suffix| Optional input. If given, this function appends the value |
+ // to default browser entries names that it creates in the registry. |
+ // |elevate_if_not_admin| if true will make this method try alternate methods |
+ // as described above. |
+ static bool RegisterChromeBrowser(const std::wstring& chrome_exe, |
+ const std::wstring& unique_suffix, |
+ bool elevate_if_not_admin); |
// Remove Chrome shortcut from Desktop. |
// If shell_change is CURRENT_USER, the shortcut is removed from the |
@@ -206,8 +209,8 @@ class ShellUtil { |
bool create_new); |
private: |
- DISALLOW_EVIL_CONSTRUCTORS(ShellUtil); |
+ DISALLOW_COPY_AND_ASSIGN(ShellUtil); |
}; |
-#endif // CHROME_INSTALLER_UTIL_SHELL_UTIL_H__ |
+#endif // CHROME_INSTALLER_UTIL_SHELL_UTIL_H_ |