Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc

Issue 2697063004: Fix of "login is not defined" error in OOBE (Closed)
Patch Set: Merge Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/webui/chromeos/login/core_oobe_handler.h" 5 #include "chrome/browser/ui/webui/chromeos/login/core_oobe_handler.h"
6 6
7 #include <type_traits> 7 #include <type_traits>
8 8
9 #include "ash/common/accessibility_types.h" 9 #include "ash/common/accessibility_types.h"
10 #include "ash/shell.h" 10 #include "ash/shell.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 namespace { 48 namespace {
49 49
50 const char kJsScreenPath[] = "cr.ui.Oobe"; 50 const char kJsScreenPath[] = "cr.ui.Oobe";
51 51
52 } // namespace 52 } // namespace
53 53
54 namespace chromeos { 54 namespace chromeos {
55 55
56 // Note that show_oobe_ui_ defaults to false because WizardController assumes 56 // Note that show_oobe_ui_ defaults to false because WizardController assumes
57 // OOBE UI is not visible by default. 57 // OOBE UI is not visible by default.
58 CoreOobeHandler::CoreOobeHandler(OobeUI* oobe_ui) 58 CoreOobeHandler::CoreOobeHandler(OobeUI* oobe_ui,
59 : oobe_ui_(oobe_ui), version_info_updater_(this) { 59 JSCallsContainer* js_calls_container)
60 : BaseScreenHandler(js_calls_container),
61 oobe_ui_(oobe_ui),
62 version_info_updater_(this) {
63 DCHECK(js_calls_container);
60 set_call_js_prefix(kJsScreenPath); 64 set_call_js_prefix(kJsScreenPath);
61 if (!ash_util::IsRunningInMash()) { 65 if (!ash_util::IsRunningInMash()) {
62 AccessibilityManager* accessibility_manager = AccessibilityManager::Get(); 66 AccessibilityManager* accessibility_manager = AccessibilityManager::Get();
63 CHECK(accessibility_manager); 67 CHECK(accessibility_manager);
64 accessibility_subscription_ = accessibility_manager->RegisterCallback( 68 accessibility_subscription_ = accessibility_manager->RegisterCallback(
65 base::Bind(&CoreOobeHandler::OnAccessibilityStatusChanged, 69 base::Bind(&CoreOobeHandler::OnAccessibilityStatusChanged,
66 base::Unretained(this))); 70 base::Unretained(this)));
67 } else { 71 } else {
68 NOTIMPLEMENTED(); 72 NOTIMPLEMENTED();
69 } 73 }
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 AddCallback("toggleResetScreen", &CoreOobeHandler::HandleToggleResetScreen); 161 AddCallback("toggleResetScreen", &CoreOobeHandler::HandleToggleResetScreen);
158 AddCallback("toggleEnableDebuggingScreen", 162 AddCallback("toggleEnableDebuggingScreen",
159 &CoreOobeHandler::HandleEnableDebuggingScreen); 163 &CoreOobeHandler::HandleEnableDebuggingScreen);
160 AddCallback("headerBarVisible", 164 AddCallback("headerBarVisible",
161 &CoreOobeHandler::HandleHeaderBarVisible); 165 &CoreOobeHandler::HandleHeaderBarVisible);
162 AddCallback("raiseTabKeyEvent", &CoreOobeHandler::HandleRaiseTabKeyEvent); 166 AddCallback("raiseTabKeyEvent", &CoreOobeHandler::HandleRaiseTabKeyEvent);
163 AddCallback("setOobeBootstrappingSlave", 167 AddCallback("setOobeBootstrappingSlave",
164 &CoreOobeHandler::HandleSetOobeBootstrappingSlave); 168 &CoreOobeHandler::HandleSetOobeBootstrappingSlave);
165 } 169 }
166 170
167 template <typename... Args>
168 void CoreOobeHandler::ExecuteDeferredJSCall(const std::string& function_name,
169 std::unique_ptr<Args>... args) {
170 CallJS(function_name, *args...);
171 }
172
173 template <typename... Args>
174 void CoreOobeHandler::CallJSOrDefer(const std::string& function_name,
175 const Args&... args) {
176 if (is_initialized_) {
177 CallJS(function_name, args...);
178 } else {
179 // Note that std::conditional is used here in order to obtain a sequence of
180 // base::Value types with the length equal to sizeof...(Args); the C++
181 // template parameter pack expansion rules require that the name of the
182 // parameter pack appears in the pattern, even though the elements of the
183 // Args pack are not actually in this code.
184 deferred_js_calls_.push_back(base::Bind(
185 &CoreOobeHandler::ExecuteDeferredJSCall<
186 typename std::conditional<true, base::Value, Args>::type...>,
187 base::Unretained(this), function_name,
188 base::Passed(::login::MakeValue(args).CreateDeepCopy())...));
189 }
190 }
191
192 void CoreOobeHandler::ExecuteDeferredJSCalls() {
193 for (const auto& deferred_js_call : deferred_js_calls_)
194 deferred_js_call.Run();
195 deferred_js_calls_.clear();
196 }
197
198 void CoreOobeHandler::ShowSignInError( 171 void CoreOobeHandler::ShowSignInError(
199 int login_attempts, 172 int login_attempts,
200 const std::string& error_text, 173 const std::string& error_text,
201 const std::string& help_link_text, 174 const std::string& help_link_text,
202 HelpAppLauncher::HelpTopic help_topic_id) { 175 HelpAppLauncher::HelpTopic help_topic_id) {
203 LOG(ERROR) << "CoreOobeHandler::ShowSignInError: error_text=" << error_text; 176 LOG(ERROR) << "CoreOobeHandler::ShowSignInError: error_text=" << error_text;
204 CallJSOrDefer("showSignInError", login_attempts, error_text, 177 CallJSOrDefer("showSignInError", login_attempts, error_text,
205 help_link_text, static_cast<int>(help_topic_id)); 178 help_link_text, static_cast<int>(help_topic_id));
206 } 179 }
207 180
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 261
289 void CoreOobeHandler::ShowPinKeyboard(bool show) { 262 void CoreOobeHandler::ShowPinKeyboard(bool show) {
290 CallJSOrDefer("showPinKeyboard", show); 263 CallJSOrDefer("showPinKeyboard", show);
291 } 264 }
292 265
293 void CoreOobeHandler::SetClientAreaSize(int width, int height) { 266 void CoreOobeHandler::SetClientAreaSize(int width, int height) {
294 CallJSOrDefer("setClientAreaSize", width, height); 267 CallJSOrDefer("setClientAreaSize", width, height);
295 } 268 }
296 269
297 void CoreOobeHandler::HandleInitialized() { 270 void CoreOobeHandler::HandleInitialized() {
298 DCHECK(!is_initialized_);
299 is_initialized_ = true;
300 ExecuteDeferredJSCalls(); 271 ExecuteDeferredJSCalls();
301 oobe_ui_->InitializeHandlers(); 272 oobe_ui_->InitializeHandlers();
302 } 273 }
303 274
304 void CoreOobeHandler::HandleSkipUpdateEnrollAfterEula() { 275 void CoreOobeHandler::HandleSkipUpdateEnrollAfterEula() {
305 WizardController* controller = WizardController::default_controller(); 276 WizardController* controller = WizardController::default_controller();
306 DCHECK(controller); 277 DCHECK(controller);
307 if (controller) 278 if (controller)
308 controller->SkipUpdateEnrollAfterEula(); 279 controller->SkipUpdateEnrollAfterEula();
309 } 280 }
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
526 497
527 void CoreOobeHandler::InitDemoModeDetection() { 498 void CoreOobeHandler::InitDemoModeDetection() {
528 demo_mode_detector_.InitDetection(); 499 demo_mode_detector_.InitDetection();
529 } 500 }
530 501
531 void CoreOobeHandler::StopDemoModeDetection() { 502 void CoreOobeHandler::StopDemoModeDetection() {
532 demo_mode_detector_.StopDetection(); 503 demo_mode_detector_.StopDetection();
533 } 504 }
534 505
535 } // namespace chromeos 506 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/chromeos/login/core_oobe_handler.h ('k') | chrome/browser/ui/webui/chromeos/login/oobe_ui.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698