OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 #include "chrome/browser/web_applications/web_app.h" | 5 #include "chrome/browser/web_applications/web_app.h" |
6 | 6 |
7 #if defined(OS_WIN) | 7 #if defined(OS_WIN) |
8 #include <ShellAPI.h> | 8 #include <ShellAPI.h> |
9 #endif // defined(OS_WIN) | 9 #endif // defined(OS_WIN) |
10 | 10 |
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
348 FilePath file_name = GetSanitizedFileName(shortcut_info_.title); | 348 FilePath file_name = GetSanitizedFileName(shortcut_info_.title); |
349 | 349 |
350 // Creates an ico file to use with shortcut. | 350 // Creates an ico file to use with shortcut. |
351 FilePath icon_file = web_app_path_.Append(file_name).ReplaceExtension( | 351 FilePath icon_file = web_app_path_.Append(file_name).ReplaceExtension( |
352 FILE_PATH_LITERAL(".ico")); | 352 FILE_PATH_LITERAL(".ico")); |
353 if (!CheckAndSaveIcon(icon_file, shortcut_info_.favicon)) { | 353 if (!CheckAndSaveIcon(icon_file, shortcut_info_.favicon)) { |
354 NOTREACHED(); | 354 NOTREACHED(); |
355 return false; | 355 return false; |
356 } | 356 } |
357 | 357 |
358 std::wstring chrome_exe; | 358 FilePath chrome_exe; |
359 if (!PathService::Get(base::FILE_EXE, &chrome_exe)) { | 359 if (!PathService::Get(base::FILE_EXE, &chrome_exe)) { |
360 NOTREACHED(); | 360 NOTREACHED(); |
361 return false; | 361 return false; |
362 } | 362 } |
363 | 363 |
364 // Working directory. | 364 // Working directory. |
365 std::wstring chrome_folder = file_util::GetDirectoryFromPath(chrome_exe); | 365 FilePath chrome_folder = chrome_exe.DirName(); |
366 | 366 |
367 std::string switches = | 367 std::string switches = |
368 ShellIntegration::GetCommandLineArgumentsCommon(shortcut_info_.url, | 368 ShellIntegration::GetCommandLineArgumentsCommon(shortcut_info_.url, |
369 shortcut_info_.extension_id); | 369 shortcut_info_.extension_id); |
370 std::wstring wide_switchs(UTF8ToWide(switches)); | 370 std::wstring wide_switchs(UTF8ToWide(switches)); |
371 | 371 |
372 // Sanitize description | 372 // Sanitize description |
373 if (shortcut_info_.description.length() >= MAX_PATH) | 373 if (shortcut_info_.description.length() >= MAX_PATH) |
374 shortcut_info_.description.resize(MAX_PATH - 1); | 374 shortcut_info_.description.resize(MAX_PATH - 1); |
375 | 375 |
(...skipping 10 matching lines...) Expand all Loading... |
386 ReplaceExtension(FILE_PATH_LITERAL(".lnk")); | 386 ReplaceExtension(FILE_PATH_LITERAL(".lnk")); |
387 | 387 |
388 int unique_number = download_util::GetUniquePathNumber(shortcut_file); | 388 int unique_number = download_util::GetUniquePathNumber(shortcut_file); |
389 if (unique_number == -1) { | 389 if (unique_number == -1) { |
390 success = false; | 390 success = false; |
391 continue; | 391 continue; |
392 } else if (unique_number > 0) { | 392 } else if (unique_number > 0) { |
393 download_util::AppendNumberToPath(&shortcut_file, unique_number); | 393 download_util::AppendNumberToPath(&shortcut_file, unique_number); |
394 } | 394 } |
395 | 395 |
396 success &= file_util::CreateShortcutLink(chrome_exe.c_str(), | 396 success &= file_util::CreateShortcutLink(chrome_exe.value().c_str(), |
397 shortcut_file.value().c_str(), | 397 shortcut_file.value().c_str(), |
398 chrome_folder.c_str(), | 398 chrome_folder.value().c_str(), |
399 wide_switchs.c_str(), | 399 wide_switchs.c_str(), |
400 shortcut_info_.description.c_str(), | 400 shortcut_info_.description.c_str(), |
401 icon_file.value().c_str(), | 401 icon_file.value().c_str(), |
402 0, | 402 0, |
403 app_id.c_str()); | 403 app_id.c_str()); |
404 | 404 |
405 // Any shortcut would work for the pinning. We use the first one. | 405 // Any shortcut would work for the pinning. We use the first one. |
406 if (success && pin_to_taskbar && shortcut_to_pin.empty()) | 406 if (success && pin_to_taskbar && shortcut_to_pin.empty()) |
407 shortcut_to_pin = shortcut_file; | 407 shortcut_to_pin = shortcut_file; |
408 } | 408 } |
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
757 | 757 |
758 void UpdateShortcutForTabContents(TabContents* tab_contents) { | 758 void UpdateShortcutForTabContents(TabContents* tab_contents) { |
759 #if defined(OS_WIN) | 759 #if defined(OS_WIN) |
760 // UpdateShortcutWorker will delete itself when it's done. | 760 // UpdateShortcutWorker will delete itself when it's done. |
761 UpdateShortcutWorker* worker = new UpdateShortcutWorker(tab_contents); | 761 UpdateShortcutWorker* worker = new UpdateShortcutWorker(tab_contents); |
762 worker->Run(); | 762 worker->Run(); |
763 #endif // defined(OS_WIN) | 763 #endif // defined(OS_WIN) |
764 } | 764 } |
765 | 765 |
766 }; // namespace web_app | 766 }; // namespace web_app |
OLD | NEW |