summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoravayvod@chromium.org <avayvod@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-29 16:12:12 +0000
committeravayvod@chromium.org <avayvod@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-29 16:12:12 +0000
commit777f946ee725ef3d77d031f97426cdedd425ed67 (patch)
treeb32245e4d3445c057b06714d0b382ea0cee7837b
parente1ccdc1b9b3bafd300224ce4af5fd1c975f22420 (diff)
downloadchromium_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.cc22
-rw-r--r--chrome/browser/chromeos/login/user_controller.cc20
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);