Home | History | Annotate | Download | only in views
      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