login_view.h revision 21d179b334e59e9a3bfcaed4c4430bef1bc5759d
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: 234a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // |focus_view| indicates if the view can be focused. 244a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch LoginView(const std::wstring& explanation, bool focus_view); 254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual ~LoginView(); 264a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 274a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Access the data in the username/password text fields. 284a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch std::wstring GetUsername(); 294a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch std::wstring GetPassword(); 304a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 314a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // LoginModelObserver implementation. 324a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void OnAutofillDataAvailable(const std::wstring& username, 334a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch const std::wstring& password); 344a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 354a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Sets the model. This lets the observer notify the model 364a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // when it has been closed / freed, so the model should no longer try and 374a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // contact it. The view does not own the model, and it is the responsibility 384a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // of the caller to inform this view if the model is deleted. 394a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void SetModel(LoginModel* model); 404a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 414a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void RequestFocus(); 424a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 434a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch protected: 444a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // views::View overrides: 454a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void ViewHierarchyChanged(bool is_add, views::View *parent, 464a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::View *child); 474a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 484a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void NativeViewHierarchyChanged(bool attached, 494a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch gfx::NativeView native_view, 504a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::RootView* root_view); 514a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 524a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch private: 534a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void FocusFirstField(); 544a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 554a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Non-owning refs to the input text fields. 564a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Textfield* username_field_; 574a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Textfield* password_field_; 584a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 594a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Button labels 604a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Label* username_label_; 614a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Label* password_label_; 624a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 634a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Authentication message. 644a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Label* message_label_; 654a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 664a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // If not null, points to a model we need to notify of our own destruction 674a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // so it doesn't try and access this when its too late. 684a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch LoginModel* login_model_; 694a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 704a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch ScopedRunnableMethodFactory<LoginView> focus_grabber_factory_; 714a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 724a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // See description above constructor. 734a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch const bool focus_view_; 744a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 754a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Indicates that this view was created when focus manager was unavailable 764a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // (on the hidden tab, for example). This is only used if focus_view_ is true. 774a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch bool focus_delayed_; 784a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 794a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch DISALLOW_COPY_AND_ASSIGN(LoginView); 804a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch}; 814a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 824a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#endif // CHROME_BROWSER_UI_VIEWS_LOGIN_VIEW_H_ 83