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_CORE_OOBE_HANDLER_H_
6 #define CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_CORE_OOBE_HANDLER_H_
10 #include "chrome/browser/chromeos/accessibility/accessibility_manager.h"
11 #include "chrome/browser/chromeos/login/screens/core_oobe_actor.h"
12 #include "chrome/browser/chromeos/login/version_info_updater.h"
13 #include "chrome/browser/ui/webui/chromeos/login/base_screen_handler.h"
14 #include "chrome/browser/ui/webui/chromeos/login/demo_mode_detector.h"
26 class HelpAppLauncher;
29 // The core handler for Javascript messages related to the "oobe" view.
30 class CoreOobeHandler : public BaseScreenHandler,
31 public VersionInfoUpdater::Delegate,
32 public CoreOobeActor {
36 // Called when current screen is changed.
37 virtual void OnCurrentScreenChanged(const std::string& screen) = 0;
40 explicit CoreOobeHandler(OobeUI* oobe_ui);
41 virtual ~CoreOobeHandler();
43 void SetDelegate(Delegate* delegate);
45 // BaseScreenHandler implementation:
46 virtual void DeclareLocalizedValues(LocalizedValuesBuilder* builder) override;
47 virtual void Initialize() override;
49 // WebUIMessageHandler implementation.
50 virtual void RegisterMessages() override;
52 // VersionInfoUpdater::Delegate implementation:
53 virtual void OnOSVersionLabelTextUpdated(
54 const std::string& os_version_label_text) override;
55 virtual void OnEnterpriseInfoUpdated(
56 const std::string& message_text) override;
58 // Show or hide OOBE UI.
59 void ShowOobeUI(bool show);
61 bool show_oobe_ui() const {
66 // CoreOobeActor implementation:
67 virtual void ShowSignInError(
69 const std::string& error_text,
70 const std::string& help_link_text,
71 HelpAppLauncher::HelpTopic help_topic_id) override;
72 virtual void ShowTpmError() override;
73 virtual void ShowSignInUI(const std::string& email) override;
74 virtual void ResetSignInUI(bool force_online) override;
75 virtual void ClearUserPodPassword() override;
76 virtual void RefocusCurrentPod() override;
77 virtual void ShowPasswordChangedScreen(bool show_password_error) override;
78 virtual void SetUsageStats(bool checked) override;
79 virtual void SetOemEulaUrl(const std::string& oem_eula_url) override;
80 virtual void SetTpmPassword(const std::string& tmp_password) override;
81 virtual void ClearErrors() override;
82 virtual void ReloadContent(const base::DictionaryValue& dictionary) override;
83 virtual void ShowControlBar(bool show) override;
84 virtual void SetKeyboardState(bool shown, const gfx::Rect& bounds) override;
85 virtual void SetClientAreaSize(int width, int height) override;
86 virtual void ShowDeviceResetScreen() override;
87 virtual void InitDemoModeDetection() override;
88 virtual void StopDemoModeDetection() override;
90 // Handlers for JS WebUI messages.
91 void HandleEnableLargeCursor(bool enabled);
92 void HandleEnableHighContrast(bool enabled);
93 void HandleEnableVirtualKeyboard(bool enabled);
94 void HandleEnableScreenMagnifier(bool enabled);
95 void HandleEnableSpokenFeedback(bool /* enabled */);
96 void HandleInitialized();
97 void HandleSkipUpdateEnrollAfterEula();
98 void HandleUpdateCurrentScreen(const std::string& screen);
99 void HandleSetDeviceRequisition(const std::string& requisition);
100 void HandleScreenAssetsLoaded(const std::string& screen_async_load_id);
101 void HandleSkipToLoginForTesting(const base::ListValue* args);
102 void HandleLaunchHelpApp(double help_topic_id);
103 void HandleToggleResetScreen();
104 void HandleHeaderBarVisible();
106 // Updates a11y menu state based on the current a11y features state(on/off).
107 void UpdateA11yState();
109 // Calls javascript to sync OOBE UI visibility with show_oobe_ui_.
110 void UpdateOobeUIVisibility();
112 // Updates label with specified id with specified text.
113 void UpdateLabel(const std::string& id, const std::string& text);
115 // Updates the device requisition string on the UI side.
116 void UpdateDeviceRequisition();
118 // Updates virtual keyboard state.
119 void UpdateKeyboardState();
121 // Updates client area size based on the primary screen size.
122 void UpdateClientAreaSize();
124 // Notification of a change in the accessibility settings.
125 void OnAccessibilityStatusChanged(
126 const AccessibilityStatusEventDetails& details);
128 // Owner of this handler.
131 // True if we should show OOBE instead of login.
134 // Updates when version info is changed.
135 VersionInfoUpdater version_info_updater_;
137 // Help application used for help dialogs.
138 scoped_refptr<HelpAppLauncher> help_app_;
142 scoped_ptr<AccessibilityStatusSubscription> accessibility_subscription_;
144 DemoModeDetector demo_mode_detector_;
146 DISALLOW_COPY_AND_ASSIGN(CoreOobeHandler);
149 } // namespace chromeos
151 #endif // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_CORE_OOBE_HANDLER_H_