Home | History | Annotate | Download | only in options
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/browser/chromeos/options/passphrase_textfield.h"
      6 
      7 #include "base/strings/utf_string_conversions.h"
      8 
      9 namespace chromeos {
     10 
     11 PassphraseTextfield::PassphraseTextfield()
     12     : Textfield(views::Textfield::STYLE_OBSCURED),
     13       show_fake_(false),
     14       changed_(true) {
     15 }
     16 
     17 void PassphraseTextfield::SetShowFake(bool show_fake) {
     18   show_fake_ = show_fake;
     19   if (show_fake_)
     20     SetFakePassphrase();
     21   else
     22     ClearFakePassphrase();
     23 }
     24 
     25 void PassphraseTextfield::OnFocus() {
     26   // If showing the fake password, then clear it when focused.
     27   if (show_fake_ && !changed_)
     28     ClearFakePassphrase();
     29   Textfield::OnFocus();
     30 }
     31 
     32 void PassphraseTextfield::OnBlur() {
     33   // If password is not changed, then show the fake password when blurred.
     34   if (show_fake_ && text().empty())
     35     SetFakePassphrase();
     36   Textfield::OnBlur();
     37 }
     38 
     39 std::string PassphraseTextfield::GetPassphrase() {
     40   return changed_ ? UTF16ToUTF8(text()) : std::string();
     41 }
     42 
     43 void PassphraseTextfield::SetFakePassphrase() {
     44   CR_DEFINE_STATIC_LOCAL(string16, fake_passphrase, (ASCIIToUTF16("********")));
     45   SetText(fake_passphrase);
     46   changed_ = false;
     47 }
     48 
     49 void PassphraseTextfield::ClearFakePassphrase() {
     50   SetText(string16());
     51   changed_ = true;
     52 }
     53 
     54 }  // namespace chromeos
     55