Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(244)

Side by Side Diff: chrome/installer/util/shell_util.cc

Issue 10446111: Abstract suffixing logic away from GetApplicationName (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase on suffix@r142211 Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/installer/util/shell_util.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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 623 matching lines...) Expand 10 before | Expand all | Expand 10 after
1019 for (int i = 0; i < arraysize(roots); ++i) { 1019 for (int i = 0; i < arraysize(roots); ++i) {
1020 const HKEY root = roots[i]; 1020 const HKEY root = roots[i];
1021 for (base::win::RegistryKeyIterator iter(root, base_key.c_str()); 1021 for (base::win::RegistryKeyIterator iter(root, base_key.c_str());
1022 iter.Valid(); ++iter) { 1022 iter.Valid(); ++iter) {
1023 client_path.assign(base_key).append(1, L'\\').append(iter.Name()); 1023 client_path.assign(base_key).append(1, L'\\').append(iter.Name());
1024 // Read the browser's name (localized according to install language). 1024 // Read the browser's name (localized according to install language).
1025 if (key.Open(root, client_path.c_str(), 1025 if (key.Open(root, client_path.c_str(),
1026 KEY_QUERY_VALUE) != ERROR_SUCCESS || 1026 KEY_QUERY_VALUE) != ERROR_SUCCESS ||
1027 key.ReadValue(NULL, &name) != ERROR_SUCCESS || 1027 key.ReadValue(NULL, &name) != ERROR_SUCCESS ||
1028 name.empty() || 1028 name.empty() ||
1029 name.find(dist->GetApplicationName()) != string16::npos) { 1029 name.find(dist->GetBaseAppName()) != string16::npos) {
1030 continue; 1030 continue;
1031 } 1031 }
1032 // Read the browser's reinstall command. 1032 // Read the browser's reinstall command.
1033 if (key.Open(root, (client_path + L"\\InstallInfo").c_str(), 1033 if (key.Open(root, (client_path + L"\\InstallInfo").c_str(),
1034 KEY_QUERY_VALUE) == ERROR_SUCCESS && 1034 KEY_QUERY_VALUE) == ERROR_SUCCESS &&
1035 key.ReadValue(kReinstallCommand, &command) == ERROR_SUCCESS && 1035 key.ReadValue(kReinstallCommand, &command) == ERROR_SUCCESS &&
1036 !command.empty()) { 1036 !command.empty()) {
1037 (*browsers)[name] = command; 1037 (*browsers)[name] = command;
1038 } 1038 }
1039 } 1039 }
1040 } 1040 }
1041 } 1041 }
1042 1042
1043 string16 ShellUtil::GetCurrentInstallationSuffix(BrowserDistribution* dist, 1043 string16 ShellUtil::GetCurrentInstallationSuffix(BrowserDistribution* dist,
1044 const string16& chrome_exe) { 1044 const string16& chrome_exe) {
1045 string16 tested_suffix; 1045 string16 tested_suffix;
1046 if (!InstallUtil::IsPerUserInstall(chrome_exe.c_str()) || 1046 if (!InstallUtil::IsPerUserInstall(chrome_exe.c_str()) ||
1047 !GetUserSpecificRegistrySuffix(&tested_suffix) || 1047 !GetUserSpecificRegistrySuffix(&tested_suffix) ||
1048 !QuickIsChromeRegistered(dist, chrome_exe, tested_suffix, 1048 !QuickIsChromeRegistered(dist, chrome_exe, tested_suffix,
1049 CONFIRM_PROGID_REGISTRATION)) { 1049 CONFIRM_PROGID_REGISTRATION)) {
1050 return string16(); 1050 return string16();
1051 } 1051 }
1052 return tested_suffix; 1052 return tested_suffix;
1053 } 1053 }
1054 1054
1055 string16 ShellUtil::GetApplicationName(BrowserDistribution* dist,
1056 const string16& chrome_exe) {
1057 string16 app_name = dist->GetBaseAppName();
1058 app_name += GetCurrentInstallationSuffix(dist, chrome_exe);
1059 return app_name;
1060 }
1061
1055 bool ShellUtil::MakeChromeDefault(BrowserDistribution* dist, 1062 bool ShellUtil::MakeChromeDefault(BrowserDistribution* dist,
1056 int shell_change, 1063 int shell_change,
1057 const string16& chrome_exe, 1064 const string16& chrome_exe,
1058 bool elevate_if_not_admin) { 1065 bool elevate_if_not_admin) {
1059 if (!dist->CanSetAsDefault()) 1066 if (!dist->CanSetAsDefault())
1060 return false; 1067 return false;
1061 1068
1062 // Windows 8 does not permit making a browser default just like that. 1069 // Windows 8 does not permit making a browser default just like that.
1063 // This process needs to be routed through the system's UI. Use 1070 // This process needs to be routed through the system's UI. Use
1064 // ShowMakeChromeDefaultSystemUI instead (below). 1071 // ShowMakeChromeDefaultSystemUI instead (below).
1065 if (base::win::GetVersion() >= base::win::VERSION_WIN8) { 1072 if (base::win::GetVersion() >= base::win::VERSION_WIN8) {
1066 NOTREACHED(); 1073 NOTREACHED();
1067 return false; 1074 return false;
1068 } 1075 }
1069 1076
1070 if (!ShellUtil::RegisterChromeBrowser( 1077 if (!ShellUtil::RegisterChromeBrowser(
1071 dist, chrome_exe, string16(), elevate_if_not_admin)) { 1078 dist, chrome_exe, string16(), elevate_if_not_admin)) {
1072 return false; 1079 return false;
1073 } 1080 }
1074 1081
1075 bool ret = true; 1082 bool ret = true;
1076 // First use the new "recommended" way on Vista to make Chrome default 1083 // First use the new "recommended" way on Vista to make Chrome default
1077 // browser. 1084 // browser.
1078 string16 app_name = dist->GetApplicationName(); 1085 string16 app_name = GetApplicationName(dist, chrome_exe);
1079 const string16 app_suffix(
1080 ShellUtil::GetCurrentInstallationSuffix(dist, chrome_exe));
1081 app_name += app_suffix;
1082 1086
1083 if (base::win::GetVersion() >= base::win::VERSION_VISTA) { 1087 if (base::win::GetVersion() >= base::win::VERSION_VISTA) {
1084 // On Windows Vista and Win7 we still can set ourselves via the 1088 // On Windows Vista and Win7 we still can set ourselves via the
1085 // the IApplicationAssociationRegistration interface. 1089 // the IApplicationAssociationRegistration interface.
1086 VLOG(1) << "Registering Chrome as default browser on Vista."; 1090 VLOG(1) << "Registering Chrome as default browser on Vista.";
1087 base::win::ScopedComPtr<IApplicationAssociationRegistration> pAAR; 1091 base::win::ScopedComPtr<IApplicationAssociationRegistration> pAAR;
1088 HRESULT hr = pAAR.CreateInstance(CLSID_ApplicationAssociationRegistration, 1092 HRESULT hr = pAAR.CreateInstance(CLSID_ApplicationAssociationRegistration,
1089 NULL, CLSCTX_INPROC); 1093 NULL, CLSCTX_INPROC);
1090 if (SUCCEEDED(hr)) { 1094 if (SUCCEEDED(hr)) {
1091 for (int i = 0; ShellUtil::kBrowserProtocolAssociations[i] != NULL; i++) { 1095 for (int i = 0; ShellUtil::kBrowserProtocolAssociations[i] != NULL; i++) {
(...skipping 19 matching lines...) Expand all
1111 } 1115 }
1112 } 1116 }
1113 1117
1114 // Now use the old way to associate Chrome with supported protocols and file 1118 // Now use the old way to associate Chrome with supported protocols and file
1115 // associations. This should not be required on Vista but since some 1119 // associations. This should not be required on Vista but since some
1116 // applications still read Software\Classes\http key directly, we have to do 1120 // applications still read Software\Classes\http key directly, we have to do
1117 // this on Vista also. 1121 // this on Vista also.
1118 1122
1119 std::list<RegistryEntry*> entries; 1123 std::list<RegistryEntry*> entries;
1120 STLElementDeleter<std::list<RegistryEntry*> > entries_deleter(&entries); 1124 STLElementDeleter<std::list<RegistryEntry*> > entries_deleter(&entries);
1121 RegistryEntry::GetUserEntries(dist, chrome_exe, app_suffix, &entries); 1125 RegistryEntry::GetUserEntries(
1126 dist, chrome_exe, GetCurrentInstallationSuffix(dist, chrome_exe),
1127 &entries);
1122 // Change the default browser for current user. 1128 // Change the default browser for current user.
1123 if ((shell_change & ShellUtil::CURRENT_USER) && 1129 if ((shell_change & ShellUtil::CURRENT_USER) &&
1124 !AddRegistryEntries(HKEY_CURRENT_USER, entries)) { 1130 !AddRegistryEntries(HKEY_CURRENT_USER, entries)) {
1125 ret = false; 1131 ret = false;
1126 LOG(ERROR) << "Could not make Chrome default browser (XP/current user)."; 1132 LOG(ERROR) << "Could not make Chrome default browser (XP/current user).";
1127 } 1133 }
1128 1134
1129 // Chrome as default browser at system level. 1135 // Chrome as default browser at system level.
1130 if ((shell_change & ShellUtil::SYSTEM_LEVEL) && 1136 if ((shell_change & ShellUtil::SYSTEM_LEVEL) &&
1131 !AddRegistryEntries(HKEY_LOCAL_MACHINE, entries)) { 1137 !AddRegistryEntries(HKEY_LOCAL_MACHINE, entries)) {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1168 bool ret = true; 1174 bool ret = true;
1169 // First use the new "recommended" way on Vista to make Chrome default 1175 // First use the new "recommended" way on Vista to make Chrome default
1170 // protocol handler. 1176 // protocol handler.
1171 if (base::win::GetVersion() >= base::win::VERSION_VISTA) { 1177 if (base::win::GetVersion() >= base::win::VERSION_VISTA) {
1172 VLOG(1) << "Registering Chrome as default handler for " << protocol 1178 VLOG(1) << "Registering Chrome as default handler for " << protocol
1173 << " on Vista."; 1179 << " on Vista.";
1174 base::win::ScopedComPtr<IApplicationAssociationRegistration> pAAR; 1180 base::win::ScopedComPtr<IApplicationAssociationRegistration> pAAR;
1175 HRESULT hr = pAAR.CreateInstance(CLSID_ApplicationAssociationRegistration, 1181 HRESULT hr = pAAR.CreateInstance(CLSID_ApplicationAssociationRegistration,
1176 NULL, CLSCTX_INPROC); 1182 NULL, CLSCTX_INPROC);
1177 if (SUCCEEDED(hr)) { 1183 if (SUCCEEDED(hr)) {
1178 string16 app_name = dist->GetApplicationName(); 1184 string16 app_name = GetApplicationName(dist, chrome_exe);
1179 app_name += ShellUtil::GetCurrentInstallationSuffix(dist, chrome_exe);
1180
1181 hr = pAAR->SetAppAsDefault(app_name.c_str(), protocol.c_str(), 1185 hr = pAAR->SetAppAsDefault(app_name.c_str(), protocol.c_str(),
1182 AT_URLPROTOCOL); 1186 AT_URLPROTOCOL);
1183 } 1187 }
1184 if (!SUCCEEDED(hr)) { 1188 if (!SUCCEEDED(hr)) {
1185 ret = false; 1189 ret = false;
1186 LOG(ERROR) << "Could not make Chrome default protocol client (Vista):" 1190 LOG(ERROR) << "Could not make Chrome default protocol client (Vista):"
1187 << " HRESULT=" << hr << "."; 1191 << " HRESULT=" << hr << ".";
1188 } 1192 }
1189 } 1193 }
1190 1194
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
1416 chrome_exe.c_str(), 1420 chrome_exe.c_str(),
1417 shortcut.c_str(), 1421 shortcut.c_str(),
1418 chrome_path.c_str(), 1422 chrome_path.c_str(),
1419 arguments.c_str(), 1423 arguments.c_str(),
1420 description.c_str(), 1424 description.c_str(),
1421 icon_path.c_str(), 1425 icon_path.c_str(),
1422 icon_index, 1426 icon_index,
1423 dist->GetBrowserAppId().c_str(), 1427 dist->GetBrowserAppId().c_str(),
1424 ConvertShellUtilShortcutOptionsToFileUtil(options)); 1428 ConvertShellUtilShortcutOptionsToFileUtil(options));
1425 } 1429 }
OLDNEW
« no previous file with comments | « chrome/installer/util/shell_util.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698