• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2006-2008 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 #pragma once
8 
9 #include "base/task.h"
10 #include "chrome/browser/ui/login/login_model.h"
11 #include "views/view.h"
12 
13 namespace views {
14 class Label;
15 class Textfield;
16 class LoginModel;
17 }  // namespace views
18 
19 // This class is responsible for displaying the contents of a login window
20 // for HTTP/FTP authentication.
21 class LoginView : public views::View, public LoginModelObserver {
22  public:
23   // |model| is observed for the entire lifetime of the LoginView.
24   // Therefore |model| should not be destroyed before the LoginView
25   // object.
26   LoginView(const std::wstring& explanation, LoginModel* model);
27   virtual ~LoginView();
28 
29   // Access the data in the username/password text fields.
30   std::wstring GetUsername();
31   std::wstring GetPassword();
32 
33   // LoginModelObserver implementation.
34   virtual void OnAutofillDataAvailable(const std::wstring& username,
35                                        const std::wstring& password) 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