Home | History | Annotate | Download | only in managed
      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_MANAGED_SUPERVISED_USER_LOGIN_FLOW_H_
      6 #define CHROME_BROWSER_CHROMEOS_LOGIN_MANAGED_SUPERVISED_USER_LOGIN_FLOW_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "base/compiler_specific.h"
     10 #include "base/memory/weak_ptr.h"
     11 #include "base/strings/string16.h"
     12 #include "chrome/browser/chromeos/login/auth/extended_authenticator.h"
     13 #include "chrome/browser/chromeos/login/auth/user_context.h"
     14 #include "chrome/browser/chromeos/login/user_flow.h"
     15 
     16 namespace chromeos {
     17 
     18 // UserFlow implementation for signing in locally managed user.
     19 class SupervisedUserLoginFlow
     20     : public ExtendedUserFlow,
     21       public ExtendedAuthenticator::AuthStatusConsumer {
     22  public:
     23   explicit SupervisedUserLoginFlow(const std::string& user_id);
     24   virtual ~SupervisedUserLoginFlow();
     25 
     26   // ExtendedUserFlow overrides.
     27   virtual bool CanLockScreen() OVERRIDE;
     28   virtual bool ShouldLaunchBrowser() OVERRIDE;
     29   virtual bool ShouldSkipPostLoginScreens() OVERRIDE;
     30   virtual bool HandleLoginFailure(const LoginFailure& failure) OVERRIDE;
     31   virtual void HandleLoginSuccess(const UserContext& context) OVERRIDE;
     32   virtual bool HandlePasswordChangeDetected() OVERRIDE;
     33   virtual void HandleOAuthTokenStatusChange(User::OAuthTokenStatus status)
     34       OVERRIDE;
     35   virtual void LaunchExtraSteps(Profile* profile) OVERRIDE;
     36 
     37   // ExtendedAuthenticator::AuthStatusConsumer overrides.
     38   virtual void OnAuthenticationFailure(ExtendedAuthenticator::AuthState state)
     39       OVERRIDE;
     40 
     41  private:
     42   void Launch();
     43   void Finish();
     44 
     45   void OnSyncSetupDataLoaded(const std::string& token);
     46   void ConfigureSync(const std::string& token);
     47   void OnPasswordChangeDataLoaded(const base::DictionaryValue* password_data);
     48   void OnPasswordChangeDataLoadFailed();
     49   void OnNewKeyAdded(scoped_ptr<base::DictionaryValue> password_data);
     50   void OnOldKeyRemoved();
     51   void OnPasswordUpdated(scoped_ptr<base::DictionaryValue> password_data);
     52 
     53   scoped_refptr<ExtendedAuthenticator> authenticator_;
     54 
     55   bool data_loaded_;
     56   UserContext context_;
     57   Profile* profile_;
     58   base::WeakPtrFactory<SupervisedUserLoginFlow> weak_factory_;
     59 
     60   DISALLOW_COPY_AND_ASSIGN(SupervisedUserLoginFlow);
     61 };
     62 
     63 }  // namespace chromeos
     64 
     65 #endif  // CHROME_BROWSER_CHROMEOS_LOGIN_MANAGED_SUPERVISED_USER_LOGIN_FLOW_H_
     66