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

Unified Diff: chrome/installer/util/shell_util.cc

Issue 11368040: Introduce RemoveChromeTaskbarShortcuts() to delete all pinned-to-taskbar shortcuts owned by the uni… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: dear robert@garage Created 8 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« base/path_service_unittest.cc ('K') | « chrome/installer/util/shell_util.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/installer/util/shell_util.cc
diff --git a/chrome/installer/util/shell_util.cc b/chrome/installer/util/shell_util.cc
index 6891fcdfe81c9d5ddc7495ccf77834d1dfe2c580..8bd98ce8d43aad227c0baf92b6834acd21544532 100644
--- a/chrome/installer/util/shell_util.cc
+++ b/chrome/installer/util/shell_util.cc
@@ -1847,6 +1847,37 @@ bool ShellUtil::RemoveChromeShortcut(
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();
brettw 2012/11/06 19:29:32 Can you please DLOG instead?
+ 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)
« base/path_service_unittest.cc ('K') | « chrome/installer/util/shell_util.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698