| Index: chrome/installer/util/shell_util.cc
|
| ===================================================================
|
| --- chrome/installer/util/shell_util.cc (revision 167785)
|
| +++ chrome/installer/util/shell_util.cc (working copy)
|
| @@ -1847,6 +1847,37 @@
|
| return true;
|
| }
|
|
|
| +void ShellUtil::RemoveChromeTaskbarShortcuts(const string16& chrome_exe) {
|
| + if (base::win::GetVersion() < base::win::VERSION_WIN7)
|
| + return;
|
| +
|
| + FilePath taskbar_pins_path;
|
| + if (!PathService::Get(base::DIR_TASKBAR_PINS, &taskbar_pins_path) ||
|
| + !file_util::PathExists(taskbar_pins_path)) {
|
| + LOG(ERROR) << "Couldn't find path to taskbar pins.";
|
| + return;
|
| + }
|
| +
|
| + file_util::FileEnumerator shortcuts_enum(
|
| + taskbar_pins_path, false,
|
| + file_util::FileEnumerator::FILES, FILE_PATH_LITERAL("*.lnk"));
|
| +
|
| + FilePath chrome_path(chrome_exe);
|
| + InstallUtil::ProgramCompare chrome_compare(chrome_path);
|
| + for (FilePath shortcut_path = shortcuts_enum.Next(); !shortcut_path.empty();
|
| + shortcut_path = shortcuts_enum.Next()) {
|
| + FilePath read_target;
|
| + if (!base::win::ResolveShortcut(shortcut_path, &read_target, NULL)) {
|
| + LOG(ERROR) << "Couldn't resolve shortcut at " << shortcut_path.value();
|
| + continue;
|
| + }
|
| + if (chrome_compare.Evaluate(read_target.value())) {
|
| + // Unpin this shortcut if it points to |chrome_exe|.
|
| + base::win::TaskbarUnpinShortcutLink(shortcut_path.value().c_str());
|
| + }
|
| + }
|
| +}
|
| +
|
| void ShellUtil::RemoveChromeStartScreenShortcuts(BrowserDistribution* dist,
|
| const string16& chrome_exe) {
|
| if (base::win::GetVersion() < base::win::VERSION_WIN8)
|
|
|