summaryrefslogtreecommitdiffstats
path: root/chrome/installer/util/shell_util.cc
diff options
context:
space:
mode:
authorkuchhal@chromium.org <kuchhal@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-17 00:18:27 +0000
committerkuchhal@chromium.org <kuchhal@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-17 00:18:27 +0000
commitaae9cf7ec74de68a042357506ccd29b76b5885b9 (patch)
treeec2b547a02ca2d8faad5eab8450759548c3af1a7 /chrome/installer/util/shell_util.cc
parent6273e2e7892702061d535025f7144a005ea2fc5d (diff)
downloadchromium_src-aae9cf7ec74de68a042357506ccd29b76b5885b9.zip
chromium_src-aae9cf7ec74de68a042357506ccd29b76b5885b9.tar.gz
chromium_src-aae9cf7ec74de68a042357506ccd29b76b5885b9.tar.bz2
Use different names for Chrome/Chromium for Chrome HTML prog id. If we
user the same name for both (ChromeHTML) Vista reports that http/https are associated with Chrome as well as Chromium and each treats itself as default browser. Also do some cleanup - instead of trying to update only the Chrome open cmd, go ahead and register the whole browser again (this doesn't change user preferences). BUG=9697 Review URL: http://codereview.chromium.org/67229 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@13906 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/installer/util/shell_util.cc')
-rw-r--r--chrome/installer/util/shell_util.cc18
1 files changed, 14 insertions, 4 deletions
diff --git a/chrome/installer/util/shell_util.cc b/chrome/installer/util/shell_util.cc
index 3015645..6370c61 100644
--- a/chrome/installer/util/shell_util.cc
+++ b/chrome/installer/util/shell_util.cc
@@ -53,12 +53,14 @@ class RegistryEntry {
std::wstring quoted_exe_path = L"\"" + chrome_exe + L"\"";
std::wstring open_cmd = ShellUtil::GetChromeShellOpenCmd(chrome_exe);
- entries.push_front(new RegistryEntry(L"Software\\Classes\\ChromeHTML",
+ std::wstring chrome_html_prog_id(ShellUtil::kRegClasses);
+ file_util::AppendToPath(&chrome_html_prog_id, ShellUtil::kChromeHTMLProgId);
+ entries.push_front(new RegistryEntry(chrome_html_prog_id,
ShellUtil::kChromeHTMLProgIdDesc));
entries.push_front(new RegistryEntry(
- L"Software\\Classes\\ChromeHTML\\DefaultIcon", icon_path));
+ chrome_html_prog_id + ShellUtil::kRegDefaultIcon, icon_path));
entries.push_front(new RegistryEntry(
- L"Software\\Classes\\ChromeHTML\\shell\\open\\command", open_cmd));
+ chrome_html_prog_id + ShellUtil::kRegShellOpen, open_cmd));
std::wstring exe_name = file_util::GetFilenameFromPath(chrome_exe);
std::wstring app_key = L"Software\\Classes\\Applications\\" + exe_name +
@@ -357,7 +359,9 @@ ShellUtil::RegisterStatus RegisterOnVista(const std::wstring& chrome_exe,
// Remove unnecessary "URL Protocol" entry from shell registration. This value
// was written by older installers so ignoring error conditions.
void RemoveUrlProtocol(HKEY root) {
- RegKey key(root, L"Software\\Classes\\ChromeHTML", KEY_ALL_ACCESS);
+ std::wstring chrome_html_prog_id(ShellUtil::kRegClasses);
+ file_util::AppendToPath(&chrome_html_prog_id, ShellUtil::kChromeHTMLProgId);
+ RegKey key(root, chrome_html_prog_id.c_str(), KEY_ALL_ACCESS);
key.DeleteValue(ShellUtil::kRegUrlProtocol);
}
@@ -379,8 +383,14 @@ const wchar_t* ShellUtil::kAppPathsRegistryKey =
L"Software\\Microsoft\\Windows\\CurrentVersion\\App Paths";
const wchar_t* ShellUtil::kAppPathsRegistryPathName = L"Path";
+#if defined(GOOGLE_CHROME_BUILD)
const wchar_t* ShellUtil::kChromeHTMLProgId = L"ChromeHTML";
const wchar_t* ShellUtil::kChromeHTMLProgIdDesc = L"Chrome HTML";
+#else
+const wchar_t* ShellUtil::kChromeHTMLProgId = L"ChromiumHTML";
+const wchar_t* ShellUtil::kChromeHTMLProgIdDesc = L"Chromium HTML";
+#endif
+
const wchar_t* ShellUtil::kFileAssociations[] = {L".htm", L".html", L".shtml",
L".xht", L".xhtml", NULL};
const wchar_t* ShellUtil::kProtocolAssociations[] = {L"ftp", L"http", L"https",