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.
5 #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_UI_WEBUI_LOGIN_DISPLAY_H_
6 #define CHROME_BROWSER_CHROMEOS_LOGIN_UI_WEBUI_LOGIN_DISPLAY_H_
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"
23 // WebUI-based login UI implementation.
24 class WebUILoginDisplay : public LoginDisplay,
25 public NativeWindowDelegate,
26 public SigninScreenHandlerDelegate,
27 public wm::UserActivityObserver {
29 explicit WebUILoginDisplay(LoginDisplay::Delegate* delegate);
30 virtual ~WebUILoginDisplay();
32 // LoginDisplay implementation:
33 virtual void ClearAndEnablePassword() override;
34 virtual void Init(const user_manager::UserList& 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,
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;
51 // NativeWindowDelegate implementation:
52 virtual gfx::NativeWindow GetNativeWindow() const override;
54 // SigninScreenHandlerDelegate implementation:
55 virtual void CancelPasswordChangedFlow() override;
56 virtual void ResyncUserData() override;
57 virtual void MigrateUserData(const std::string& old_password) override;
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;
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;
91 // wm::UserActivityDetector implementation:
92 virtual void OnUserActivity(const ui::Event* event) override;
96 // Whether to show guest login.
99 // Weather to show the user pods or a GAIA sign in.
100 // Public sessions are always shown.
103 // Whether to show add new user.
106 // Reference to the WebUI handling layer for the login screen
107 LoginDisplayWebUIHandler* webui_handler_;
109 scoped_ptr<GaiaScreen> gaia_screen_;
110 scoped_ptr<UserSelectionScreen> user_selection_screen_;
112 DISALLOW_COPY_AND_ASSIGN(WebUILoginDisplay);
115 } // namespace chromeos
117 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_UI_WEBUI_LOGIN_DISPLAY_H_