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

Unified Diff: chrome/browser/profiles/profile_shortcut_manager_win.cc

Issue 10836247: Refactor ShellUtil shortcut code -- single multi-purpose methods as opposed to many slighlty diffe… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: brand new shell_util shortcut API + TESTS :)! Created 8 years, 3 months 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
Index: chrome/browser/profiles/profile_shortcut_manager_win.cc
diff --git a/chrome/browser/profiles/profile_shortcut_manager_win.cc b/chrome/browser/profiles/profile_shortcut_manager_win.cc
index 261944906e32ed3cc543cb5d7de2c7861d2313ce..f8d1341f27a0f446979eee268765ce5a76b17474 100644
--- a/chrome/browser/profiles/profile_shortcut_manager_win.cc
+++ b/chrome/browser/profiles/profile_shortcut_manager_win.cc
@@ -32,6 +32,7 @@
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/gfx/icon_util.h"
+#include "ui/gfx/image/image.h"
using content::BrowserThread;
@@ -120,9 +121,10 @@ void RenameChromeDesktopShortcutForProfile(
const string16& old_shortcut_file,
const string16& new_shortcut_file) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
+ BrowserDistribution* dist = BrowserDistribution::GetDistribution();
FilePath shortcut_path;
- if (ShellUtil::GetDesktopPath(false, // User's directory instead of system.
- &shortcut_path)) {
+ if (ShellUtil::GetShortcutPath(ShellUtil::SHORTCUT_DESKTOP, dist, false,
+ &shortcut_path)) {
FilePath old_shortcut_path = shortcut_path.Append(old_shortcut_file);
FilePath new_shortcut_path = shortcut_path.Append(new_shortcut_file);
if (!file_util::Move(old_shortcut_path, new_shortcut_path))
@@ -142,25 +144,28 @@ void CreateOrUpdateProfileDesktopShortcut(
CreateChromeDesktopShortcutIconForProfile(profile_path, avatar_image);
FilePath chrome_exe;
- if (!PathService::Get(base::FILE_EXE, &chrome_exe))
+ if (!PathService::Get(base::FILE_EXE, &chrome_exe)) {
+ NOTREACHED();
return;
+ }
BrowserDistribution* dist = BrowserDistribution::GetDistribution();
- if (!dist)
+ if (!dist) {
+ NOTREACHED();
robertshield 2012/10/02 13:08:04 we don't check the return value of GetDistribution
gab 2012/10/03 15:14:59 True, removed!
return;
- string16 description(dist->GetAppDescription());
-
- uint32 options = create ? ShellUtil::SHORTCUT_CREATE_ALWAYS :
- ShellUtil::SHORTCUT_NO_OPTIONS;
- ShellUtil::CreateChromeDesktopShortcut(
- dist,
- chrome_exe.value(),
- description,
- profile_name,
- CreateProfileShortcutFlags(profile_path),
- shortcut_icon.empty() ? chrome_exe.value() : shortcut_icon.value(),
- shortcut_icon.empty() ? dist->GetIconIndex() : 0,
- ShellUtil::CURRENT_USER,
- options);
+ }
+
+ ShellUtil::ChromeShortcutProperties properties;
+ properties.set_target(chrome_exe);
+ properties.set_arguments(CreateProfileShortcutFlags(profile_path));
+ if (!shortcut_icon.empty())
+ properties.set_icon(shortcut_icon);
+ properties.set_shortcut_name(
+ ProfileShortcutManager::GetShortcutNameForProfile(profile_name));
+ ShellUtil::ChromeShortcutOperation operation =
+ create ? ShellUtil::SHORTCUT_CREATE_ALWAYS :
+ ShellUtil::SHORTCUT_REPLACE_EXISTING;
+ ShellUtil::CreateOrUpdateChromeShortcut(
+ ShellUtil::SHORTCUT_DESKTOP, dist, properties, operation);
}
} // namespace
@@ -207,6 +212,17 @@ ProfileShortcutManager* ProfileShortcutManager::Create(
return new ProfileShortcutManagerWin(manager);
}
+// static
+string16 ProfileShortcutManager::GetShortcutNameForProfile(
+ const string16& profile_name) {
+ BrowserDistribution* dist = BrowserDistribution::GetDistribution();
+ string16 shortcut_name(dist->GetAppShortCutName());
+ shortcut_name.append(L" (");
+ shortcut_name.append(profile_name);
+ shortcut_name.append(L")");
+ return shortcut_name;
+}
+
ProfileShortcutManagerWin::ProfileShortcutManagerWin(ProfileManager* manager)
: profile_manager_(manager) {
profile_manager_->GetProfileInfoCache().AddObserver(this);
@@ -251,17 +267,15 @@ void ProfileShortcutManagerWin::OnProfileWasRemoved(
profile_name_updated = profile_name;
BrowserDistribution* dist = BrowserDistribution::GetDistribution();
- string16 shortcut;
- // If we can find the shortcut, delete it
- if (ShellUtil::GetChromeShortcutName(dist, false,
- profile_name_updated, &shortcut)) {
- std::vector<string16> appended_names(1, shortcut);
- BrowserThread::PostTask(
- BrowserThread::FILE, FROM_HERE,
- base::Bind(&CallBoolFunction, base::Bind(
- &ShellUtil::RemoveChromeDesktopShortcutsWithAppendedNames,
- appended_names)));
- }
+ ShellUtil::ChromeShortcutProperties shortcut_properties;
+ shortcut_properties.set_shortcut_name(
+ GetShortcutNameForProfile(profile_name_updated));
+ BrowserThread::PostTask(
+ BrowserThread::FILE, FROM_HERE,
+ base::Bind(&CallBoolFunction, base::Bind(
+ &ShellUtil::RemoveChromeShortcut, ShellUtil::SHORTCUT_DESKTOP,
+ dist, shortcut_properties)));
+
FilePath icon_path = profile_path.AppendASCII(kProfileIconFileName);
BrowserThread::PostTask(
BrowserThread::FILE, FROM_HERE,
@@ -294,19 +308,14 @@ void ProfileShortcutManagerWin::StartProfileShortcutNameChange(
profile_manager_->GetProfileInfoCache().
GetNameOfProfileAtIndex(profile_index);
- string16 old_shortcut_file;
- string16 new_shortcut_file;
BrowserDistribution* dist = BrowserDistribution::GetDistribution();
- if (ShellUtil::GetChromeShortcutName(
- dist, false, old_profile_name, &old_shortcut_file) &&
- ShellUtil::GetChromeShortcutName(
- dist, false, new_profile_name, &new_shortcut_file)) {
- BrowserThread::PostTask(
- BrowserThread::FILE, FROM_HERE,
- base::Bind(&RenameChromeDesktopShortcutForProfile,
- old_shortcut_file,
- new_shortcut_file));
- }
+ string16 old_shortcut_file(GetShortcutNameForProfile(old_profile_name));
+ string16 new_shortcut_file(GetShortcutNameForProfile(new_profile_name));
+ BrowserThread::PostTask(
+ BrowserThread::FILE, FROM_HERE,
+ base::Bind(&RenameChromeDesktopShortcutForProfile,
+ old_shortcut_file,
+ new_shortcut_file));
}
FilePath ProfileShortcutManagerWin::GetOtherProfilePath(

Powered by Google App Engine
This is Rietveld 408576698