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

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

Issue 975353002: Added OOBE Asset / Naming prompt (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added comments Created 5 years, 8 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/enrollment_screen_handler.h" 5 #include "chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "base/macros.h" 12 #include "base/macros.h"
13 #include "base/strings/stringprintf.h" 13 #include "base/strings/stringprintf.h"
14 #include "base/values.h" 14 #include "base/values.h"
15 #include "chrome/browser/browser_process.h"
15 #include "chrome/browser/chromeos/login/error_screens_histogram_helper.h" 16 #include "chrome/browser/chromeos/login/error_screens_histogram_helper.h"
16 #include "chrome/browser/chromeos/login/screens/network_error.h" 17 #include "chrome/browser/chromeos/login/screens/network_error.h"
17 #include "chrome/browser/chromeos/login/ui/login_display_host_impl.h" 18 #include "chrome/browser/chromeos/login/ui/login_display_host_impl.h"
19 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
18 #include "chrome/browser/chromeos/policy/enrollment_status_chromeos.h" 20 #include "chrome/browser/chromeos/policy/enrollment_status_chromeos.h"
19 #include "chrome/browser/chromeos/profiles/profile_helper.h" 21 #include "chrome/browser/chromeos/profiles/profile_helper.h"
20 #include "chrome/browser/extensions/signin/gaia_auth_extension_loader.h" 22 #include "chrome/browser/extensions/signin/gaia_auth_extension_loader.h"
21 #include "chrome/browser/profiles/profile.h" 23 #include "chrome/browser/profiles/profile.h"
22 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" 24 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
23 #include "chrome/grit/generated_resources.h" 25 #include "chrome/grit/generated_resources.h"
24 #include "chromeos/network/network_state.h" 26 #include "chromeos/network/network_state.h"
25 #include "chromeos/network/network_state_handler.h" 27 #include "chromeos/network/network_state_handler.h"
26 #include "components/login/localized_values_builder.h" 28 #include "components/login/localized_values_builder.h"
27 #include "components/policy/core/browser/cloud/message_util.h" 29 #include "components/policy/core/browser/cloud/message_util.h"
28 #include "google_apis/gaia/gaia_auth_util.h" 30 #include "google_apis/gaia/gaia_auth_util.h"
29 #include "google_apis/gaia/gaia_urls.h" 31 #include "google_apis/gaia/gaia_urls.h"
30 #include "google_apis/gaia/google_service_auth_error.h" 32 #include "google_apis/gaia/google_service_auth_error.h"
31 #include "net/url_request/url_request_context_getter.h" 33 #include "net/url_request/url_request_context_getter.h"
32 #include "ui/base/l10n/l10n_util.h" 34 #include "ui/base/l10n/l10n_util.h"
33 35
34 namespace chromeos { 36 namespace chromeos {
35 namespace { 37 namespace {
36 38
37 const char kJsScreenPath[] = "login.OAuthEnrollmentScreen"; 39 const char kJsScreenPath[] = "login.OAuthEnrollmentScreen";
38 40
39 // Enrollment step names. 41 // Enrollment step names.
40 const char kEnrollmentStepSignin[] = "signin"; 42 const char kEnrollmentStepSignin[] = "signin";
41 const char kEnrollmentStepSuccess[] = "success"; 43 const char kEnrollmentStepSuccess[] = "success";
42 const char kEnrollmentStepWorking[] = "working"; 44 const char kEnrollmentStepWorking[] = "working";
45 const char kEnrollmentStepNaming[] = "naming";
43 46
44 // Enrollment mode constants used in the UI. This needs to be kept in sync with 47 // Enrollment mode constants used in the UI. This needs to be kept in sync with
45 // oobe_screen_oauth_enrollment.js. 48 // oobe_screen_oauth_enrollment.js.
46 const char kEnrollmentModeUIForced[] = "forced"; 49 const char kEnrollmentModeUIForced[] = "forced";
47 const char kEnrollmentModeUIManual[] = "manual"; 50 const char kEnrollmentModeUIManual[] = "manual";
48 const char kEnrollmentModeUIRecovery[] = "recovery"; 51 const char kEnrollmentModeUIRecovery[] = "recovery";
49 52
50 // Enrollment help topic IDs. 53 // Enrollment help topic IDs.
51 const int kEnrollmentHelpTopicRegular = 6142332; 54 const int kEnrollmentHelpTopicRegular = 6142332;
52 const int kEnrollmentHelpTopicServerTriggered = 4631259; 55 const int kEnrollmentHelpTopicServerTriggered = 4631259;
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 144
142 void EnrollmentScreenHandler::RegisterMessages() { 145 void EnrollmentScreenHandler::RegisterMessages() {
143 AddCallback("oauthEnrollClose", 146 AddCallback("oauthEnrollClose",
144 &EnrollmentScreenHandler::HandleClose); 147 &EnrollmentScreenHandler::HandleClose);
145 AddCallback("oauthEnrollCompleteLogin", 148 AddCallback("oauthEnrollCompleteLogin",
146 &EnrollmentScreenHandler::HandleCompleteLogin); 149 &EnrollmentScreenHandler::HandleCompleteLogin);
147 AddCallback("oauthEnrollRetry", 150 AddCallback("oauthEnrollRetry",
148 &EnrollmentScreenHandler::HandleRetry); 151 &EnrollmentScreenHandler::HandleRetry);
149 AddCallback("frameLoadingCompleted", 152 AddCallback("frameLoadingCompleted",
150 &EnrollmentScreenHandler::HandleFrameLoadingCompleted); 153 &EnrollmentScreenHandler::HandleFrameLoadingCompleted);
154 AddCallback("oauthEnrollNaming",
Mattias Nissler (ping if slow) 2015/04/10 12:22:29 Let's change the language from naming -> attribute
Polina Bondarenko 2015/04/14 14:15:47 Done.
155 &EnrollmentScreenHandler::HandleDeviceNaming);
151 } 156 }
152 157
153 // EnrollmentScreenHandler 158 // EnrollmentScreenHandler
154 // EnrollmentScreenActor implementation ----------------------------------- 159 // EnrollmentScreenActor implementation -----------------------------------
155 160
156 void EnrollmentScreenHandler::SetParameters( 161 void EnrollmentScreenHandler::SetParameters(
157 Controller* controller, 162 Controller* controller,
158 const policy::EnrollmentConfig& config) { 163 const policy::EnrollmentConfig& config) {
159 CHECK_NE(policy::EnrollmentConfig::MODE_NONE, config.mode); 164 CHECK_NE(policy::EnrollmentConfig::MODE_NONE, config.mode);
160 controller_ = controller; 165 controller_ = controller;
(...skipping 16 matching lines...) Expand all
177 } 182 }
178 183
179 void EnrollmentScreenHandler::Hide() { 184 void EnrollmentScreenHandler::Hide() {
180 } 185 }
181 186
182 void EnrollmentScreenHandler::ShowSigninScreen() { 187 void EnrollmentScreenHandler::ShowSigninScreen() {
183 observe_network_failure_ = true; 188 observe_network_failure_ = true;
184 ShowStep(kEnrollmentStepSignin); 189 ShowStep(kEnrollmentStepSignin);
185 } 190 }
186 191
192 void EnrollmentScreenHandler::ShowDeviceNamingScreen() {
193 base::DictionaryValue data;
194
195 policy::BrowserPolicyConnectorChromeOS* connector =
Mattias Nissler (ping if slow) 2015/04/10 12:22:29 This should not grab the values from the connector
Polina Bondarenko 2015/04/14 14:15:47 Done.
196 g_browser_process->platform_part()->browser_policy_connector_chromeos();
197 policy::DeviceCloudPolicyManagerChromeOS* policy_manager =
198 connector->GetDeviceCloudPolicyManager();
199
200 policy::CloudPolicyStore *store = policy_manager->core()->store();
201
202 const enterprise_management::PolicyData* policy = store->policy();
203
204 std::string annotated_asset_id = policy ? policy->annotated_asset_id()
205 : std::string();
206 std::string annotated_location = policy ? policy->annotated_location()
207 : std::string();
208
209 data.SetString("device_asset_id", annotated_asset_id);
210 data.SetString("device_location", annotated_location);
211
212 OnBeforeShowNaming(data);
213 ShowStep(kEnrollmentStepNaming);
Mattias Nissler (ping if slow) 2015/04/10 12:22:29 These two should be replaced by a single JS call t
Polina Bondarenko 2015/04/14 14:15:47 Done.
214 }
215
187 void EnrollmentScreenHandler::ShowEnrollmentSpinnerScreen() { 216 void EnrollmentScreenHandler::ShowEnrollmentSpinnerScreen() {
188 ShowStep(kEnrollmentStepWorking); 217 ShowStep(kEnrollmentStepWorking);
189 } 218 }
190 219
191 void EnrollmentScreenHandler::ShowAuthError( 220 void EnrollmentScreenHandler::ShowAuthError(
192 const GoogleServiceAuthError& error) { 221 const GoogleServiceAuthError& error) {
193 switch (error.state()) { 222 switch (error.state()) {
194 case GoogleServiceAuthError::NONE: 223 case GoogleServiceAuthError::NONE:
195 case GoogleServiceAuthError::CAPTCHA_REQUIRED: 224 case GoogleServiceAuthError::CAPTCHA_REQUIRED:
196 case GoogleServiceAuthError::TWO_FACTOR: 225 case GoogleServiceAuthError::TWO_FACTOR:
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 policy::FormatStoreStatus(status.store_status(), 349 policy::FormatStoreStatus(status.store_status(),
321 status.validation_status())), 350 status.validation_status())),
322 true); 351 true);
323 return; 352 return;
324 case policy::EnrollmentStatus::STATUS_STORE_TOKEN_AND_ID_FAILED: 353 case policy::EnrollmentStatus::STATUS_STORE_TOKEN_AND_ID_FAILED:
325 // This error should not happen for enterprise enrollment. 354 // This error should not happen for enterprise enrollment.
326 ShowError(IDS_ENTERPRISE_ENROLLMENT_STATUS_STORE_TOKEN_AND_ID_FAILED, 355 ShowError(IDS_ENTERPRISE_ENROLLMENT_STATUS_STORE_TOKEN_AND_ID_FAILED,
327 true); 356 true);
328 NOTREACHED(); 357 NOTREACHED();
329 return; 358 return;
359 case policy::EnrollmentStatus::STATUS_DEVICE_NAMING_FAILED:
360 ShowError(IDS_ENTERPRISE_ENROLLMENT_DEVICE_NAMING_ERROR, false);
361 return;
330 } 362 }
331 NOTREACHED(); 363 NOTREACHED();
332 } 364 }
333 365
334 // EnrollmentScreenHandler BaseScreenHandler implementation ----- 366 // EnrollmentScreenHandler BaseScreenHandler implementation -----
335 367
336 void EnrollmentScreenHandler::Initialize() { 368 void EnrollmentScreenHandler::Initialize() {
337 if (show_on_init_) { 369 if (show_on_init_) {
338 Show(); 370 Show();
339 show_on_init_ = false; 371 show_on_init_ = false;
340 } 372 }
341 } 373 }
342 374
343 void EnrollmentScreenHandler::DeclareLocalizedValues( 375 void EnrollmentScreenHandler::DeclareLocalizedValues(
344 ::login::LocalizedValuesBuilder* builder) { 376 ::login::LocalizedValuesBuilder* builder) {
345 builder->Add("oauthEnrollScreenTitle", 377 builder->Add("oauthEnrollScreenTitle",
346 IDS_ENTERPRISE_ENROLLMENT_SCREEN_TITLE); 378 IDS_ENTERPRISE_ENROLLMENT_SCREEN_TITLE);
347 builder->Add("oauthEnrollDescription", IDS_ENTERPRISE_ENROLLMENT_DESCRIPTION); 379 builder->Add("oauthEnrollDescription", IDS_ENTERPRISE_ENROLLMENT_DESCRIPTION);
348 builder->Add("oauthEnrollReEnrollmentText", 380 builder->Add("oauthEnrollReEnrollmentText",
349 IDS_ENTERPRISE_ENROLLMENT_RE_ENROLLMENT_TEXT); 381 IDS_ENTERPRISE_ENROLLMENT_RE_ENROLLMENT_TEXT);
350 builder->Add("oauthEnrollRetry", IDS_ENTERPRISE_ENROLLMENT_RETRY); 382 builder->Add("oauthEnrollRetry", IDS_ENTERPRISE_ENROLLMENT_RETRY);
351 builder->Add("oauthEnrollCancel", IDS_ENTERPRISE_ENROLLMENT_CANCEL); 383 builder->Add("oauthEnrollCancel", IDS_ENTERPRISE_ENROLLMENT_CANCEL);
352 builder->Add("oauthEnrollBack", IDS_ENTERPRISE_ENROLLMENT_BACK); 384 builder->Add("oauthEnrollBack", IDS_ENTERPRISE_ENROLLMENT_BACK);
353 builder->Add("oauthEnrollDone", IDS_ENTERPRISE_ENROLLMENT_DONE); 385 builder->Add("oauthEnrollDone", IDS_ENTERPRISE_ENROLLMENT_DONE);
386 builder->Add("oauthEnrollContinue", IDS_ENTERPRISE_ENROLLMENT_CONTINUE);
354 builder->Add("oauthEnrollSuccess", IDS_ENTERPRISE_ENROLLMENT_SUCCESS); 387 builder->Add("oauthEnrollSuccess", IDS_ENTERPRISE_ENROLLMENT_SUCCESS);
388 builder->Add("oauthEnrollNaming", IDS_ENTERPRISE_ENROLLMENT_NAMING);
355 builder->Add("oauthEnrollExplainLink", 389 builder->Add("oauthEnrollExplainLink",
356 IDS_ENTERPRISE_ENROLLMENT_EXPLAIN_LINK); 390 IDS_ENTERPRISE_ENROLLMENT_EXPLAIN_LINK);
357 builder->Add("oauthEnrollWorking", IDS_ENTERPRISE_ENROLLMENT_WORKING); 391 builder->Add("oauthEnrollWorking", IDS_ENTERPRISE_ENROLLMENT_WORKING);
392 builder->Add("oauthEnrollAssetIdLabel",
393 IDS_ENTERPRISE_ENROLLMENT_ASSET_ID_LABEL);
394 builder->Add("oauthEnrollLocationLabel",
395 IDS_ENTERPRISE_ENROLLMENT_LOCATION_LABEL);
358 } 396 }
359 397
360 OobeUI::Screen EnrollmentScreenHandler::GetCurrentScreen() const { 398 OobeUI::Screen EnrollmentScreenHandler::GetCurrentScreen() const {
361 OobeUI::Screen screen = OobeUI::SCREEN_UNKNOWN; 399 OobeUI::Screen screen = OobeUI::SCREEN_UNKNOWN;
362 OobeUI* oobe_ui = static_cast<OobeUI*>(web_ui()->GetController()); 400 OobeUI* oobe_ui = static_cast<OobeUI*>(web_ui()->GetController());
363 if (oobe_ui) 401 if (oobe_ui)
364 screen = oobe_ui->current_screen(); 402 screen = oobe_ui->current_screen();
365 return screen; 403 return screen;
366 } 404 }
367 405
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
509 frame_error_ = frame_error; 547 frame_error_ = frame_error;
510 548
511 if (network_state_informer_->state() != NetworkStateInformer::ONLINE) 549 if (network_state_informer_->state() != NetworkStateInformer::ONLINE)
512 return; 550 return;
513 if (frame_error_) 551 if (frame_error_)
514 UpdateState(NetworkError::ERROR_REASON_FRAME_ERROR); 552 UpdateState(NetworkError::ERROR_REASON_FRAME_ERROR);
515 else 553 else
516 UpdateState(NetworkError::ERROR_REASON_UPDATE); 554 UpdateState(NetworkError::ERROR_REASON_UPDATE);
517 } 555 }
518 556
557 void EnrollmentScreenHandler::HandleDeviceNaming(const std::string& asset_id,
Mattias Nissler (ping if slow) 2015/04/10 12:22:29 nit: Let's improve the naming here, i.e. rename to
Polina Bondarenko 2015/04/14 14:15:47 Done.
558 const std::string& location) {
559 controller_->OnDeviceNaming(asset_id, location);
560 }
561
519 void EnrollmentScreenHandler::ShowStep(const char* step) { 562 void EnrollmentScreenHandler::ShowStep(const char* step) {
520 CallJS("showStep", std::string(step)); 563 CallJS("showStep", std::string(step));
521 } 564 }
522 565
523 void EnrollmentScreenHandler::ShowError(int message_id, bool retry) { 566 void EnrollmentScreenHandler::ShowError(int message_id, bool retry) {
524 ShowErrorMessage(l10n_util::GetStringUTF8(message_id), retry); 567 ShowErrorMessage(l10n_util::GetStringUTF8(message_id), retry);
525 } 568 }
526 569
527 void EnrollmentScreenHandler::ShowErrorMessage(const std::string& message, 570 void EnrollmentScreenHandler::ShowErrorMessage(const std::string& message,
528 bool retry) { 571 bool retry) {
(...skipping 18 matching lines...) Expand all
547 : kEnrollmentHelpTopicRegular); 590 : kEnrollmentHelpTopicRegular);
548 591
549 ShowScreen(OobeUI::kScreenOobeEnrollment, &screen_data); 592 ShowScreen(OobeUI::kScreenOobeEnrollment, &screen_data);
550 if (first_show_) { 593 if (first_show_) {
551 first_show_ = false; 594 first_show_ = false;
552 UpdateStateInternal(NetworkError::ERROR_REASON_UPDATE, true); 595 UpdateStateInternal(NetworkError::ERROR_REASON_UPDATE, true);
553 } 596 }
554 histogram_helper_->OnScreenShow(); 597 histogram_helper_->OnScreenShow();
555 } 598 }
556 599
600 void EnrollmentScreenHandler::OnBeforeShowNaming(
601 const base::DictionaryValue& data) {
602 CallJS("onBeforeShowNaming", data);
603 }
604
557 } // namespace chromeos 605 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698