Home | History | Annotate | Download | only in login
      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.
      4 
      5 #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_APP_LAUNCH_SIGNIN_SCREEN_H_
      6 #define CHROME_BROWSER_CHROMEOS_LOGIN_APP_LAUNCH_SIGNIN_SCREEN_H_
      7 
      8 #include <string>
      9 
     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"
     15 
     16 namespace chromeos {
     17 
     18 class OobeUI;
     19 
     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.
     24 //
     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 {
     31  public:
     32   class Delegate {
     33    public:
     34     virtual void OnOwnerSigninSuccess() = 0;
     35 
     36    protected:
     37     virtual ~Delegate() {}
     38   };
     39 
     40   AppLaunchSigninScreen(OobeUI* oobe_display, Delegate *delegate);
     41   virtual ~AppLaunchSigninScreen();
     42 
     43   void Show();
     44 
     45   static void SetUserManagerForTesting(UserManager* user_manager);
     46 
     47  private:
     48   void InitOwnerUserList();
     49   UserManager* GetUserManager();
     50 
     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 ShowResetScreen() OVERRIDE;
     69   virtual void ShowKioskAutolaunchScreen() OVERRIDE;
     70   virtual void ShowWrongHWIDScreen() OVERRIDE;
     71   virtual void SetWebUIHandler(
     72       LoginDisplayWebUIHandler* webui_handler) OVERRIDE;
     73   virtual void ShowSigninScreenForCreds(const std::string& username,
     74                                         const std::string& password);
     75   virtual const UserList& GetUsers() const OVERRIDE;
     76   virtual bool IsShowGuest() const OVERRIDE;
     77   virtual bool IsShowUsers() const OVERRIDE;
     78   virtual bool IsShowNewUser() const OVERRIDE;
     79   virtual bool IsSigninInProgress() const OVERRIDE;
     80   virtual bool IsUserSigninCompleted() const OVERRIDE;
     81   virtual void SetDisplayEmail(const std::string& email) OVERRIDE;
     82   virtual void Signout() OVERRIDE;
     83   virtual void LoginAsKioskApp(const std::string& app_id) OVERRIDE;
     84 
     85   // LoginStatusConsumer implementation:
     86   virtual void OnLoginFailure(const LoginFailure& error) OVERRIDE;
     87   virtual void OnLoginSuccess(const UserContext& user_context) OVERRIDE;
     88 
     89   OobeUI* oobe_ui_;
     90   Delegate* delegate_;
     91   LoginDisplayWebUIHandler* webui_handler_;
     92   scoped_refptr<Authenticator> authenticator_;
     93 
     94   // This list should have at most one user, and that user should be the owner.
     95   UserList owner_user_list_;
     96 
     97   static UserManager* test_user_manager_;
     98 
     99   DISALLOW_COPY_AND_ASSIGN(AppLaunchSigninScreen);
    100 };
    101 
    102 }  // namespace chromeos
    103 
    104 #endif  // CHROME_BROWSER_CHROMEOS_LOGIN_APP_LAUNCH_SIGNIN_SCREEN_H_
    105