enrollment_screen.h revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
1// Copyright (c) 2012 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_ENROLLMENT_ENROLLMENT_SCREEN_H_ 6#define CHROME_BROWSER_CHROMEOS_LOGIN_ENROLLMENT_ENROLLMENT_SCREEN_H_ 7 8#include <string> 9 10#include "base/basictypes.h" 11#include "base/compiler_specific.h" 12#include "base/memory/weak_ptr.h" 13#include "chrome/browser/chromeos/login/enrollment/enrollment_screen_actor.h" 14#include "chrome/browser/chromeos/login/screens/wizard_screen.h" 15#include "chrome/browser/policy/cloud/cloud_policy_constants.h" 16 17namespace chromeos { 18 19class ScreenObserver; 20 21// The screen implementation that links the enterprise enrollment UI into the 22// OOBE wizard. 23class EnrollmentScreen 24 : public WizardScreen, 25 public EnrollmentScreenActor::Controller { 26 public: 27 EnrollmentScreen(ScreenObserver* observer, 28 EnrollmentScreenActor* actor); 29 virtual ~EnrollmentScreen(); 30 31 void SetParameters(bool is_auto_enrollment, 32 bool can_exit_enrollment, 33 const std::string& enrollment_user); 34 35 // WizardScreen implementation: 36 virtual void PrepareToShow() OVERRIDE; 37 virtual void Show() OVERRIDE; 38 virtual void Hide() OVERRIDE; 39 virtual std::string GetName() const OVERRIDE; 40 41 // EnrollmentScreenActor::Controller implementation: 42 virtual void OnLoginDone(const std::string& user) OVERRIDE; 43 virtual void OnAuthError(const GoogleServiceAuthError& error) OVERRIDE; 44 virtual void OnOAuthTokenAvailable(const std::string& oauth_token) OVERRIDE; 45 virtual void OnRetry() OVERRIDE; 46 virtual void OnCancel() OVERRIDE; 47 virtual void OnConfirmationClosed() OVERRIDE; 48 49 // Used for testing. 50 EnrollmentScreenActor* GetActor() { 51 return actor_; 52 } 53 54 private: 55 // Starts the Lockbox storage process. 56 void WriteInstallAttributesData(); 57 58 // Kicks off the policy infrastructure to register with the service. 59 void RegisterForDevicePolicy(const std::string& token); 60 61 // Handles enrollment completion. Logs a UMA sample and requests the actor to 62 // show the specified enrollment status. 63 void ReportEnrollmentStatus(policy::EnrollmentStatus status); 64 65 // Logs a UMA event in the kMetricEnrollment histogram. If auto-enrollment is 66 // on |sample| is ignored and a kMetricEnrollmentAutoFailed sample is logged 67 // instead. 68 void UMAFailure(int sample); 69 70 // Shows the signin screen. Used as a callback to run after auth reset. 71 void ShowSigninScreen(); 72 73 EnrollmentScreenActor* actor_; 74 bool is_auto_enrollment_; 75 bool can_exit_enrollment_; 76 bool enrollment_failed_once_; 77 std::string user_; 78 int lockbox_init_duration_; 79 base::WeakPtrFactory<EnrollmentScreen> weak_ptr_factory_; 80 81 DISALLOW_COPY_AND_ASSIGN(EnrollmentScreen); 82}; 83 84} // namespace chromeos 85 86#endif // CHROME_BROWSER_CHROMEOS_LOGIN_ENROLLMENT_ENROLLMENT_SCREEN_H_ 87