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 #include "chrome/browser/shell_integration.h" | 5 #include "chrome/browser/shell_integration.h" |
6 | 6 |
7 #include <windows.h> | 7 #include <windows.h> |
8 #include <shlwapi.h> | 8 #include <shlwapi.h> |
9 #include <shobjidl.h> | 9 #include <shobjidl.h> |
10 #include <propkey.h> // Needs to come after shobjidl.h. | 10 #include <propkey.h> // Needs to come after shobjidl.h. |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 | 84 |
85 base::string16 GetAppListAppName() { | 85 base::string16 GetAppListAppName() { |
86 BrowserDistribution* dist = BrowserDistribution::GetDistribution(); | 86 BrowserDistribution* dist = BrowserDistribution::GetDistribution(); |
87 base::string16 app_name(dist->GetBaseAppId()); | 87 base::string16 app_name(dist->GetBaseAppId()); |
88 app_name.append(kAppListAppNameSuffix); | 88 app_name.append(kAppListAppNameSuffix); |
89 return app_name; | 89 return app_name; |
90 } | 90 } |
91 | 91 |
92 // Gets expected app id for given Chrome (based on |command_line| and | 92 // Gets expected app id for given Chrome (based on |command_line| and |
93 // |is_per_user_install|). | 93 // |is_per_user_install|). |
94 base::string16 GetExpectedAppId(const CommandLine& command_line, | 94 base::string16 GetExpectedAppId(const base::CommandLine& command_line, |
95 bool is_per_user_install) { | 95 bool is_per_user_install) { |
96 base::FilePath user_data_dir; | 96 base::FilePath user_data_dir; |
97 if (command_line.HasSwitch(switches::kUserDataDir)) | 97 if (command_line.HasSwitch(switches::kUserDataDir)) |
98 user_data_dir = command_line.GetSwitchValuePath(switches::kUserDataDir); | 98 user_data_dir = command_line.GetSwitchValuePath(switches::kUserDataDir); |
99 else | 99 else |
100 chrome::GetDefaultUserDataDirectory(&user_data_dir); | 100 chrome::GetDefaultUserDataDirectory(&user_data_dir); |
101 // Adjust with any policy that overrides any other way to set the path. | 101 // Adjust with any policy that overrides any other way to set the path. |
102 policy::path_parser::CheckUserDataDirPolicy(&user_data_dir); | 102 policy::path_parser::CheckUserDataDirPolicy(&user_data_dir); |
103 DCHECK(!user_data_dir.empty()); | 103 DCHECK(!user_data_dir.empty()); |
104 | 104 |
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
454 base::string16 arguments; | 454 base::string16 arguments; |
455 base::win::ScopedPropVariant propvariant; | 455 base::win::ScopedPropVariant propvariant; |
456 for (base::FilePath shortcut = shortcuts_enum.Next(); !shortcut.empty(); | 456 for (base::FilePath shortcut = shortcuts_enum.Next(); !shortcut.empty(); |
457 shortcut = shortcuts_enum.Next()) { | 457 shortcut = shortcuts_enum.Next()) { |
458 // TODO(gab): Use ProgramCompare instead of comparing FilePaths below once | 458 // TODO(gab): Use ProgramCompare instead of comparing FilePaths below once |
459 // it is fixed to work with FilePaths with spaces. | 459 // it is fixed to work with FilePaths with spaces. |
460 if (!base::win::ResolveShortcut(shortcut, &target_path, &arguments) || | 460 if (!base::win::ResolveShortcut(shortcut, &target_path, &arguments) || |
461 chrome_exe != target_path) { | 461 chrome_exe != target_path) { |
462 continue; | 462 continue; |
463 } | 463 } |
464 CommandLine command_line(CommandLine::FromString(base::StringPrintf( | 464 base::CommandLine command_line( |
465 L"\"%ls\" %ls", target_path.value().c_str(), arguments.c_str()))); | 465 base::CommandLine::FromString(base::StringPrintf( |
| 466 L"\"%ls\" %ls", target_path.value().c_str(), arguments.c_str()))); |
466 | 467 |
467 // Get the expected AppId for this Chrome shortcut. | 468 // Get the expected AppId for this Chrome shortcut. |
468 base::string16 expected_app_id( | 469 base::string16 expected_app_id( |
469 GetExpectedAppId(command_line, is_per_user_install)); | 470 GetExpectedAppId(command_line, is_per_user_install)); |
470 if (expected_app_id.empty()) | 471 if (expected_app_id.empty()) |
471 continue; | 472 continue; |
472 | 473 |
473 // Load the shortcut. | 474 // Load the shortcut. |
474 base::win::ScopedComPtr<IShellLink> shell_link; | 475 base::win::ScopedComPtr<IShellLink> shell_link; |
475 base::win::ScopedComPtr<IPersistFile> persist_file; | 476 base::win::ScopedComPtr<IPersistFile> persist_file; |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
575 } | 576 } |
576 | 577 |
577 shortcut = shortcut.Append(shortcut_name).Append(shortcut_name + | 578 shortcut = shortcut.Append(shortcut_name).Append(shortcut_name + |
578 installer::kLnkExt); | 579 installer::kLnkExt); |
579 if (base::PathExists(shortcut)) | 580 if (base::PathExists(shortcut)) |
580 return shortcut; | 581 return shortcut; |
581 } | 582 } |
582 | 583 |
583 return base::FilePath(); | 584 return base::FilePath(); |
584 } | 585 } |
OLD | NEW |