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