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