Home | History | Annotate | Download | only in login
      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