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 9namespace chromeos { 10 11PassphraseTextfield::PassphraseTextfield() 12 : Textfield(views::Textfield::STYLE_OBSCURED), 13 show_fake_(false), 14 changed_(true) { 15} 16 17void PassphraseTextfield::SetShowFake(bool show_fake) { 18 show_fake_ = show_fake; 19 if (show_fake_) 20 SetFakePassphrase(); 21 else 22 ClearFakePassphrase(); 23} 24 25void 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 32void 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 39std::string PassphraseTextfield::GetPassphrase() { 40 return changed_ ? UTF16ToUTF8(text()) : std::string(); 41} 42 43void PassphraseTextfield::SetFakePassphrase() { 44 CR_DEFINE_STATIC_LOCAL(string16, fake_passphrase, (ASCIIToUTF16("********"))); 45 SetText(fake_passphrase); 46 changed_ = false; 47} 48 49void PassphraseTextfield::ClearFakePassphrase() { 50 SetText(string16()); 51 changed_ = true; 52} 53 54} // namespace chromeos 55