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

Unified Diff: chrome/browser/ui/webui/options/manage_profile_handler.cc

Issue 11633041: Show a delete shortcut checkbox when editing a profile that has a shortcut. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 7 years, 11 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/ui/webui/options/manage_profile_handler.cc
===================================================================
--- chrome/browser/ui/webui/options/manage_profile_handler.cc (revision 175855)
+++ chrome/browser/ui/webui/options/manage_profile_handler.cc (working copy)
@@ -34,9 +34,20 @@
const char kCreateProfileIconGridName[] = "create-profile-icon-grid";
const char kManageProfileIconGridName[] = "manage-profile-icon-grid";
+// Given |args| from the WebUI, parses value 0 as a FilePath |profile_file_path|
+// and returns true on success.
+bool GetProfilePathFromArgs(const ListValue* args,
+ FilePath* profile_file_path) {
+ const Value* file_path_value;
+ if (!args->Get(0, &file_path_value))
+ return false;
+ return base::GetValueAsFilePath(*file_path_value, profile_file_path);
+}
+
} // namespace
-ManageProfileHandler::ManageProfileHandler() {
+ManageProfileHandler::ManageProfileHandler()
+ : ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {
}
ManageProfileHandler::~ManageProfileHandler() {
@@ -60,7 +71,8 @@
{ "createProfileTitle", IDS_PROFILES_CREATE_TITLE },
{ "createProfileInstructions", IDS_PROFILES_CREATE_INSTRUCTIONS },
{ "createProfileConfirm", IDS_PROFILES_CREATE_CONFIRM },
- { "createProfileShortcut", IDS_PROFILES_CREATE_SHORTCUT_CHKBOX },
+ { "createProfileShortcut", IDS_PROFILES_CREATE_SHORTCUT_CHECKBOX },
+ { "removeProfileShortcut", IDS_PROFILES_REMOVE_SHORTCUT_CHECKBOX },
};
RegisterStrings(localized_strings, resources, arraysize(resources));
@@ -68,6 +80,9 @@
IDS_PROFILES_MANAGE_TITLE);
RegisterTitle(localized_strings, "createProfile",
IDS_PROFILES_CREATE_TITLE);
+
+ localized_strings->SetBoolean("profileShortcutsEnabled",
+ ProfileShortcutManager::IsFeatureEnabled());
}
void ManageProfileHandler::InitializeHandler() {
@@ -92,6 +107,9 @@
web_ui()->RegisterMessageCallback("requestNewProfileDefaults",
base::Bind(&ManageProfileHandler::RequestNewProfileDefaults,
base::Unretained(this)));
+ web_ui()->RegisterMessageCallback("requestHasProfileShortcuts",
+ base::Bind(&ManageProfileHandler::RequestHasProfileShortcuts,
+ base::Unretained(this)));
web_ui()->RegisterMessageCallback("profileIconSelectionChanged",
base::Bind(&ManageProfileHandler::ProfileIconSelectionChanged,
base::Unretained(this)));
@@ -175,10 +193,8 @@
void ManageProfileHandler::SetProfileNameAndIcon(const ListValue* args) {
DCHECK(args);
- const Value* file_path_value;
FilePath profile_file_path;
- if (!args->Get(0, &file_path_value) ||
- !base::GetValueAsFilePath(*file_path_value, &profile_file_path))
+ if (!GetProfilePathFromArgs(args, &profile_file_path))
return;
ProfileInfoCache& cache =
@@ -192,15 +208,22 @@
if (!profile)
return;
- bool shortcut_checked;
- if (!args->GetBoolean(3, &shortcut_checked))
+ std::string shortcut_mode;
+ if (!args->GetString(3, &shortcut_mode))
return;
- if (shortcut_checked) {
+ if (!shortcut_mode.empty()) {
+ DCHECK(ProfileShortcutManager::IsFeatureEnabled());
ProfileShortcutManager* shortcut_manager =
g_browser_process->profile_manager()->profile_shortcut_manager();
- if (shortcut_manager) {
- shortcut_manager->CreateProfileShortcut(
- cache.GetPathOfProfileAtIndex(profile_index));
+ DCHECK(shortcut_manager);
+
+ const FilePath profile_path = cache.GetPathOfProfileAtIndex(profile_index);
+ if (shortcut_mode == "create") {
+ shortcut_manager->CreateProfileShortcut(profile_path);
+ } else if (shortcut_mode == "remove") {
+ shortcut_manager->RemoveProfileShortcuts(profile_path);
+ } else {
+ NOTREACHED() << shortcut_mode;
}
}
@@ -272,10 +295,8 @@
ProfileMetrics::LogProfileDeleteUser(ProfileMetrics::PROFILE_DELETED);
- const Value* file_path_value;
FilePath profile_file_path;
- if (!args->Get(0, &file_path_value) ||
- !base::GetValueAsFilePath(*file_path_value, &profile_file_path))
+ if (!GetProfilePathFromArgs(args, &profile_file_path))
return;
Browser* browser =
@@ -292,15 +313,12 @@
const base::ListValue* args) {
DCHECK(args);
- const Value* file_path_value;
- FilePath file_path;
- if (!args->Get(0, &file_path_value) ||
- !base::GetValueAsFilePath(*file_path_value, &file_path)) {
+ FilePath profile_file_path;
+ if (!GetProfilePathFromArgs(args, &profile_file_path))
return;
- }
// Currently this only supports editing the current profile's info.
- if (file_path != Profile::FromWebUI(web_ui())->GetPath())
+ if (profile_file_path != Profile::FromWebUI(web_ui())->GetPath())
return;
std::string icon_url;
@@ -314,10 +332,10 @@
// text field.
ProfileInfoCache& cache =
g_browser_process->profile_manager()->GetProfileInfoCache();
- size_t i = cache.GetIndexOfProfileWithPath(file_path);
- if (i == std::string::npos)
+ size_t profile_index = cache.GetIndexOfProfileWithPath(profile_file_path);
+ if (profile_index == std::string::npos)
return;
- string16 gaia_name = cache.GetGAIANameOfProfileAtIndex(i);
+ string16 gaia_name = cache.GetGAIANameOfProfileAtIndex(profile_index);
if (gaia_name.empty())
return;
@@ -326,4 +344,34 @@
gaia_name_value);
}
+void ManageProfileHandler::RequestHasProfileShortcuts(const ListValue* args) {
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
+ DCHECK(ProfileShortcutManager::IsFeatureEnabled());
+
+ FilePath profile_file_path;
+ if (!GetProfilePathFromArgs(args, &profile_file_path))
+ return;
+
+ const ProfileInfoCache& cache =
+ g_browser_process->profile_manager()->GetProfileInfoCache();
+ size_t profile_index = cache.GetIndexOfProfileWithPath(profile_file_path);
+ if (profile_index == std::string::npos)
+ return;
+
+ const FilePath profile_path = cache.GetPathOfProfileAtIndex(profile_index);
+ ProfileShortcutManager* shortcut_manager =
+ g_browser_process->profile_manager()->profile_shortcut_manager();
+ shortcut_manager->HasProfileShortcuts(
+ profile_path, base::Bind(&ManageProfileHandler::OnHasProfileShortcuts,
+ weak_factory_.GetWeakPtr()));
+}
+
+void ManageProfileHandler::OnHasProfileShortcuts(bool has_shortcuts) {
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
+
+ const base::FundamentalValue has_shortcuts_value(has_shortcuts);
+ web_ui()->CallJavascriptFunction(
+ "ManageProfileOverlay.receiveHasProfileShortcuts", has_shortcuts_value);
+}
+
} // namespace options

Powered by Google App Engine
This is Rietveld 408576698