ProfilePolicyConnectorFactory: Refactoring from Profile to BrowserContext.
[chromium-blink-merge.git] / chrome / browser / ui / webui / chromeos / login / enrollment_screen_handler.h
bloba2e36006e00cd23357dddb1527552ea462ec7413
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.
5 #ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_ENROLLMENT_SCREEN_HANDLER_H_
6 #define CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_ENROLLMENT_SCREEN_HANDLER_H_
8 #include <string>
10 #include "base/basictypes.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "base/memory/scoped_vector.h"
13 #include "chrome/browser/chromeos/login/enrollment/enrollment_screen_actor.h"
14 #include "chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper.h"
15 #include "chrome/browser/chromeos/login/screens/network_error_model.h"
16 #include "chrome/browser/chromeos/login/ui/webui_login_view.h"
17 #include "chrome/browser/chromeos/policy/enrollment_config.h"
18 #include "chrome/browser/extensions/signin/scoped_gaia_auth_extension.h"
19 #include "chrome/browser/ui/webui/chromeos/login/base_screen_handler.h"
20 #include "chrome/browser/ui/webui/chromeos/login/network_state_informer.h"
21 #include "net/base/net_errors.h"
23 namespace chromeos {
25 class ErrorScreensHistogramHelper;
27 // WebUIMessageHandler implementation which handles events occurring on the
28 // page, such as the user pressing the signin button.
29 class EnrollmentScreenHandler
30 : public BaseScreenHandler,
31 public EnrollmentScreenActor,
32 public NetworkStateInformer::NetworkStateInformerObserver,
33 public WebUILoginView::FrameObserver {
34 public:
35 EnrollmentScreenHandler(
36 const scoped_refptr<NetworkStateInformer>& network_state_informer,
37 NetworkErrorModel* network_error_model);
38 ~EnrollmentScreenHandler() override;
40 // Implements WebUIMessageHandler:
41 void RegisterMessages() override;
43 // Implements EnrollmentScreenActor:
44 void SetParameters(Controller* controller,
45 const policy::EnrollmentConfig& config) override;
46 void PrepareToShow() override;
47 void Show() override;
48 void Hide() override;
49 void ShowSigninScreen() override;
50 void ShowEnrollmentSpinnerScreen() override;
51 void ShowAuthError(const GoogleServiceAuthError& error) override;
52 void ShowEnrollmentStatus(policy::EnrollmentStatus status) override;
53 void ShowOtherError(
54 EnterpriseEnrollmentHelper::OtherError error_code) override;
56 // Implements BaseScreenHandler:
57 void Initialize() override;
58 void DeclareLocalizedValues(
59 ::login::LocalizedValuesBuilder* builder) override;
61 // Implements NetworkStateInformer::NetworkStateInformerObserver
62 void UpdateState(NetworkError::ErrorReason reason) override;
64 // Implements WebUILoginView::FrameObserver
65 void OnFrameError(const std::string& frame_unique_name) override;
67 private:
68 // Handlers for WebUI messages.
69 void HandleClose(const std::string& reason);
70 void HandleCompleteLogin(const std::string& user);
71 void HandleRetry();
72 void HandleFrameLoadingCompleted(int status);
74 void UpdateStateInternal(NetworkError::ErrorReason reason, bool force_update);
75 void SetupAndShowOfflineMessage(NetworkStateInformer::State state,
76 NetworkError::ErrorReason reason);
77 void HideOfflineMessage(NetworkStateInformer::State state,
78 NetworkError::ErrorReason reason);
80 net::Error frame_error() const { return frame_error_; }
81 // Shows a given enrollment step.
82 void ShowStep(const char* step);
84 // Display the given i18n resource as error message.
85 void ShowError(int message_id, bool retry);
87 // Display the given string as error message.
88 void ShowErrorMessage(const std::string& message, bool retry);
90 // Display the given i18n string as a progress message.
91 void ShowWorking(int message_id);
93 // Shows the screen.
94 void DoShow();
96 // Returns current visible screen.
97 OobeUI::Screen GetCurrentScreen() const;
99 // Returns true if current visible screen is the enrollment sign-in page.
100 bool IsOnEnrollmentScreen() const;
102 // Returns true if current visible screen is the error screen over
103 // enrollment sign-in page.
104 bool IsEnrollmentScreenHiddenByError() const;
106 // Keeps the controller for this actor.
107 Controller* controller_;
109 bool show_on_init_;
111 // The enrollment configuration.
112 policy::EnrollmentConfig config_;
114 // Whether an enrollment attempt has failed.
115 bool enrollment_failed_once_;
117 // Latest enrollment frame error.
118 net::Error frame_error_;
120 // True if screen was not shown yet.
121 bool first_show_;
123 // Whether we should handle network errors on enrollment screen.
124 // True when signin screen step is shown.
125 bool observe_network_failure_;
127 // Network state informer used to keep signin screen up.
128 scoped_refptr<NetworkStateInformer> network_state_informer_;
130 NetworkErrorModel* network_error_model_;
132 scoped_ptr<ErrorScreensHistogramHelper> histogram_helper_;
134 // GAIA extension loader.
135 scoped_ptr<ScopedGaiaAuthExtension> auth_extension_;
137 base::WeakPtrFactory<EnrollmentScreenHandler> weak_ptr_factory_;
139 DISALLOW_COPY_AND_ASSIGN(EnrollmentScreenHandler);
142 } // namespace chromeos
144 #endif // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_ENROLLMENT_SCREEN_HANDLER_H_