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

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

Issue 7400032: Multi-profile WebUI settings (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: profiles_icon_list.js -> profiles_icon_grid.js Created 9 years, 5 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
« no previous file with comments | « chrome/browser/ui/webui/options/personal_options_handler.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/webui/options/personal_options_handler.cc
diff --git a/chrome/browser/ui/webui/options/personal_options_handler.cc b/chrome/browser/ui/webui/options/personal_options_handler.cc
index 90505a09c048ce094d073d17d89976518aacde77..2ad4309fab1fa256734c15edb9fb68b230cfa364 100644
--- a/chrome/browser/ui/webui/options/personal_options_handler.cc
+++ b/chrome/browser/ui/webui/options/personal_options_handler.cc
@@ -10,12 +10,16 @@
#include "base/callback.h"
#include "base/path_service.h"
#include "base/stl_util.h"
+#include "base/string_number_conversions.h"
#include "base/stringprintf.h"
#include "base/time.h"
#include "base/utf_string_conversions.h"
+#include "base/value_conversions.h"
#include "base/values.h"
#include "build/build_config.h"
+#include "chrome/browser/browser_process.h"
#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/profiles/profile_info_cache.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/sync/profile_sync_service.h"
#include "chrome/browser/sync/sync_setup_flow.h"
@@ -78,19 +82,20 @@ void PersonalOptionsHandler::GetLocalizedValues(
"syncFurtherOverview",
l10n_util::GetStringUTF16(IDS_SYNC_FURTHER_OVERVIEW));
localized_strings->SetString("syncSection",
- multiprofile_ ?
- l10n_util::GetStringUTF16(IDS_PROFILES_OPTIONS_GROUP_NAME) :
- l10n_util::GetStringUTF16(IDS_SYNC_OPTIONS_GROUP_NAME));
+ l10n_util::GetStringUTF16(IDS_SYNC_OPTIONS_GROUP_NAME));
localized_strings->SetString("customizeSync",
- multiprofile_ ?
- l10n_util::GetStringUTF16(IDS_PROFILES_SYNC_CUSTOMIZE_BUTTON_LABEL) :
- l10n_util::GetStringUTF16(IDS_SYNC_CUSTOMIZE_BUTTON_LABEL));
- if (multiprofile_) {
- localized_strings->SetString("createNewProfile",
- l10n_util::GetStringUTF16(IDS_PROFILES_CREATE_INFO));
- localized_strings->SetString("createProfileButton",
- l10n_util::GetStringUTF16(IDS_PROFILES_CREATE_BUTTON_LABEL));
- }
+ l10n_util::GetStringUTF16(IDS_SYNC_CUSTOMIZE_BUTTON_LABEL));
+
+ localized_strings->SetString("profiles",
+ l10n_util::GetStringUTF16(IDS_PROFILES_OPTIONS_GROUP_NAME));
+ localized_strings->SetString("profilesCreate",
+ l10n_util::GetStringUTF16(IDS_PROFILES_CREATE_BUTTON_LABEL));
+ localized_strings->SetString("profilesManage",
+ l10n_util::GetStringUTF16(IDS_PROFILES_MANAGE_BUTTON_LABEL));
+ localized_strings->SetString("profilesDelete",
+ l10n_util::GetStringUTF16(IDS_PROFILES_DELETE_BUTTON_LABEL));
+ localized_strings->SetString("profilesListItemCurrent",
+ l10n_util::GetStringUTF16(IDS_PROFILES_LIST_ITEM_CURRENT));
localized_strings->SetString("passwords",
l10n_util::GetStringUTF16(IDS_OPTIONS_PASSWORDS_GROUP_NAME));
@@ -201,6 +206,9 @@ void PersonalOptionsHandler::RegisterMessages() {
"loadAccountPicture",
NewCallback(this, &PersonalOptionsHandler::LoadAccountPicture));
#endif
+ web_ui_->RegisterMessageCallback(
+ "createProfile",
+ NewCallback(this, &PersonalOptionsHandler::CreateProfile));
}
void PersonalOptionsHandler::Observe(int type,
@@ -208,6 +216,9 @@ void PersonalOptionsHandler::Observe(int type,
const NotificationDetails& details) {
if (type == chrome::NOTIFICATION_BROWSER_THEME_CHANGED) {
ObserveThemeChanged();
+ } else if (multiprofile_ &&
+ type == chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED) {
+ SendProfilesInfo();
#if defined(OS_CHROMEOS)
} else if (type == chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED) {
LoadAccountPicture(NULL);
@@ -246,8 +257,7 @@ void PersonalOptionsHandler::OnStateChanged() {
bool is_start_stop_button_visible = false;
bool is_start_stop_button_enabled = false;
if (sync_setup_completed) {
- start_stop_button_label = multiprofile_ ?
- l10n_util::GetStringUTF16(IDS_PROFILES_DISCONNECT_BUTTON_LABEL) :
+ start_stop_button_label =
l10n_util::GetStringUTF16(IDS_SYNC_STOP_SYNCING_BUTTON_LABEL);
#if defined(OS_CHROMEOS)
is_start_stop_button_visible = false;
@@ -262,9 +272,7 @@ void PersonalOptionsHandler::OnStateChanged() {
is_start_stop_button_enabled = false;
} else {
start_stop_button_label =
- multiprofile_ ?
- l10n_util::GetStringUTF16(IDS_PROFILES_CONNECT_BUTTON_LABEL) :
- l10n_util::GetStringUTF16(IDS_SYNC_START_SYNC_BUTTON_LABEL);
+ l10n_util::GetStringUTF16(IDS_SYNC_START_SYNC_BUTTON_LABEL);
is_start_stop_button_visible = true;
is_start_stop_button_enabled = !managed;
}
@@ -303,20 +311,11 @@ void PersonalOptionsHandler::OnStateChanged() {
*visible);
// Set profile creation text and button if multi-profiles switch is on.
- if (multiprofile_) {
- visible.reset(Value::CreateBooleanValue(true));
- web_ui_->CallJavascriptFunction("PersonalOptions.setProfilesSectionVisible",
- *visible);
-
- // TODO(mirandac): enable when back end is ready.
- enabled.reset(Value::CreateBooleanValue(false));
- web_ui_->CallJavascriptFunction(
- "PersonalOptions.setNewProfileButtonEnabled", *enabled);
- } else {
- visible.reset(Value::CreateBooleanValue(false));
- web_ui_->CallJavascriptFunction("PersonalOptions.setProfilesSectionVisible",
- *visible);
- }
+ visible.reset(Value::CreateBooleanValue(multiprofile_));
+ web_ui_->CallJavascriptFunction("PersonalOptions.setProfilesSectionVisible",
+ *visible);
+ if (multiprofile_)
+ SendProfilesInfo();
}
void PersonalOptionsHandler::OnLoginSuccess() {
@@ -351,6 +350,8 @@ void PersonalOptionsHandler::Initialize() {
// Listen for theme installation.
registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED,
NotificationService::AllSources());
+ registrar_.Add(this, chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED,
+ NotificationService::AllSources());
ObserveThemeChanged();
ProfileSyncService* sync_service =
@@ -404,3 +405,32 @@ void PersonalOptionsHandler::LoadAccountPicture(const ListValue* args) {
}
}
#endif
+
+void PersonalOptionsHandler::SendProfilesInfo() {
+ ProfileInfoCache& cache =
+ g_browser_process->profile_manager()->GetProfileInfoCache();
+ ListValue profile_info_list;
+ FilePath current_profile_path = web_ui_->GetProfile()->GetPath();
+ for (size_t i = 0, e = cache.GetNumberOfProfiles(); i < e; ++i) {
+ DictionaryValue *profile_value = new DictionaryValue();
+ size_t icon_index = cache.GetAvatarIconIndexOfProfileAtIndex(i);
+ FilePath profile_path = cache.GetPathOfProfileAtIndex(i);
+ profile_value->SetString("name", cache.GetNameOfProfileAtIndex(i));
+ profile_value->SetString("iconURL",
+ cache.GetDefaultAvatarIconUrl(icon_index));
+ profile_value->Set("filePath",
+ base::CreateFilePathValue(
+ profile_path));
+ profile_value->SetBoolean("isCurrentProfile",
+ profile_path == current_profile_path);
+ profile_info_list.Append(profile_value);
+ }
+
+ web_ui_->CallJavascriptFunction("PersonalOptions.setProfilesInfo",
+ profile_info_list);
+}
+
+void PersonalOptionsHandler::CreateProfile(const ListValue* args) {
+ ProfileManager::CreateMultiProfileAsync();
+}
+
« no previous file with comments | « chrome/browser/ui/webui/options/personal_options_handler.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698