summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos
diff options
context:
space:
mode:
authoravayvod@chromium.org <avayvod@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-17 08:47:06 +0000
committeravayvod@chromium.org <avayvod@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-17 08:47:06 +0000
commitc8b48abe0fe6a31c27056d3e955ee6eb92a84417 (patch)
tree60e9ea79d928607d5041ea08e189a91859842b19 /chrome/browser/chromeos
parent60b0768217facf4d3ed3e2417f0f88bb2fdcdc9d (diff)
downloadchromium_src-c8b48abe0fe6a31c27056d3e955ee6eb92a84417.zip
chromium_src-c8b48abe0fe6a31c27056d3e955ee6eb92a84417.tar.gz
chromium_src-c8b48abe0fe6a31c27056d3e955ee6eb92a84417.tar.bz2
Proper autocompletion of username when textfield looses focus.
Tab key doesn't get here since it's handled by focus manager. BUG=none TEST=Enter a name without domain in username field on login screen. Remove focus from the field (i.e. by hitting Tab). @gmail.com should be appended. Review URL: http://codereview.chromium.org/2829005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@50083 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos')
-rw-r--r--chrome/browser/chromeos/login/new_user_view.cc35
1 files changed, 23 insertions, 12 deletions
diff --git a/chrome/browser/chromeos/login/new_user_view.cc b/chrome/browser/chromeos/login/new_user_view.cc
index eac52f9..506c527 100644
--- a/chrome/browser/chromeos/login/new_user_view.cc
+++ b/chrome/browser/chromeos/login/new_user_view.cc
@@ -48,6 +48,27 @@ const char kDefaultDomain[] = "@gmail.com";
const char kAccountRecoveryHelpUrl[] =
"http://www.google.com/support/accounts/bin/answer.py?answer=48598";
+// Textfield that adds domain to the entered username if focus is lost and
+// username doesn't have full domain.
+class UsernameField : public views::Textfield {
+ public:
+ UsernameField() {}
+
+ // views::Textfield overrides:
+ virtual void WillLoseFocus() {
+ if (!text().empty()) {
+ std::string username = UTF16ToUTF8(text());
+
+ if (username.find('@') == std::string::npos) {
+ username += kDefaultDomain;
+ SetText(UTF8ToUTF16(username));
+ }
+ }
+ }
+
+ DISALLOW_COPY_AND_ASSIGN(UsernameField);
+};
+
} // namespace
namespace chromeos {
@@ -96,7 +117,7 @@ void NewUserView::Init() {
title_label_->SetMultiLine(true);
AddChildView(title_label_);
- username_field_ = new views::Textfield;
+ username_field_ = new UsernameField();
AddChildView(username_field_);
password_field_ = new views::Textfield(views::Textfield::STYLE_PASSWORD);
@@ -367,17 +388,7 @@ bool NewUserView::HandleKeystroke(views::Textfield* s,
if (!CrosLibrary::Get()->EnsureLoaded() || login_in_process_)
return false;
- if (keystroke.GetKeyboardCode() == base::VKEY_TAB) {
- if (username_field_->text().length() != 0) {
- std::string username = UTF16ToUTF8(username_field_->text());
-
- if (username.find('@') == std::string::npos) {
- username += kDefaultDomain;
- username_field_->SetText(UTF8ToUTF16(username));
- }
- return false;
- }
- } else if (keystroke.GetKeyboardCode() == base::VKEY_RETURN) {
+ if (keystroke.GetKeyboardCode() == base::VKEY_RETURN) {
Login();
// Return true so that processing ends
return true;