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/signin/screenlock_bridge.h"
     12 #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h"
     13 #include "chromeos/login/auth/auth_status_consumer.h"
     14 #include "chromeos/login/auth/authenticator.h"
     15 #include "components/user_manager/user.h"
     16 #include "components/user_manager/user_manager.h"
     17 
     18 namespace chromeos {
     19 
     20 class OobeUI;
     21 
     22 // The app launch signin screen shows the user pod of the device owner
     23 // and requires the user to login in order to access the network dialog.
     24 // This screen is quite similar to the standard lock screen, but we do not
     25 // create a new view to superimpose over the desktop.
     26 //
     27 // TODO(tengs): This class doesn't quite follow the idiom of the other
     28 // screen classes, as SigninScreenHandler is very tightly coupled with
     29 // the login screen. We should do some refactoring in this area.
     30 class AppLaunchSigninScreen : public SigninScreenHandlerDelegate,
     31                               public AuthStatusConsumer {
     32  public:
     33   class Delegate {
     34    public:
     35     virtual void OnOwnerSigninSuccess() = 0;
     36 
     37    protected:
     38     virtual ~Delegate() {}
     39   };
     40 
     41   AppLaunchSigninScreen(OobeUI* oobe_display, Delegate *delegate);
     42   virtual ~AppLaunchSigninScreen();
     43 
     44   void Show();
     45 
     46   static void SetUserManagerForTesting(user_manager::UserManager* user_manager);
     47 
     48  private:
     49   void InitOwnerUserList();
     50   user_manager::UserManager* GetUserManager();
     51 
     52   // SigninScreenHandlerDelegate implementation:
     53   virtual void CancelPasswordChangedFlow() OVERRIDE;
     54   virtual void CancelUserAdding() OVERRIDE;
     55   virtual void CreateAccount() OVERRIDE;
     56   virtual void CompleteLogin(const UserContext& user_context) OVERRIDE;
     57   virtual void Login(const UserContext& user_context,
     58                      const SigninSpecifics& specifics) OVERRIDE;
     59   virtual void MigrateUserData(const std::string& old_password) OVERRIDE;
     60   virtual void LoadWallpaper(const std::string& username) OVERRIDE;
     61   virtual void LoadSigninWallpaper() OVERRIDE;
     62   virtual void OnSigninScreenReady() OVERRIDE;
     63   virtual void RemoveUser(const std::string& username) OVERRIDE;
     64   virtual void ResyncUserData() OVERRIDE;
     65   virtual void ShowEnterpriseEnrollmentScreen() OVERRIDE;
     66   virtual void ShowKioskEnableScreen() OVERRIDE;
     67   virtual void ShowKioskAutolaunchScreen() OVERRIDE;
     68   virtual void ShowWrongHWIDScreen() OVERRIDE;
     69   virtual void SetWebUIHandler(
     70       LoginDisplayWebUIHandler* webui_handler) OVERRIDE;
     71   virtual void ShowSigninScreenForCreds(const std::string& username,
     72                                         const std::string& password);
     73   virtual const user_manager::UserList& GetUsers() const OVERRIDE;
     74   virtual bool IsShowGuest() const OVERRIDE;
     75   virtual bool IsShowUsers() const OVERRIDE;
     76   virtual bool IsSigninInProgress() const OVERRIDE;
     77   virtual bool IsUserSigninCompleted() const OVERRIDE;
     78   virtual void SetDisplayEmail(const std::string& email) OVERRIDE;
     79   virtual void Signout() OVERRIDE;
     80   virtual void HandleGetUsers() OVERRIDE;
     81   virtual void SetAuthType(
     82       const std::string& username,
     83       ScreenlockBridge::LockHandler::AuthType auth_type) OVERRIDE;
     84   virtual ScreenlockBridge::LockHandler::AuthType GetAuthType(
     85       const std::string& username) const OVERRIDE;
     86 
     87   // AuthStatusConsumer implementation:
     88   virtual void OnAuthFailure(const AuthFailure& error) OVERRIDE;
     89   virtual void OnAuthSuccess(const UserContext& user_context) OVERRIDE;
     90 
     91   OobeUI* oobe_ui_;
     92   Delegate* delegate_;
     93   LoginDisplayWebUIHandler* webui_handler_;
     94   scoped_refptr<Authenticator> authenticator_;
     95 
     96   // This list should have at most one user, and that user should be the owner.
     97   user_manager::UserList owner_user_list_;
     98 
     99   static user_manager::UserManager* test_user_manager_;
    100 
    101   DISALLOW_COPY_AND_ASSIGN(AppLaunchSigninScreen);
    102 };
    103 
    104 }  // namespace chromeos
    105 
    106 #endif  // CHROME_BROWSER_CHROMEOS_LOGIN_APP_LAUNCH_SIGNIN_SCREEN_H_
    107