1// Copyright (c) 2011 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#ifndef CHROME_BROWSER_UI_VIEWS_LOGIN_VIEW_H_
6#define CHROME_BROWSER_UI_VIEWS_LOGIN_VIEW_H_
7
8#include "base/compiler_specific.h"
9#include "components/password_manager/core/browser/login_model.h"
10#include "ui/views/view.h"
11
12namespace views {
13class Label;
14class Textfield;
15}
16
17// This class is responsible for displaying the contents of a login window
18// for HTTP/FTP authentication.
19class LoginView : public views::View,
20                  public password_manager::LoginModelObserver {
21 public:
22  // |model| is observed for the entire lifetime of the LoginView.
23  // Therefore |model| should not be destroyed before the LoginView object.
24  LoginView(const base::string16& explanation,
25            password_manager::LoginModel* model);
26  virtual ~LoginView();
27
28  // Access the data in the username/password text fields.
29  const base::string16& GetUsername() const;
30  const base::string16& GetPassword() const;
31
32  // LoginModelObserver implementation.
33  virtual void OnAutofillDataAvailable(const base::string16& username,
34                                       const base::string16& password) OVERRIDE;
35  virtual void OnLoginModelDestroying() OVERRIDE;
36
37  // Used by LoginHandlerWin to set the initial focus.
38  views::View* GetInitiallyFocusedView();
39
40 private:
41  // Non-owning refs to the input text fields.
42  views::Textfield* username_field_;
43  views::Textfield* password_field_;
44
45  // Button labels
46  views::Label* username_label_;
47  views::Label* password_label_;
48
49  // Authentication message.
50  views::Label* message_label_;
51
52  // If not null, points to a model we need to notify of our own destruction
53  // so it doesn't try and access this when its too late.
54  password_manager::LoginModel* login_model_;
55
56  DISALLOW_COPY_AND_ASSIGN(LoginView);
57};
58
59#endif  // CHROME_BROWSER_UI_VIEWS_LOGIN_VIEW_H_
60