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

Unified Diff: chrome/browser/ui/webui/signin/user_manager_screen_handler.cc

Issue 1248613003: Issue 501916 : Add data type counts to profile deletion flow (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Ninth draft - singular/plural strings handled correctly Created 5 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/ui/webui/signin/user_manager_screen_handler.cc
diff --git a/chrome/browser/ui/webui/signin/user_manager_screen_handler.cc b/chrome/browser/ui/webui/signin/user_manager_screen_handler.cc
index 21aa3ede166300d5f68cdb60920c5508faf74525..091dd7133b2667d241d258b06a102e4c39320379 100644
--- a/chrome/browser/ui/webui/signin/user_manager_screen_handler.cc
+++ b/chrome/browser/ui/webui/signin/user_manager_screen_handler.cc
@@ -71,6 +71,7 @@ const char kKeyIsDesktop[] = "isDesktopUser";
const char kKeyAvatarUrl[] = "userImage";
const char kKeyNeedsSignin[] = "needsSignin";
const char kKeyHasLocalCreds[] = "hasLocalCreds";
+const char kKeyIsProfileLoaded[] = "isProfileLoaded";
// JS API callback names.
const char kJsApiUserManagerInitialize[] = "userManagerInitialize";
@@ -82,7 +83,10 @@ const char kJsApiUserManagerRemoveUser[] = "removeUser";
const char kJsApiUserManagerAttemptUnlock[] = "attemptUnlock";
const char kJsApiUserManagerLogRemoveUserWarningShown[] =
"logRemoveUserWarningShown";
-
+const char kJsApiUserManagerRemoveUserWarningLoadStats[] =
+ "removeUserWarningLoadStats";
+const char kJsApiUserManagerGetRemoveWarningDialogMessage[] =
+ "getRemoveWarningDialogMessage";
const size_t kAvatarIconSize = 180;
const int kMaxOAuthRetries = 3;
@@ -555,6 +559,97 @@ void UserManagerScreenHandler::HandleHardlockUserPod(
HideUserPodCustomIcon(email);
}
+void UserManagerScreenHandler::HandleRemoveUserWarningLoadStats(
+ const base::ListValue* args) {
+ const base::Value* profile_path_value;
+
+ if (!args->Get(0, &profile_path_value))
+ return;
+
+ base::FilePath profile_path;
+
+ if (!base::GetValueAsFilePath(*profile_path_value, &profile_path))
+ return;
+
+ base::StringValue return_profile_path(profile_path.value());
+ Profile* profile = g_browser_process->profile_manager()->
+ GetProfileByPath(profile_path);
+
+ if (!profile)
+ return;
+
+ profiles::GetProfileStatistics(
+ profile,
+ base::Bind(
+ &UserManagerScreenHandler::RemoveUserDialogLoadStatsCallback,
+ weak_ptr_factory_.GetWeakPtr(), profile_path),
+ &tracker_);
+}
+
+void UserManagerScreenHandler::RemoveUserDialogLoadStatsCallback(
+ base::FilePath profile_path,
+ profiles::ProfileCategoryStats result) {
+ // Copy result into return_value.
+ base::StringValue return_profile_path(profile_path.value());
+ base::DictionaryValue return_value;
+ for (const auto& item : result) {
+ base::DictionaryValue* stat = new base::DictionaryValue();
+ stat->SetIntegerWithoutPathExpansion("count", item.count);
+ stat->SetBooleanWithoutPathExpansion("success", item.success);
+ return_value.SetWithoutPathExpansion(item.category, stat);
+ }
+ web_ui()->CallJavascriptFunction("updateRemoveWarningDialog",
+ return_profile_path, return_value);
+}
+
+void UserManagerScreenHandler::HandleGetRemoveWarningDialogMessage(
+ const base::ListValue* args) {
+ const base::DictionaryValue* arg;
+ if (!args->GetDictionary(0, &arg))
+ return;
+
+ std::string profile_path("");
Mike Lerman 2015/09/14 16:28:48 nit: No need to specify empty-string initializatio
lwchkg 2015/09/15 15:01:40 Acknowledged.
+ bool is_synced_user = false, has_errors = false, has_count = false;
+
+ if (!arg->GetString("profilePath", &profile_path) ||
+ !arg->GetBoolean("isSyncedUser", &is_synced_user) ||
+ !arg->GetBoolean("hasErrors", &has_errors) ||
+ !arg->GetBoolean("hasCount", &has_count))
+ return;
+
+ int total_count = 1234; // number for plural formating if |has_count| is false
Mike Lerman 2015/09/14 16:28:48 Please don't initialize to a random number. If the
lwchkg 2015/09/15 15:01:40 Thanks for pointing out. Looks like I've missing s
+ if (has_count && !arg->GetInteger("totalCount", &total_count))
+ return;
+
+ int message_id;
+ base::StringValue message("");
+
+ message_id = is_synced_user ?
+ (has_errors?
Mike Lerman 2015/09/14 16:28:49 space before ?
lwchkg 2015/09/15 15:01:40 Acknowledged. And this is embarrassing.
+ IDS_LOGIN_POD_USER_REMOVE_WARNING_SYNC_WITH_ERRORS :
+ IDS_LOGIN_POD_USER_REMOVE_WARNING_SYNC) :
+ (has_errors?
+ IDS_LOGIN_POD_USER_REMOVE_WARNING_NONSYNC_WITH_ERRORS :
+ IDS_LOGIN_POD_USER_REMOVE_WARNING_NONSYNC);
+
+ message = base::StringValue(
Mike Lerman 2015/09/14 16:28:48 just define message as base::StringValue here, on
lwchkg 2015/09/15 15:01:40 Acknowledged.
+ l10n_util::GetPluralStringFUTF16(message_id, total_count));
+
+ if (has_count) {
+ web_ui()->CallJavascriptFunction("updateRemoveWarningDialogSetMessage",
+ base::StringValue(profile_path),
+ message,
+ base::FundamentalValue(total_count));
+ } else {
+ web_ui()->CallJavascriptFunction(
+ "updateRemoveWarningDialogSetMessage",
+ base::StringValue(profile_path),
+ message,
+ base::StringValue(l10n_util::GetStringUTF16(
+ IDS_LOGIN_POD_USER_REMOVE_WARNING_CALCULATING)));
+ }
+}
+
void UserManagerScreenHandler::OnGetTokenInfoResponse(
scoped_ptr<base::DictionaryValue> token_info) {
// Password is unchanged so user just mistyped it. Ask again.
@@ -599,6 +694,13 @@ void UserManagerScreenHandler::RegisterMessages() {
base::Unretained(this)));
web_ui()->RegisterMessageCallback(kJsApiUserManagerLogRemoveUserWarningShown,
base::Bind(&HandleLogRemoveUserWarningShown));
+ web_ui()->RegisterMessageCallback(kJsApiUserManagerRemoveUserWarningLoadStats,
+ base::Bind(&UserManagerScreenHandler::HandleRemoveUserWarningLoadStats,
+ base::Unretained(this)));
+ web_ui()->RegisterMessageCallback(
+ kJsApiUserManagerGetRemoveWarningDialogMessage,
+ base::Bind(&UserManagerScreenHandler::HandleGetRemoveWarningDialogMessage,
+ base::Unretained(this)));
const content::WebUI::MessageCallback& kDoNothingCallback =
base::Bind(&HandleAndDoNothing);
@@ -655,8 +757,22 @@ void UserManagerScreenHandler::GetLocalizedValues(
// For AccountPickerScreen, the remove user warning overlay.
localized_strings->SetString("removeUserWarningButtonTitle",
l10n_util::GetStringUTF16(IDS_LOGIN_POD_USER_REMOVE_WARNING_BUTTON));
- localized_strings->SetString("removeUserWarningText",
- l10n_util::GetStringUTF16(IDS_LOGIN_POD_USER_REMOVE_WARNING));
+ localized_strings->SetString("removeUserWarningTextNonSyncNoStats",
+ l10n_util::GetStringUTF16(
+ IDS_LOGIN_POD_USER_REMOVE_WARNING_NONSYNC_NOSTATS));
+ localized_strings->SetString("removeUserWarningTextHistory",
+ l10n_util::GetStringUTF16(IDS_LOGIN_POD_USER_REMOVE_WARNING_HISTORY));
+ localized_strings->SetString("removeUserWarningTextPasswords",
+ l10n_util::GetStringUTF16(IDS_LOGIN_POD_USER_REMOVE_WARNING_PASSWORDS));
+ localized_strings->SetString("removeUserWarningTextBookmarks",
+ l10n_util::GetStringUTF16(IDS_LOGIN_POD_USER_REMOVE_WARNING_BOOKMARKS));
+ localized_strings->SetString("removeUserWarningTextSettings",
+ l10n_util::GetStringUTF16(IDS_LOGIN_POD_USER_REMOVE_WARNING_SETTINGS));
+ localized_strings->SetString("removeUserWarningTextCalculating",
+ l10n_util::GetStringUTF16(IDS_LOGIN_POD_USER_REMOVE_WARNING_CALCULATING));
+ localized_strings->SetString("removeUserWarningTextSyncNoStats",
+ l10n_util::GetStringUTF16(
+ IDS_LOGIN_POD_USER_REMOVE_WARNING_SYNC_NOSTATS));
localized_strings->SetString("removeLegacySupervisedUserWarningText",
l10n_util::GetStringFUTF16(
IDS_LOGIN_POD_LEGACY_SUPERVISED_USER_REMOVE_WARNING,
@@ -758,6 +874,12 @@ void UserManagerScreenHandler::SendUserList() {
profile_value->SetString(
kKeyAvatarUrl, GetAvatarImageAtIndex(i, info_cache));
+ // GetProfileByPath returns a pointer if the profile is fully loaded, NULL
+ // otherwise.
+ Profile* profile =
+ g_browser_process->profile_manager()->GetProfileByPath(profile_path);
+ profile_value->SetBoolean(kKeyIsProfileLoaded, profile != nullptr);
+
users_list.Append(profile_value);
}

Powered by Google App Engine
This is Rietveld 408576698