// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_DOM_LOGIN_DISPLAY_H_ #define CHROME_BROWSER_CHROMEOS_LOGIN_DOM_LOGIN_DISPLAY_H_ #pragma once #include <vector> #include "base/memory/singleton.h" #include "base/scoped_ptr.h" #include "chrome/browser/chromeos/login/login_display.h" #include "chrome/browser/chromeos/login/user_manager.h" #include "chrome/browser/ui/webui/chromeos/login/login_ui.h" namespace gfx { class Rect; } // namespace gfx namespace chromeos { class DOMBrowser; // DOM-based login UI implementation. // This class is a Singleton. It allows the LoginDisplayHost and LoginUIHandler // to access it without having to be coupled with each other. It is created with // NULL for the delegate and a 0-size rectangle for the background // bounds. Before use these values should be set to a sane value. When done with // the object, the ExistingUserController should call Destroy and not free the // pointer, where as accessing classes should do nothing with the pointer. // // Expected order of commands to setup for LoginDisplayHost: // DOMLoginDisplay::GetInstance(); // set_delegate(delegate); // set_background_bounds(background_bounds()); // Init(); // // Expected order of commands to setup for LoginUIHandler: // DOMLoginDisplay::GetInstance(); // set_login_handler(this); class DOMLoginDisplay : public LoginDisplay, public LoginUIHandlerDelegate { public: virtual ~DOMLoginDisplay(); // Singleton implementation: static DOMLoginDisplay* GetInstance(); // LoginDisplay implementation: virtual void Destroy() OVERRIDE; virtual void Init(const std::vector<UserManager::User>& users, bool show_guest, bool show_new_user) OVERRIDE; virtual void OnBeforeUserRemoved(const std::string& username) OVERRIDE; virtual void OnUserImageChanged(UserManager::User* user) OVERRIDE; virtual void OnUserRemoved(const std::string& username) OVERRIDE; virtual void OnFadeOut() OVERRIDE; virtual void SetUIEnabled(bool is_enabled) OVERRIDE; virtual void ShowError(int error_msg_id, int login_attempts, HelpAppLauncher::HelpTopic help_topic_id) OVERRIDE; // LoginUIHandlerDelegate virtual void Login(const std::string& username, const std::string& password) OVERRIDE; virtual void LoginAsGuest() OVERRIDE; private: // Singleton implementation: friend struct DefaultSingletonTraits<DOMLoginDisplay>; DOMLoginDisplay(); // Set of Users in the systemvisible UserControllers. std::vector<UserManager::User> users_; // Container of the screen we are displaying DOMBrowser* login_screen_; DISALLOW_COPY_AND_ASSIGN(DOMLoginDisplay); }; } // namespace chromeos #endif // CHROME_BROWSER_CHROMEOS_LOGIN_DOM_LOGIN_DISPLAY_H_