• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
11 namespace views {
12 class Label;
13 class Textfield;
14 class LoginModel;
15 }  // namespace views
16 
17 // This class is responsible for displaying the contents of a login window
18 // for HTTP/FTP authentication.
19 class 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