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