14a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 24a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 34a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// found in the LICENSE file. 44a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 54a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#ifndef CHROME_BROWSER_UI_VIEWS_LOGIN_VIEW_H_ 64a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#define CHROME_BROWSER_UI_VIEWS_LOGIN_VIEW_H_ 74a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#pragma once 84a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 94a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "base/task.h" 1021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/ui/login/login_model.h" 114a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "views/view.h" 124a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochnamespace views { 144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass Label; 154a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass Textfield; 164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass LoginModel; 174a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch} // namespace views 184a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 194a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// This class is responsible for displaying the contents of a login window 204a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// for HTTP/FTP authentication. 214a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass LoginView : public views::View, public LoginModelObserver { 224a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch public: 23dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // |model| is observed for the entire lifetime of the LoginView. 24dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Therefore |model| should not be destroyed before the LoginView 25dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // object. 26dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen LoginView(const std::wstring& explanation, LoginModel* model); 274a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual ~LoginView(); 284a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 294a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Access the data in the username/password text fields. 304a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch std::wstring GetUsername(); 314a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch std::wstring GetPassword(); 324a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 334a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // LoginModelObserver implementation. 344a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void OnAutofillDataAvailable(const std::wstring& username, 35dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen const std::wstring& password) OVERRIDE; 364a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 37dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Used by LoginHandlerWin to set the initial focus. 38dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen views::View* GetInitiallyFocusedView(); 394a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 404a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch private: 414a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Non-owning refs to the input text fields. 424a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Textfield* username_field_; 434a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Textfield* password_field_; 444a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 454a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Button labels 464a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Label* username_label_; 474a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Label* password_label_; 484a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 494a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Authentication message. 504a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Label* message_label_; 514a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 524a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // If not null, points to a model we need to notify of our own destruction 534a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // so it doesn't try and access this when its too late. 544a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch LoginModel* login_model_; 554a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 564a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch DISALLOW_COPY_AND_ASSIGN(LoginView); 574a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch}; 584a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 594a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#endif // CHROME_BROWSER_UI_VIEWS_LOGIN_VIEW_H_ 60