1// Copyright 2014 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#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_UI_WEBUI_LOGIN_DISPLAY_H_ 6#define CHROME_BROWSER_CHROMEOS_LOGIN_UI_WEBUI_LOGIN_DISPLAY_H_ 7 8#include <string> 9#include <vector> 10 11#include "base/compiler_specific.h" 12#include "chrome/browser/chromeos/login/screens/gaia_screen.h" 13#include "chrome/browser/chromeos/login/screens/user_selection_screen.h" 14#include "chrome/browser/chromeos/login/signin_specifics.h" 15#include "chrome/browser/chromeos/login/ui/login_display.h" 16#include "chrome/browser/ui/webui/chromeos/login/native_window_delegate.h" 17#include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h" 18#include "components/user_manager/user.h" 19#include "ui/views/widget/widget.h" 20#include "ui/wm/core/user_activity_observer.h" 21 22namespace chromeos { 23// WebUI-based login UI implementation. 24class WebUILoginDisplay : public LoginDisplay, 25 public NativeWindowDelegate, 26 public SigninScreenHandlerDelegate, 27 public wm::UserActivityObserver { 28 public: 29 explicit WebUILoginDisplay(LoginDisplay::Delegate* delegate); 30 virtual ~WebUILoginDisplay(); 31 32 // LoginDisplay implementation: 33 virtual void ClearAndEnablePassword() OVERRIDE; 34 virtual void Init(const user_manager::UserList& users, 35 bool show_guest, 36 bool show_users, 37 bool show_new_user) OVERRIDE; 38 virtual void OnPreferencesChanged() OVERRIDE; 39 virtual void OnBeforeUserRemoved(const std::string& username) OVERRIDE; 40 virtual void OnUserImageChanged(const user_manager::User& user) OVERRIDE; 41 virtual void OnUserRemoved(const std::string& username) OVERRIDE; 42 virtual void SetUIEnabled(bool is_enabled) OVERRIDE; 43 virtual void ShowError(int error_msg_id, 44 int login_attempts, 45 HelpAppLauncher::HelpTopic help_topic_id) OVERRIDE; 46 virtual void ShowErrorScreen(LoginDisplay::SigninError error_id) OVERRIDE; 47 virtual void ShowGaiaPasswordChanged(const std::string& username) OVERRIDE; 48 virtual void ShowPasswordChangedDialog(bool show_password_error) OVERRIDE; 49 virtual void ShowSigninUI(const std::string& email) OVERRIDE; 50 51 // NativeWindowDelegate implementation: 52 virtual gfx::NativeWindow GetNativeWindow() const OVERRIDE; 53 54 // SigninScreenHandlerDelegate implementation: 55 virtual void CancelPasswordChangedFlow() OVERRIDE; 56 virtual void ResyncUserData() OVERRIDE; 57 virtual void MigrateUserData(const std::string& old_password) OVERRIDE; 58 59 virtual void Login(const UserContext& user_context, 60 const SigninSpecifics& specifics) OVERRIDE; 61 virtual bool IsSigninInProgress() const OVERRIDE; 62 virtual void Signout() OVERRIDE; 63 virtual void CreateAccount() OVERRIDE; 64 virtual void CompleteLogin(const UserContext& user_context) OVERRIDE; 65 66 virtual void OnSigninScreenReady() OVERRIDE; 67 virtual void CancelUserAdding() OVERRIDE; 68 virtual void LoadWallpaper(const std::string& username) OVERRIDE; 69 virtual void LoadSigninWallpaper() OVERRIDE; 70 virtual void RemoveUser(const std::string& username) OVERRIDE; 71 virtual void ShowEnterpriseEnrollmentScreen() OVERRIDE; 72 virtual void ShowKioskEnableScreen() OVERRIDE; 73 virtual void ShowKioskAutolaunchScreen() OVERRIDE; 74 virtual void ShowWrongHWIDScreen() OVERRIDE; 75 virtual void SetWebUIHandler( 76 LoginDisplayWebUIHandler* webui_handler) OVERRIDE; 77 virtual void ShowSigninScreenForCreds(const std::string& username, 78 const std::string& password); 79 virtual const user_manager::UserList& GetUsers() const OVERRIDE; 80 virtual bool IsShowGuest() const OVERRIDE; 81 virtual bool IsShowUsers() const OVERRIDE; 82 virtual bool IsUserSigninCompleted() const OVERRIDE; 83 virtual void SetDisplayEmail(const std::string& email) OVERRIDE; 84 virtual void HandleGetUsers() OVERRIDE; 85 virtual void SetAuthType( 86 const std::string& username, 87 ScreenlockBridge::LockHandler::AuthType auth_type) OVERRIDE; 88 virtual ScreenlockBridge::LockHandler::AuthType GetAuthType( 89 const std::string& username) const OVERRIDE; 90 91 // wm::UserActivityDetector implementation: 92 virtual void OnUserActivity(const ui::Event* event) OVERRIDE; 93 94 private: 95 96 // Whether to show guest login. 97 bool show_guest_; 98 99 // Weather to show the user pods or a GAIA sign in. 100 // Public sessions are always shown. 101 bool show_users_; 102 103 // Whether to show add new user. 104 bool show_new_user_; 105 106 // Reference to the WebUI handling layer for the login screen 107 LoginDisplayWebUIHandler* webui_handler_; 108 109 scoped_ptr<GaiaScreen> gaia_screen_; 110 scoped_ptr<UserSelectionScreen> user_selection_screen_; 111 112 DISALLOW_COPY_AND_ASSIGN(WebUILoginDisplay); 113}; 114 115} // namespace chromeos 116 117#endif // CHROME_BROWSER_CHROMEOS_LOGIN_UI_WEBUI_LOGIN_DISPLAY_H_ 118