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 |