1 // Copyright 2013 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_APP_LAUNCH_SIGNIN_SCREEN_H_
6 #define CHROME_BROWSER_CHROMEOS_LOGIN_APP_LAUNCH_SIGNIN_SCREEN_H_
10 #include "base/memory/ref_counted.h"
11 #include "chrome/browser/chromeos/login/authenticator.h"
12 #include "chrome/browser/chromeos/login/login_status_consumer.h"
13 #include "chrome/browser/chromeos/login/user_manager.h"
14 #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h"
20 // The app launch signin screen shows the user pod of the device owner
21 // and requires the user to login in order to access the network dialog.
22 // This screen is quite similar to the standard lock screen, but we do not
23 // create a new view to superimpose over the desktop.
25 // TODO(tengs): This class doesn't quite follow the idiom of the other
26 // screen classes, as SigninScreenHandler is very tightly coupled with
27 // the login screen. We should do some refactoring in this area.
28 class AppLaunchSigninScreen
29 : public SigninScreenHandlerDelegate
,
30 public LoginStatusConsumer
{
34 virtual void OnOwnerSigninSuccess() = 0;
37 virtual ~Delegate() {}
40 AppLaunchSigninScreen(OobeUI
* oobe_display
, Delegate
*delegate
);
41 virtual ~AppLaunchSigninScreen();
45 static void SetUserManagerForTesting(UserManager
* user_manager
);
48 void InitOwnerUserList();
49 UserManager
* GetUserManager();
51 // SigninScreenHandlerDelegate implementation:
52 virtual void CancelPasswordChangedFlow() OVERRIDE
;
53 virtual void CancelUserAdding() OVERRIDE
;
54 virtual void CreateAccount() OVERRIDE
;
55 virtual void CompleteLogin(const UserContext
& user_context
) OVERRIDE
;
56 virtual void Login(const UserContext
& user_context
) OVERRIDE
;
57 virtual void LoginAsRetailModeUser() OVERRIDE
;
58 virtual void LoginAsGuest() OVERRIDE
;
59 virtual void MigrateUserData(const std::string
& old_password
) OVERRIDE
;
60 virtual void LoginAsPublicAccount(const std::string
& username
) OVERRIDE
;
61 virtual void LoadWallpaper(const std::string
& username
) OVERRIDE
;
62 virtual void LoadSigninWallpaper() OVERRIDE
;
63 virtual void OnSigninScreenReady() OVERRIDE
;
64 virtual void RemoveUser(const std::string
& username
) OVERRIDE
;
65 virtual void ResyncUserData() OVERRIDE
;
66 virtual void ShowEnterpriseEnrollmentScreen() OVERRIDE
;
67 virtual void ShowKioskEnableScreen() OVERRIDE
;
68 virtual void ShowKioskAutolaunchScreen() OVERRIDE
;
69 virtual void ShowWrongHWIDScreen() OVERRIDE
;
70 virtual void SetWebUIHandler(
71 LoginDisplayWebUIHandler
* webui_handler
) OVERRIDE
;
72 virtual void ShowSigninScreenForCreds(const std::string
& username
,
73 const std::string
& password
);
74 virtual const UserList
& GetUsers() const OVERRIDE
;
75 virtual bool IsShowGuest() const OVERRIDE
;
76 virtual bool IsShowUsers() const OVERRIDE
;
77 virtual bool IsShowNewUser() const OVERRIDE
;
78 virtual bool IsSigninInProgress() const OVERRIDE
;
79 virtual bool IsUserSigninCompleted() const OVERRIDE
;
80 virtual void SetDisplayEmail(const std::string
& email
) OVERRIDE
;
81 virtual void Signout() OVERRIDE
;
82 virtual void LoginAsKioskApp(const std::string
& app_id
,
83 bool diagnostic_mode
) OVERRIDE
;
85 // LoginStatusConsumer implementation:
86 virtual void OnLoginFailure(const LoginFailure
& error
) OVERRIDE
;
87 virtual void OnLoginSuccess(const UserContext
& user_context
) OVERRIDE
;
91 LoginDisplayWebUIHandler
* webui_handler_
;
92 scoped_refptr
<Authenticator
> authenticator_
;
94 // This list should have at most one user, and that user should be the owner.
95 UserList owner_user_list_
;
97 static UserManager
* test_user_manager_
;
99 DISALLOW_COPY_AND_ASSIGN(AppLaunchSigninScreen
);
102 } // namespace chromeos
104 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_APP_LAUNCH_SIGNIN_SCREEN_H_