diff options
author | avayvod@chromium.org <avayvod@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-29 16:12:12 +0000 |
---|---|---|
committer | avayvod@chromium.org <avayvod@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-29 16:12:12 +0000 |
commit | 777f946ee725ef3d77d031f97426cdedd425ed67 (patch) | |
tree | b32245e4d3445c057b06714d0b382ea0cee7837b | |
parent | e1ccdc1b9b3bafd300224ce4af5fd1c975f22420 (diff) | |
download | chromium_src-777f946ee725ef3d77d031f97426cdedd425ed67.zip chromium_src-777f946ee725ef3d77d031f97426cdedd425ed67.tar.gz chromium_src-777f946ee725ef3d77d031f97426cdedd425ed67.tar.bz2 |
Show tooltips only for users with identical display names.
Tooltip text is changed from email to "<display name> (<domain>)".
BUG=cros:2318
TEST=Verify that tooltips are shown only for users with equal display names. Tooltips show display name and domain.
Review URL: http://codereview.chromium.org/2877002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@51129 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/chromeos/login/existing_user_controller.cc | 22 | ||||
-rw-r--r-- | chrome/browser/chromeos/login/user_controller.cc | 20 |
2 files changed, 29 insertions, 13 deletions
diff --git a/chrome/browser/chromeos/login/existing_user_controller.cc b/chrome/browser/chromeos/login/existing_user_controller.cc index 39a0067..ea9057c 100644 --- a/chrome/browser/chromeos/login/existing_user_controller.cc +++ b/chrome/browser/chromeos/login/existing_user_controller.cc @@ -6,7 +6,7 @@ #include <algorithm> #include <functional> -#include <set> +#include <map> #include "app/l10n_util.h" #include "app/resource_bundle.h" @@ -58,20 +58,18 @@ const char kCaptchaUrlPrefix[] = "http://www.google.com/accounts/"; // tooltips with full emails to let users distinguish their accounts. // Otherwise, disables the tooltips. void EnableTooltipsIfNeeded(const std::vector<UserController*>& controllers) { - bool show_name_tooltips = false; - std::set<std::string> visible_display_names; - for (size_t i = 0; i < controllers.size(); ++i) { + std::map<std::string, int> visible_display_names; + for (size_t i = 0; i + 1 < controllers.size(); ++i) { const std::string& display_name = controllers[i]->user().GetDisplayName(); - if (visible_display_names.count(display_name) > 0) { - show_name_tooltips = true; - break; - } - visible_display_names.insert(display_name); + ++visible_display_names[display_name]; + } + for (size_t i = 0; i + 1 < controllers.size(); ++i) { + const std::string& display_name = + controllers[i]->user().GetDisplayName(); + bool show_tooltip = visible_display_names[display_name] > 1; + controllers[i]->EnableNameTooltip(show_tooltip); } - for (size_t i = 0; i < controllers.size(); ++i) - if (!controllers[i]->is_guest()) - controllers[i]->EnableNameTooltip(show_name_tooltips); } } // namespace diff --git a/chrome/browser/chromeos/login/user_controller.cc b/chrome/browser/chromeos/login/user_controller.cc index 85015a1..a576f59 100644 --- a/chrome/browser/chromeos/login/user_controller.cc +++ b/chrome/browser/chromeos/login/user_controller.cc @@ -64,6 +64,24 @@ class ClickNotifyingWidget : public views::WidgetGtk { DISALLOW_COPY_AND_ASSIGN(ClickNotifyingWidget); }; +// Returns tooltip text for user name. Tooltip contains user's display name +// and his email domain to distinguish this user from the other one with the +// same display name. +std::string GetNameTooltip(const UserManager::User& user) { + const std::string& email = user.email(); + size_t at_pos = email.rfind('@'); + if (at_pos == std::string::npos) { + NOTREACHED(); + return std::string(); + } + size_t domain_start = at_pos + 1; + std::string domain = email.substr(domain_start, + email.length() - domain_start); + return StringPrintf("%s (%s)", + user.GetDisplayName().c_str(), + domain.c_str()); +} + // NativeButton that will always return focus to password field. class UserEntryNativeButton : public views::NativeButton { public: @@ -225,7 +243,7 @@ void UserController::EnableNameTooltip(bool enable) { std::wstring tooltip_text; if (enable) - tooltip_text = UTF8ToWide(user_.email()); + tooltip_text = UTF8ToWide(GetNameTooltip(user_)); if (user_view_) user_view_->SetTooltipText(tooltip_text); |