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#include "chrome/browser/chromeos/login/dom_login_display.h" 6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/chromeos/frame/dom_browser.h" 8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/chromeos/wm_ipc.h" 9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/profiles/profile_manager.h" 10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/ui/browser_window.h" 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsennamespace { 13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenconst char kLoginURL[] = "chrome://login"; 14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} // namespace 15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsennamespace chromeos { 17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// DOMLoginDisplay, public: --------------------------------------------------- 19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenDOMLoginDisplay::~DOMLoginDisplay() { 21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (login_screen_) 22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen login_screen_->CloseWindow(); 23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// DOMLoginDisplay, Singleton implementation: ---------------------------------- 26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// static 28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenDOMLoginDisplay* DOMLoginDisplay::GetInstance() { 29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return Singleton<DOMLoginDisplay>::get(); 30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// LoginDisplay implementation: ------------------------------------------------ 33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid DOMLoginDisplay::Destroy() { 35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen background_bounds_ = gfx::Rect(); 36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen delegate_ = NULL; 37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid DOMLoginDisplay::Init(const std::vector<UserManager::User>& users, 40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bool show_guest, 41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bool show_new_user) { 42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Testing that the delegate has been set. 43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen DCHECK(delegate_); 44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen users_ = users; 45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 46ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // TODO(rharrison): Add mechanism to pass in the show_guest and show_new_user 47ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // values. 48ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen login_screen_ = DOMBrowser::CreateForDOM(ProfileManager::GetDefaultProfile()); 49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen login_screen_->AddSelectedTabWithURL(GURL(kLoginURL), 50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen PageTransition::START_PAGE); 51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen login_screen_->window()->Show(); 52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 53ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 54ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid DOMLoginDisplay::OnBeforeUserRemoved(const std::string& username) { 55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // TODO(rharrison): Figure out if I need to split anything between this and 56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // OnUserRemoved 57ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 58ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 59ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid DOMLoginDisplay::OnUserImageChanged(UserManager::User* user) { 60ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // TODO(rharrison): Update the user in the user vector 61ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // TODO(rharrison): Push the change to DOM Login screen 62ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 63ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 64ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid DOMLoginDisplay::OnUserRemoved(const std::string& username) { 65ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // TODO(rharrison): Remove the user from the user vector 66ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // TODO(rharrison): Push the change to DOM Login screen 67ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 68ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 69ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid DOMLoginDisplay::OnFadeOut() { } 70ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 71ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid DOMLoginDisplay::SetUIEnabled(bool is_enabled) { 72ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Send message to WM to enable/disable click on windows. 73ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen WmIpc::Message message(WM_IPC_MESSAGE_WM_SET_LOGIN_STATE); 74ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen message.set_param(0, is_enabled); 75ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen WmIpc::instance()->SendMessage(message); 76ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 77ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (is_enabled) 78ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen login_handler_->ClearAndEnablePassword(); 79ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 80ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 81ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid DOMLoginDisplay::ShowError(int error_msg_id, 82ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen int login_attempts, 83ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen HelpAppLauncher::HelpTopic help_topic_id) { 84ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // TODO(rharrison): Figure out what we should be doing here 85ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 86ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 87ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// DOMLoginDisplay, LoginUIHandlerDelegate implementation: --------------------- 88ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 89ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid DOMLoginDisplay::Login(const std::string& username, 90ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const std::string& password) { 91ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen DCHECK(delegate_); 92ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen delegate_->Login(username, password); 93ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 94ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 95ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid DOMLoginDisplay::LoginAsGuest() { 96ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen DCHECK(delegate_); 97ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen delegate_->LoginAsGuest(); 98ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 99ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 100ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// DOMLoginDisplay, private: --------------------------------------------------- 101ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 102ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Singleton implementation: --------------------------------------------------- 103ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 104ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenDOMLoginDisplay::DOMLoginDisplay() 105ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen : LoginDisplay(NULL, gfx::Rect()), 106ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen LoginUIHandlerDelegate(), 107ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen login_screen_(NULL) {} 108ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 109ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} // namespace chromeos 110