• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_ACTOR_H_
6 #define CHROME_BROWSER_CHROMEOS_LOGIN_ENROLLMENT_ENROLLMENT_SCREEN_ACTOR_H_
7 
8 #include <string>
9 
10 #include "base/basictypes.h"
11 #include "base/callback_forward.h"
12 #include "chrome/browser/chromeos/policy/enrollment_status_chromeos.h"
13 
14 class GoogleServiceAuthError;
15 
16 namespace chromeos {
17 
18 // Interface class for the enterprise enrollment screen actor.
19 class EnrollmentScreenActor {
20  public:
21   // Enumeration of the possible errors that can occur during enrollment which
22   // are not covered by GoogleServiceAuthError or EnrollmentStatus.
23   enum UIError {
24     // Existing enrollment domain doesn't match authentication user.
25     UI_ERROR_DOMAIN_MISMATCH,
26     // Requested device mode not supported with auto enrollment.
27     UI_ERROR_AUTO_ENROLLMENT_BAD_MODE,
28     // Unexpected error condition, indicates a bug in the code.
29     UI_ERROR_FATAL,
30   };
31 
32   // Describes the enrollment mode.  Must be kept in sync with
33   // |kEnrollmentModes| in enrollment_screen_handler.cc.
34   enum EnrollmentMode {
35     ENROLLMENT_MODE_MANUAL,    // Manually triggered enrollment.
36     ENROLLMENT_MODE_FORCED,    // Forced enrollment, user can't skip.
37     ENROLLMENT_MODE_AUTO,      // Auto-enrollment during first sign-in.
38     ENROLLMENT_MODE_RECOVERY,  // Recover from "spontaneous unenrollment".
39     ENROLLMENT_MODE_COUNT      // Counter must be last. Not an enrollment mode.
40   };
41 
42   // This defines the interface for controllers which will be called back when
43   // something happens on the UI.
44   class Controller {
45    public:
~Controller()46     virtual ~Controller() {}
47 
48     virtual void OnLoginDone(const std::string& user) = 0;
49     virtual void OnAuthError(const GoogleServiceAuthError& error) = 0;
50     virtual void OnOAuthTokenAvailable(const std::string& oauth_token) = 0;
51     virtual void OnRetry() = 0;
52     virtual void OnCancel() = 0;
53     virtual void OnConfirmationClosed() = 0;
54   };
55 
~EnrollmentScreenActor()56   virtual ~EnrollmentScreenActor() {}
57 
58   // Initializes the actor with parameters.
59   virtual void SetParameters(Controller* controller,
60                              EnrollmentMode enrollment_mode,
61                              const std::string& management_domain) = 0;
62 
63   // Prepare the contents to showing.
64   virtual void PrepareToShow() = 0;
65 
66   // Shows the contents of the screen.
67   virtual void Show() = 0;
68 
69   // Hides the contents of the screen.
70   virtual void Hide() = 0;
71 
72   // Starts fetching the OAuth token.
73   virtual void FetchOAuthToken() = 0;
74 
75   // Resets the authentication state and invokes the passed callback on
76   // completion.
77   virtual void ResetAuth(const base::Closure& callback) = 0;
78 
79   // Shows the signin screen.
80   virtual void ShowSigninScreen() = 0;
81 
82   // Shows the spinner screen for enrollment.
83   virtual void ShowEnrollmentSpinnerScreen() = 0;
84 
85   // Shows the spinner screen for login after auto-enrollment.
86   virtual void ShowLoginSpinnerScreen() = 0;
87 
88   // Show an authentication error.
89   virtual void ShowAuthError(const GoogleServiceAuthError& error) = 0;
90 
91   // Show non-authentication error.
92   virtual void ShowUIError(UIError error) = 0;
93 
94   // Update the UI to report the |status| of the enrollment procedure.
95   virtual void ShowEnrollmentStatus(policy::EnrollmentStatus status) = 0;
96 };
97 
98 }  // namespace chromeos
99 
100 #endif  // CHROME_BROWSER_CHROMEOS_LOGIN_ENROLLMENT_ENROLLMENT_SCREEN_ACTOR_H_
101