// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_BROWSER_NOTIFICATIONS_PASSPHRASE_TEXTFIELD_H_
#define CHROME_BROWSER_NOTIFICATIONS_PASSPHRASE_TEXTFIELD_H_

#include <string>

#include "ui/base/metadata/metadata_header_macros.h"
#include "ui/views/controls/textfield/textfield.h"

namespace chromeos {

class PassphraseTextfield : public views::Textfield {
 public:
  METADATA_HEADER(PassphraseTextfield);
  PassphraseTextfield();

  // If show_fake is true, then the text field will show a fake password.
  void SetShowFake(bool show_fake);
  bool GetShowFake() const;

  // Override views::Textfield so that when focus is gained, then clear out the
  // fake password if appropriate. Replace it when focus is lost if the user has
  // not typed in a new password.
  void OnFocus() override;
  void OnBlur() override;

  // Returns the passphrase. If it's unchanged, then returns an empty string.
  std::string GetPassphrase();

  bool GetChanged() const;

 private:
  void SetFakePassphrase();
  void ClearFakePassphrase();

  bool show_fake_;
  bool changed_;
};

}  // namespace chromeos

#endif  // CHROME_BROWSER_NOTIFICATIONS_PASSPHRASE_TEXTFIELD_H_
