1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 3ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// found in the LICENSE file. 4ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_DOM_LOGIN_DISPLAY_H_ 6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#define CHROME_BROWSER_CHROMEOS_LOGIN_DOM_LOGIN_DISPLAY_H_ 7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#pragma once 8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include <vector> 10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/singleton.h" 12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/scoped_ptr.h" 13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/chromeos/login/login_display.h" 14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/chromeos/login/user_manager.h" 15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/ui/webui/chromeos/login/login_ui.h" 16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsennamespace gfx { 18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass Rect; 19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} // namespace gfx 20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsennamespace chromeos { 22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass DOMBrowser; 24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// DOM-based login UI implementation. 26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// This class is a Singleton. It allows the LoginDisplayHost and LoginUIHandler 27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// to access it without having to be coupled with each other. It is created with 28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// NULL for the delegate and a 0-size rectangle for the background 29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// bounds. Before use these values should be set to a sane value. When done with 30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// the object, the ExistingUserController should call Destroy and not free the 31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// pointer, where as accessing classes should do nothing with the pointer. 32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// 33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Expected order of commands to setup for LoginDisplayHost: 34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// DOMLoginDisplay::GetInstance(); 35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// set_delegate(delegate); 36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// set_background_bounds(background_bounds()); 37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Init(); 38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// 39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Expected order of commands to setup for LoginUIHandler: 40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// DOMLoginDisplay::GetInstance(); 41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// set_login_handler(this); 42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass DOMLoginDisplay : public LoginDisplay, 44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen public LoginUIHandlerDelegate { 45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen public: 46ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual ~DOMLoginDisplay(); 47ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 48ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Singleton implementation: 49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen static DOMLoginDisplay* GetInstance(); 50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // LoginDisplay implementation: 52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void Destroy() OVERRIDE; 53ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void Init(const std::vector<UserManager::User>& users, 54ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bool show_guest, 55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bool show_new_user) OVERRIDE; 56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void OnBeforeUserRemoved(const std::string& username) OVERRIDE; 57ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void OnUserImageChanged(UserManager::User* user) OVERRIDE; 58ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void OnUserRemoved(const std::string& username) OVERRIDE; 59ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void OnFadeOut() OVERRIDE; 60ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void SetUIEnabled(bool is_enabled) OVERRIDE; 61ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void ShowError(int error_msg_id, 62ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen int login_attempts, 63ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen HelpAppLauncher::HelpTopic help_topic_id) OVERRIDE; 64ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 65ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // LoginUIHandlerDelegate 66ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void Login(const std::string& username, 67ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const std::string& password) OVERRIDE; 68ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void LoginAsGuest() OVERRIDE; 69ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 70ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen private: 71ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Singleton implementation: 72ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen friend struct DefaultSingletonTraits<DOMLoginDisplay>; 73ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen DOMLoginDisplay(); 74ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 75ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Set of Users in the systemvisible UserControllers. 76ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::vector<UserManager::User> users_; 77ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 78ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Container of the screen we are displaying 79ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen DOMBrowser* login_screen_; 80ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 81ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen DISALLOW_COPY_AND_ASSIGN(DOMLoginDisplay); 82ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}; 83ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 84ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} // namespace chromeos 85ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 86ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#endif // CHROME_BROWSER_CHROMEOS_LOGIN_DOM_LOGIN_DISPLAY_H_ 87