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