Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 // | 4 // |
| 5 // This file defines functions that integrate Chrome in Windows shell. These | 5 // This file defines functions that integrate Chrome in Windows shell. These |
| 6 // functions can be used by Chrome as well as Chrome installer. All of the | 6 // functions can be used by Chrome as well as Chrome installer. All of the |
| 7 // work is done by the local functions defined in anonymous namespace in | 7 // work is done by the local functions defined in anonymous namespace in |
| 8 // this class. | 8 // this class. |
| 9 | 9 |
| 10 #include "chrome/installer/util/shell_util.h" | 10 #include "chrome/installer/util/shell_util.h" |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 102 // speaking, we should use the name of the executable (e.g., "chrome.exe"), | 102 // speaking, we should use the name of the executable (e.g., "chrome.exe"), |
| 103 // but that ship has sailed. The cost of switching now is re-prompting users | 103 // but that ship has sailed. The cost of switching now is re-prompting users |
| 104 // to make Chrome their default browser, which isn't polite. |suffix| is the | 104 // to make Chrome their default browser, which isn't polite. |suffix| is the |
| 105 // user-specific registration suffix; see GetUserSpecificDefaultBrowserSuffix | 105 // user-specific registration suffix; see GetUserSpecificDefaultBrowserSuffix |
| 106 // in shell_util.h for details. | 106 // in shell_util.h for details. |
| 107 static string16 GetBrowserClientKey(BrowserDistribution* dist, | 107 static string16 GetBrowserClientKey(BrowserDistribution* dist, |
| 108 const string16& suffix) { | 108 const string16& suffix) { |
| 109 DCHECK(suffix.empty() || suffix[0] == L'.'); | 109 DCHECK(suffix.empty() || suffix[0] == L'.'); |
| 110 return string16(ShellUtil::kRegStartMenuInternet) | 110 return string16(ShellUtil::kRegStartMenuInternet) |
| 111 .append(1, L'\\') | 111 .append(1, L'\\') |
| 112 .append(dist->GetApplicationName()) | 112 .append(dist->GetBaseAppName()) |
| 113 .append(suffix); | 113 .append(suffix); |
| 114 } | 114 } |
| 115 | 115 |
| 116 // Returns the Windows Default Programs capabilities key for Chrome. For | 116 // Returns the Windows Default Programs capabilities key for Chrome. For |
| 117 // example: | 117 // example: |
| 118 // "Software\Clients\StartMenuInternet\Chromium[.user]\Capabilities". | 118 // "Software\Clients\StartMenuInternet\Chromium[.user]\Capabilities". |
| 119 static string16 GetCapabilitiesKey(BrowserDistribution* dist, | 119 static string16 GetCapabilitiesKey(BrowserDistribution* dist, |
| 120 const string16& suffix) { | 120 const string16& suffix) { |
| 121 return GetBrowserClientKey(dist, suffix).append(L"\\Capabilities"); | 121 return GetBrowserClientKey(dist, suffix).append(L"\\Capabilities"); |
| 122 } | 122 } |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 206 string16 chrome_application(chrome_html_prog_id + | 206 string16 chrome_application(chrome_html_prog_id + |
| 207 ShellUtil::kRegApplication); | 207 ShellUtil::kRegApplication); |
| 208 entries->push_front(new RegistryEntry( | 208 entries->push_front(new RegistryEntry( |
| 209 chrome_application, ShellUtil::kRegAppUserModelId, app_id)); | 209 chrome_application, ShellUtil::kRegAppUserModelId, app_id)); |
| 210 entries->push_front(new RegistryEntry( | 210 entries->push_front(new RegistryEntry( |
| 211 chrome_application, ShellUtil::kRegApplicationIcon, icon_path)); | 211 chrome_application, ShellUtil::kRegApplicationIcon, icon_path)); |
| 212 // TODO(grt): http://crbug.com/75152 Write a reference to a localized | 212 // TODO(grt): http://crbug.com/75152 Write a reference to a localized |
| 213 // resource for name, description, and company. | 213 // resource for name, description, and company. |
| 214 entries->push_front(new RegistryEntry( | 214 entries->push_front(new RegistryEntry( |
| 215 chrome_application, ShellUtil::kRegApplicationName, | 215 chrome_application, ShellUtil::kRegApplicationName, |
| 216 dist->GetApplicationName().append(suffix))); | 216 dist->GetAppShortCutName().append(suffix))); |
| 217 entries->push_front(new RegistryEntry( | 217 entries->push_front(new RegistryEntry( |
| 218 chrome_application, ShellUtil::kRegApplicationDescription, | 218 chrome_application, ShellUtil::kRegApplicationDescription, |
| 219 dist->GetAppDescription())); | 219 dist->GetAppDescription())); |
| 220 entries->push_front(new RegistryEntry( | 220 entries->push_front(new RegistryEntry( |
| 221 chrome_application, ShellUtil::kRegApplicationCompany, | 221 chrome_application, ShellUtil::kRegApplicationCompany, |
| 222 dist->GetPublisherName())); | 222 dist->GetPublisherName())); |
| 223 } | 223 } |
| 224 | 224 |
| 225 return true; | 225 return true; |
| 226 } | 226 } |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 245 std::list<RegistryEntry*>* entries) { | 245 std::list<RegistryEntry*>* entries) { |
| 246 string16 icon_path = ShellUtil::GetChromeIcon(dist, chrome_exe); | 246 string16 icon_path = ShellUtil::GetChromeIcon(dist, chrome_exe); |
| 247 string16 quoted_exe_path = L"\"" + chrome_exe + L"\""; | 247 string16 quoted_exe_path = L"\"" + chrome_exe + L"\""; |
| 248 | 248 |
| 249 // Register for the Start Menu "Internet" link (pre-Win7). | 249 // Register for the Start Menu "Internet" link (pre-Win7). |
| 250 const string16 start_menu_entry(GetBrowserClientKey(dist, suffix)); | 250 const string16 start_menu_entry(GetBrowserClientKey(dist, suffix)); |
| 251 // Register Chrome's display name. | 251 // Register Chrome's display name. |
| 252 // TODO(grt): http://crbug.com/75152 Also set LocalizedString; see | 252 // TODO(grt): http://crbug.com/75152 Also set LocalizedString; see |
| 253 // http://msdn.microsoft.com/en-us/library/windows/desktop/cc144109(v=VS.85) .aspx#registering_the_display_name | 253 // http://msdn.microsoft.com/en-us/library/windows/desktop/cc144109(v=VS.85) .aspx#registering_the_display_name |
| 254 entries->push_front(new RegistryEntry( | 254 entries->push_front(new RegistryEntry( |
| 255 start_menu_entry, dist->GetApplicationName())); | 255 start_menu_entry, dist->GetAppShortCutName())); |
| 256 // Register the "open" verb for launching Chrome via the "Internet" link. | 256 // Register the "open" verb for launching Chrome via the "Internet" link. |
| 257 entries->push_front(new RegistryEntry( | 257 entries->push_front(new RegistryEntry( |
| 258 start_menu_entry + ShellUtil::kRegShellOpen, quoted_exe_path)); | 258 start_menu_entry + ShellUtil::kRegShellOpen, quoted_exe_path)); |
| 259 // Register Chrome's icon for the Start Menu "Internet" link. | 259 // Register Chrome's icon for the Start Menu "Internet" link. |
| 260 entries->push_front(new RegistryEntry( | 260 entries->push_front(new RegistryEntry( |
| 261 start_menu_entry + ShellUtil::kRegDefaultIcon, icon_path)); | 261 start_menu_entry + ShellUtil::kRegDefaultIcon, icon_path)); |
| 262 | 262 |
| 263 // Register installation information. | 263 // Register installation information. |
| 264 string16 install_info(start_menu_entry + L"\\InstallInfo"); | 264 string16 install_info(start_menu_entry + L"\\InstallInfo"); |
| 265 // Note: not using CommandLine since it has ambiguous rules for quoting | 265 // Note: not using CommandLine since it has ambiguous rules for quoting |
| 266 // strings. | 266 // strings. |
| 267 entries->push_front(new RegistryEntry(install_info, kReinstallCommand, | 267 entries->push_front(new RegistryEntry(install_info, kReinstallCommand, |
| 268 quoted_exe_path + L" --" + ASCIIToWide(switches::kMakeDefaultBrowser))); | 268 quoted_exe_path + L" --" + ASCIIToWide(switches::kMakeDefaultBrowser))); |
| 269 entries->push_front(new RegistryEntry(install_info, L"HideIconsCommand", | 269 entries->push_front(new RegistryEntry(install_info, L"HideIconsCommand", |
| 270 quoted_exe_path + L" --" + ASCIIToWide(switches::kHideIcons))); | 270 quoted_exe_path + L" --" + ASCIIToWide(switches::kHideIcons))); |
| 271 entries->push_front(new RegistryEntry(install_info, L"ShowIconsCommand", | 271 entries->push_front(new RegistryEntry(install_info, L"ShowIconsCommand", |
| 272 quoted_exe_path + L" --" + ASCIIToWide(switches::kShowIcons))); | 272 quoted_exe_path + L" --" + ASCIIToWide(switches::kShowIcons))); |
| 273 entries->push_front(new RegistryEntry(install_info, L"IconsVisible", 1)); | 273 entries->push_front(new RegistryEntry(install_info, L"IconsVisible", 1)); |
| 274 | 274 |
| 275 // Register with Default Programs. | 275 // Register with Default Programs. |
| 276 string16 reg_app_name(dist->GetApplicationName().append(suffix)); | 276 string16 reg_app_name(dist->GetBaseAppName().append(suffix)); |
| 277 // Tell Windows where to find Chrome's Default Programs info. | 277 // Tell Windows where to find Chrome's Default Programs info. |
| 278 string16 capabilities(GetCapabilitiesKey(dist, suffix)); | 278 string16 capabilities(GetCapabilitiesKey(dist, suffix)); |
| 279 entries->push_front(new RegistryEntry(ShellUtil::kRegRegisteredApplications, | 279 entries->push_front(new RegistryEntry(ShellUtil::kRegRegisteredApplications, |
| 280 reg_app_name, capabilities)); | 280 reg_app_name, capabilities)); |
| 281 // Write out Chrome's Default Programs info. | 281 // Write out Chrome's Default Programs info. |
| 282 // TODO(grt): http://crbug.com/75152 Write a reference to a localized | 282 // TODO(grt): http://crbug.com/75152 Write a reference to a localized |
| 283 // resource rather than this. | 283 // resource rather than this. |
| 284 entries->push_front(new RegistryEntry( | 284 entries->push_front(new RegistryEntry( |
| 285 capabilities, ShellUtil::kRegApplicationDescription, | 285 capabilities, ShellUtil::kRegApplicationDescription, |
| 286 dist->GetLongAppDescription())); | 286 dist->GetLongAppDescription())); |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 375 // Protocols associations. | 375 // Protocols associations. |
| 376 string16 chrome_open = ShellUtil::GetChromeShellOpenCmd(chrome_exe); | 376 string16 chrome_open = ShellUtil::GetChromeShellOpenCmd(chrome_exe); |
| 377 string16 chrome_icon = ShellUtil::GetChromeIcon(dist, chrome_exe); | 377 string16 chrome_icon = ShellUtil::GetChromeIcon(dist, chrome_exe); |
| 378 for (int i = 0; ShellUtil::kBrowserProtocolAssociations[i] != NULL; i++) { | 378 for (int i = 0; ShellUtil::kBrowserProtocolAssociations[i] != NULL; i++) { |
| 379 GetUserProtocolEntries(ShellUtil::kBrowserProtocolAssociations[i], | 379 GetUserProtocolEntries(ShellUtil::kBrowserProtocolAssociations[i], |
| 380 chrome_icon, chrome_open, entries); | 380 chrome_icon, chrome_open, entries); |
| 381 } | 381 } |
| 382 | 382 |
| 383 // start->Internet shortcut. | 383 // start->Internet shortcut. |
| 384 string16 start_menu(ShellUtil::kRegStartMenuInternet); | 384 string16 start_menu(ShellUtil::kRegStartMenuInternet); |
| 385 string16 app_name = dist->GetApplicationName() + suffix; | 385 string16 app_name = dist->GetBaseAppName() + suffix; |
| 386 entries->push_front(new RegistryEntry(start_menu, app_name)); | 386 entries->push_front(new RegistryEntry(start_menu, app_name)); |
| 387 return true; | 387 return true; |
| 388 } | 388 } |
| 389 | 389 |
| 390 // Generate work_item tasks required to create current registry entry and | 390 // Generate work_item tasks required to create current registry entry and |
| 391 // add them to the given work item list. | 391 // add them to the given work item list. |
| 392 void AddToWorkItemList(HKEY root, WorkItemList *items) const { | 392 void AddToWorkItemList(HKEY root, WorkItemList *items) const { |
| 393 items->AddCreateRegKeyWorkItem(root, _key_path); | 393 items->AddCreateRegKeyWorkItem(root, _key_path); |
| 394 if (_is_string) { | 394 if (_is_string) { |
| 395 items->AddSetRegValueWorkItem(root, _key_path, _name, _value, true); | 395 items->AddSetRegValueWorkItem(root, _key_path, _name, _value, true); |
| (...skipping 622 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1018 key.ReadValue(NULL, &name) != ERROR_SUCCESS) { | 1018 key.ReadValue(NULL, &name) != ERROR_SUCCESS) { |
| 1019 continue; | 1019 continue; |
| 1020 } | 1020 } |
| 1021 // Read the browser's reinstall command. | 1021 // Read the browser's reinstall command. |
| 1022 if (key.Open(root, (client_path + L"\\InstallInfo").c_str(), | 1022 if (key.Open(root, (client_path + L"\\InstallInfo").c_str(), |
| 1023 KEY_QUERY_VALUE) != ERROR_SUCCESS || | 1023 KEY_QUERY_VALUE) != ERROR_SUCCESS || |
| 1024 key.ReadValue(kReinstallCommand, &command) != ERROR_SUCCESS) { | 1024 key.ReadValue(kReinstallCommand, &command) != ERROR_SUCCESS) { |
| 1025 continue; | 1025 continue; |
| 1026 } | 1026 } |
| 1027 if (!name.empty() && !command.empty() && | 1027 if (!name.empty() && !command.empty() && |
| 1028 name.find(dist->GetApplicationName()) == string16::npos) | 1028 name.find(dist->GetBaseAppName()) == string16::npos) |
| 1029 (*browsers)[name] = command; | 1029 (*browsers)[name] = command; |
| 1030 } | 1030 } |
| 1031 } | 1031 } |
| 1032 | 1032 |
| 1033 string16 ShellUtil::GetCurrentInstallationSuffix(BrowserDistribution* dist, | 1033 string16 ShellUtil::GetCurrentInstallationSuffix(BrowserDistribution* dist, |
| 1034 const string16& chrome_exe) { | 1034 const string16& chrome_exe) { |
| 1035 string16 tested_suffix; | 1035 string16 tested_suffix; |
| 1036 if (!InstallUtil::IsPerUserInstall(chrome_exe.c_str()) || | 1036 if (!InstallUtil::IsPerUserInstall(chrome_exe.c_str()) || |
| 1037 !GetUserSpecificRegistrySuffix(&tested_suffix) || | 1037 !GetUserSpecificRegistrySuffix(&tested_suffix) || |
| 1038 !QuickIsChromeRegistered(dist, chrome_exe, tested_suffix, | 1038 !QuickIsChromeRegistered(dist, chrome_exe, tested_suffix, |
| 1039 CONFIRM_PROGID_REGISTRATION)) { | 1039 CONFIRM_PROGID_REGISTRATION)) { |
| 1040 return string16(); | 1040 return string16(); |
| 1041 } | 1041 } |
| 1042 return tested_suffix; | 1042 return tested_suffix; |
| 1043 } | 1043 } |
| 1044 | 1044 |
| 1045 string16 ShellUtil::GetApplicationName(BrowserDistribution* dist, | |
| 1046 const string16& chrome_exe) { | |
| 1047 string16 app_name = dist->GetBaseAppName(); | |
| 1048 app_name += GetCurrentInstallationSuffix(dist, chrome_exe); | |
| 1049 return app_name; | |
| 1050 } | |
| 1051 | |
| 1045 bool ShellUtil::MakeChromeDefault(BrowserDistribution* dist, | 1052 bool ShellUtil::MakeChromeDefault(BrowserDistribution* dist, |
| 1046 int shell_change, | 1053 int shell_change, |
| 1047 const string16& chrome_exe, | 1054 const string16& chrome_exe, |
| 1048 bool elevate_if_not_admin) { | 1055 bool elevate_if_not_admin) { |
| 1049 if (!dist->CanSetAsDefault()) | 1056 if (!dist->CanSetAsDefault()) |
| 1050 return false; | 1057 return false; |
| 1051 | 1058 |
| 1052 // Windows 8 does not permit making a browser default just like that. | 1059 // Windows 8 does not permit making a browser default just like that. |
| 1053 // This process needs to be routed through the system's UI. Use | 1060 // This process needs to be routed through the system's UI. Use |
| 1054 // ShowMakeChromeDefaultSystemUI instead (below). | 1061 // ShowMakeChromeDefaultSystemUI instead (below). |
| 1055 if (base::win::GetVersion() >= base::win::VERSION_WIN8) { | 1062 if (base::win::GetVersion() >= base::win::VERSION_WIN8) { |
| 1056 NOTREACHED(); | 1063 NOTREACHED(); |
| 1057 return false; | 1064 return false; |
| 1058 } | 1065 } |
| 1059 | 1066 |
| 1060 if (!ShellUtil::RegisterChromeBrowser( | 1067 if (!ShellUtil::RegisterChromeBrowser( |
| 1061 dist, chrome_exe, string16(), elevate_if_not_admin)) { | 1068 dist, chrome_exe, string16(), elevate_if_not_admin)) { |
| 1062 return false; | 1069 return false; |
| 1063 } | 1070 } |
| 1064 | 1071 |
| 1065 bool ret = true; | 1072 bool ret = true; |
| 1066 // First use the new "recommended" way on Vista to make Chrome default | 1073 // First use the new "recommended" way on Vista to make Chrome default |
| 1067 // browser. | 1074 // browser. |
| 1068 string16 app_name = dist->GetApplicationName(); | 1075 string16 app_name = GetApplicationName(dist, chrome_exe); |
| 1069 const string16 app_suffix( | |
| 1070 ShellUtil::GetCurrentInstallationSuffix(dist, chrome_exe)); | |
| 1071 app_name += app_suffix; | |
| 1072 | 1076 |
| 1073 if (base::win::GetVersion() >= base::win::VERSION_VISTA) { | 1077 if (base::win::GetVersion() >= base::win::VERSION_VISTA) { |
| 1074 // On Windows Vista and Win7 we still can set ourselves via the | 1078 // On Windows Vista and Win7 we still can set ourselves via the |
| 1075 // the IApplicationAssociationRegistration interface. | 1079 // the IApplicationAssociationRegistration interface. |
| 1076 VLOG(1) << "Registering Chrome as default browser on Vista."; | 1080 VLOG(1) << "Registering Chrome as default browser on Vista."; |
| 1077 base::win::ScopedComPtr<IApplicationAssociationRegistration> pAAR; | 1081 base::win::ScopedComPtr<IApplicationAssociationRegistration> pAAR; |
| 1078 HRESULT hr = pAAR.CreateInstance(CLSID_ApplicationAssociationRegistration, | 1082 HRESULT hr = pAAR.CreateInstance(CLSID_ApplicationAssociationRegistration, |
| 1079 NULL, CLSCTX_INPROC); | 1083 NULL, CLSCTX_INPROC); |
| 1080 if (SUCCEEDED(hr)) { | 1084 if (SUCCEEDED(hr)) { |
| 1081 for (int i = 0; ShellUtil::kBrowserProtocolAssociations[i] != NULL; i++) { | 1085 for (int i = 0; ShellUtil::kBrowserProtocolAssociations[i] != NULL; i++) { |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 1101 } | 1105 } |
| 1102 } | 1106 } |
| 1103 | 1107 |
| 1104 // Now use the old way to associate Chrome with supported protocols and file | 1108 // Now use the old way to associate Chrome with supported protocols and file |
| 1105 // associations. This should not be required on Vista but since some | 1109 // associations. This should not be required on Vista but since some |
| 1106 // applications still read Software\Classes\http key directly, we have to do | 1110 // applications still read Software\Classes\http key directly, we have to do |
| 1107 // this on Vista also. | 1111 // this on Vista also. |
| 1108 | 1112 |
| 1109 std::list<RegistryEntry*> entries; | 1113 std::list<RegistryEntry*> entries; |
| 1110 STLElementDeleter<std::list<RegistryEntry*> > entries_deleter(&entries); | 1114 STLElementDeleter<std::list<RegistryEntry*> > entries_deleter(&entries); |
| 1111 RegistryEntry::GetUserEntries(dist, chrome_exe, app_suffix, &entries); | 1115 RegistryEntry::GetUserEntries(dist, |
|
grt (UTC plus 2)
2012/06/11 17:51:50
nit: compress args for less vertical space.
gab
2012/06/11 19:33:27
Done.
| |
| 1116 chrome_exe, | |
| 1117 GetCurrentInstallationSuffix(dist, chrome_exe), | |
| 1118 &entries); | |
| 1112 // Change the default browser for current user. | 1119 // Change the default browser for current user. |
| 1113 if ((shell_change & ShellUtil::CURRENT_USER) && | 1120 if ((shell_change & ShellUtil::CURRENT_USER) && |
| 1114 !AddRegistryEntries(HKEY_CURRENT_USER, entries)) { | 1121 !AddRegistryEntries(HKEY_CURRENT_USER, entries)) { |
| 1115 ret = false; | 1122 ret = false; |
| 1116 LOG(ERROR) << "Could not make Chrome default browser (XP/current user)."; | 1123 LOG(ERROR) << "Could not make Chrome default browser (XP/current user)."; |
| 1117 } | 1124 } |
| 1118 | 1125 |
| 1119 // Chrome as default browser at system level. | 1126 // Chrome as default browser at system level. |
| 1120 if ((shell_change & ShellUtil::SYSTEM_LEVEL) && | 1127 if ((shell_change & ShellUtil::SYSTEM_LEVEL) && |
| 1121 !AddRegistryEntries(HKEY_LOCAL_MACHINE, entries)) { | 1128 !AddRegistryEntries(HKEY_LOCAL_MACHINE, entries)) { |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1158 bool ret = true; | 1165 bool ret = true; |
| 1159 // First use the new "recommended" way on Vista to make Chrome default | 1166 // First use the new "recommended" way on Vista to make Chrome default |
| 1160 // protocol handler. | 1167 // protocol handler. |
| 1161 if (base::win::GetVersion() >= base::win::VERSION_VISTA) { | 1168 if (base::win::GetVersion() >= base::win::VERSION_VISTA) { |
| 1162 VLOG(1) << "Registering Chrome as default handler for " << protocol | 1169 VLOG(1) << "Registering Chrome as default handler for " << protocol |
| 1163 << " on Vista."; | 1170 << " on Vista."; |
| 1164 base::win::ScopedComPtr<IApplicationAssociationRegistration> pAAR; | 1171 base::win::ScopedComPtr<IApplicationAssociationRegistration> pAAR; |
| 1165 HRESULT hr = pAAR.CreateInstance(CLSID_ApplicationAssociationRegistration, | 1172 HRESULT hr = pAAR.CreateInstance(CLSID_ApplicationAssociationRegistration, |
| 1166 NULL, CLSCTX_INPROC); | 1173 NULL, CLSCTX_INPROC); |
| 1167 if (SUCCEEDED(hr)) { | 1174 if (SUCCEEDED(hr)) { |
| 1168 string16 app_name = dist->GetApplicationName(); | 1175 string16 app_name = GetApplicationName(dist, chrome_exe); |
| 1169 app_name += ShellUtil::GetCurrentInstallationSuffix(dist, chrome_exe); | |
| 1170 | |
| 1171 hr = pAAR->SetAppAsDefault(app_name.c_str(), protocol.c_str(), | 1176 hr = pAAR->SetAppAsDefault(app_name.c_str(), protocol.c_str(), |
| 1172 AT_URLPROTOCOL); | 1177 AT_URLPROTOCOL); |
| 1173 } | 1178 } |
| 1174 if (!SUCCEEDED(hr)) { | 1179 if (!SUCCEEDED(hr)) { |
| 1175 ret = false; | 1180 ret = false; |
| 1176 LOG(ERROR) << "Could not make Chrome default protocol client (Vista):" | 1181 LOG(ERROR) << "Could not make Chrome default protocol client (Vista):" |
| 1177 << " HRESULT=" << hr << "."; | 1182 << " HRESULT=" << hr << "."; |
| 1178 } | 1183 } |
| 1179 } | 1184 } |
| 1180 | 1185 |
| (...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1409 chrome_exe.c_str(), | 1414 chrome_exe.c_str(), |
| 1410 shortcut.c_str(), | 1415 shortcut.c_str(), |
| 1411 chrome_path.c_str(), | 1416 chrome_path.c_str(), |
| 1412 arguments.c_str(), | 1417 arguments.c_str(), |
| 1413 description.c_str(), | 1418 description.c_str(), |
| 1414 icon_path.c_str(), | 1419 icon_path.c_str(), |
| 1415 icon_index, | 1420 icon_index, |
| 1416 dist->GetBrowserAppId().c_str(), | 1421 dist->GetBrowserAppId().c_str(), |
| 1417 ConvertShellUtilShortcutOptionsToFileUtil(options)); | 1422 ConvertShellUtilShortcutOptionsToFileUtil(options)); |
| 1418 } | 1423 } |
| OLD | NEW |