login_view.h revision a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7
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 "chrome/browser/ui/login/login_model.h"
9#include "ui/views/view.h"
10
11namespace views {
12class Label;
13class Textfield;
14class LoginModel;
15}  // namespace views
16
17// This class is responsible for displaying the contents of a login window
18// for HTTP/FTP authentication.
19class LoginView : public views::View, public LoginModelObserver {
20 public:
21  // |model| is observed for the entire lifetime of the LoginView.
22  // Therefore |model| should not be destroyed before the LoginView
23  // object.
24  LoginView(const base::string16& explanation,
25            LoginModel* model);
26  virtual ~LoginView();
27
28  // Access the data in the username/password text fields.
29  base::string16 GetUsername();
30  base::string16 GetPassword();
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  LoginModel* login_model_;
55
56  DISALLOW_COPY_AND_ASSIGN(LoginView);
57};
58
59#endif  // CHROME_BROWSER_UI_VIEWS_LOGIN_VIEW_H_
60