1 // Copyright (c) 2011 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_ENTERPRISE_ENROLLMENT_SCREEN_H_ 6 #define CHROME_BROWSER_CHROMEOS_LOGIN_ENTERPRISE_ENROLLMENT_SCREEN_H_ 7 #pragma once 8 9 #include <string> 10 11 #include "base/basictypes.h" 12 #include "base/compiler_specific.h" 13 #include "base/message_loop.h" 14 #include "base/task.h" 15 #include "chrome/browser/browser_process.h" 16 #include "chrome/browser/chromeos/login/enterprise_enrollment_view.h" 17 #include "chrome/browser/chromeos/login/view_screen.h" 18 #include "chrome/browser/policy/cloud_policy_subsystem.h" 19 #include "chrome/common/net/gaia/gaia_auth_fetcher.h" 20 21 namespace chromeos { 22 23 // Controller interface for driving the enterprise enrollment UI. 24 class EnterpriseEnrollmentController { 25 public: 26 // Runs authentication with the given parameters. 27 virtual void Authenticate(const std::string& user, 28 const std::string& password, 29 const std::string& captcha, 30 const std::string& access_code) = 0; 31 32 // Cancels the enrollment operation. 33 virtual void CancelEnrollment() = 0; 34 35 // Closes the confirmation window. 36 virtual void CloseConfirmation() = 0; 37 38 // Returns whether the GAIA login should be prepolutated with an user and if 39 // yes which one. 40 virtual bool GetInitialUser(std::string* user) = 0; 41 }; 42 43 // The screen implementation that links the enterprise enrollment UI into the 44 // OOBE wizard. 45 class EnterpriseEnrollmentScreen 46 : public ViewScreen<EnterpriseEnrollmentView>, 47 public EnterpriseEnrollmentController, 48 public GaiaAuthConsumer, 49 public policy::CloudPolicySubsystem::Observer { 50 public: 51 explicit EnterpriseEnrollmentScreen(WizardScreenDelegate* delegate); 52 virtual ~EnterpriseEnrollmentScreen(); 53 54 // EnterpriseEnrollmentController implementation: 55 virtual void Authenticate(const std::string& user, 56 const std::string& password, 57 const std::string& captcha, 58 const std::string& access_code) OVERRIDE; 59 virtual void CancelEnrollment() OVERRIDE; 60 virtual void CloseConfirmation() OVERRIDE; 61 virtual bool GetInitialUser(std::string* user) OVERRIDE; 62 63 // GaiaAuthConsumer implementation: 64 virtual void OnClientLoginSuccess(const ClientLoginResult& result) OVERRIDE; 65 virtual void OnClientLoginFailure( 66 const GoogleServiceAuthError& error) OVERRIDE; 67 68 virtual void OnIssueAuthTokenSuccess(const std::string& service, 69 const std::string& auth_token) OVERRIDE; 70 virtual void OnIssueAuthTokenFailure( 71 const std::string& service, 72 const GoogleServiceAuthError& error) OVERRIDE; 73 74 // CloudPolicySubsystem::Observer implementation: 75 virtual void OnPolicyStateChanged( 76 policy::CloudPolicySubsystem::PolicySubsystemState state, 77 policy::CloudPolicySubsystem::ErrorDetails error_details) OVERRIDE; 78 79 protected: 80 // Overriden from ViewScreen: 81 virtual EnterpriseEnrollmentView* AllocateView() OVERRIDE; 82 83 private: 84 void HandleAuthError(const GoogleServiceAuthError& error); 85 86 // Starts the Lockbox storage process. 87 void WriteInstallAttributesData(); 88 89 scoped_ptr<GaiaAuthFetcher> auth_fetcher_; 90 std::string user_; 91 std::string captcha_token_; 92 scoped_ptr<policy::CloudPolicySubsystem::ObserverRegistrar> registrar_; 93 ScopedRunnableMethodFactory<EnterpriseEnrollmentScreen> 94 runnable_method_factory_; 95 96 DISALLOW_COPY_AND_ASSIGN(EnterpriseEnrollmentScreen); 97 }; 98 99 } // namespace chromeos 100 101 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_ENTERPRISE_ENROLLMENT_SCREEN_H_ 102