| OLD | NEW |
| 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 "ash/common/system/chromeos/devicetype_utils.h" | 9 #include "ash/common/system/chromeos/devicetype_utils.h" |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| 11 #include "base/bind_helpers.h" | 11 #include "base/bind_helpers.h" |
| 12 #include "base/command_line.h" |
| 12 #include "base/logging.h" | 13 #include "base/logging.h" |
| 13 #include "base/macros.h" | 14 #include "base/macros.h" |
| 14 #include "base/strings/stringprintf.h" | 15 #include "base/strings/stringprintf.h" |
| 15 #include "base/values.h" | 16 #include "base/values.h" |
| 16 #include "chrome/browser/browser_process.h" | 17 #include "chrome/browser/browser_process.h" |
| 17 #include "chrome/browser/browser_process_platform_part.h" | 18 #include "chrome/browser/browser_process_platform_part.h" |
| 18 #include "chrome/browser/chromeos/login/error_screens_histogram_helper.h" | 19 #include "chrome/browser/chromeos/login/error_screens_histogram_helper.h" |
| 19 #include "chrome/browser/chromeos/login/help_app_launcher.h" | 20 #include "chrome/browser/chromeos/login/help_app_launcher.h" |
| 20 #include "chrome/browser/chromeos/login/screens/network_error.h" | 21 #include "chrome/browser/chromeos/login/screens/network_error.h" |
| 21 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" | 22 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" |
| 22 #include "chrome/browser/chromeos/policy/enrollment_status_chromeos.h" | 23 #include "chrome/browser/chromeos/policy/enrollment_status_chromeos.h" |
| 23 #include "chrome/browser/chromeos/policy/policy_oauth2_token_fetcher.h" | 24 #include "chrome/browser/chromeos/policy/policy_oauth2_token_fetcher.h" |
| 24 #include "chrome/browser/ui/webui/chromeos/login/oobe_screen.h" | 25 #include "chrome/browser/ui/webui/chromeos/login/oobe_screen.h" |
| 25 #include "chrome/grit/generated_resources.h" | 26 #include "chrome/grit/generated_resources.h" |
| 27 #include "chromeos/dbus/authpolicy_client.h" |
| 28 #include "chromeos/dbus/dbus_thread_manager.h" |
| 26 #include "chromeos/network/network_state.h" | 29 #include "chromeos/network/network_state.h" |
| 27 #include "chromeos/network/network_state_handler.h" | 30 #include "chromeos/network/network_state_handler.h" |
| 28 #include "components/login/localized_values_builder.h" | 31 #include "components/login/localized_values_builder.h" |
| 29 #include "components/policy/core/browser/cloud/message_util.h" | 32 #include "components/policy/core/browser/cloud/message_util.h" |
| 33 #include "content/public/browser/browser_thread.h" |
| 30 #include "google_apis/gaia/gaia_auth_util.h" | 34 #include "google_apis/gaia/gaia_auth_util.h" |
| 31 #include "google_apis/gaia/gaia_urls.h" | 35 #include "google_apis/gaia/gaia_urls.h" |
| 32 #include "google_apis/gaia/google_service_auth_error.h" | 36 #include "google_apis/gaia/google_service_auth_error.h" |
| 33 #include "ui/base/l10n/l10n_util.h" | 37 #include "ui/base/l10n/l10n_util.h" |
| 34 | 38 |
| 35 namespace chromeos { | 39 namespace chromeos { |
| 36 namespace { | 40 namespace { |
| 37 | 41 |
| 38 const char kJsScreenPath[] = "login.OAuthEnrollmentScreen"; | 42 const char kJsScreenPath[] = "login.OAuthEnrollmentScreen"; |
| 39 | 43 |
| 40 // Enrollment step names. | 44 // Enrollment step names. |
| 41 const char kEnrollmentStepSignin[] = "signin"; | 45 const char kEnrollmentStepSignin[] = "signin"; |
| 46 const char kEnrollmentStepADJoin[] = "ad-join"; |
| 42 const char kEnrollmentStepSuccess[] = "success"; | 47 const char kEnrollmentStepSuccess[] = "success"; |
| 43 const char kEnrollmentStepWorking[] = "working"; | 48 const char kEnrollmentStepWorking[] = "working"; |
| 44 | 49 |
| 45 // Enrollment mode constants used in the UI. This needs to be kept in sync with | 50 // Enrollment mode constants used in the UI. This needs to be kept in sync with |
| 46 // oobe_screen_oauth_enrollment.js. | 51 // oobe_screen_oauth_enrollment.js. |
| 47 const char kEnrollmentModeUIForced[] = "forced"; | 52 const char kEnrollmentModeUIForced[] = "forced"; |
| 48 const char kEnrollmentModeUIManual[] = "manual"; | 53 const char kEnrollmentModeUIManual[] = "manual"; |
| 49 const char kEnrollmentModeUIRecovery[] = "recovery"; | 54 const char kEnrollmentModeUIRecovery[] = "recovery"; |
| 50 | 55 |
| 51 // Converts |mode| to a mode identifier for the UI. | 56 // Converts |mode| to a mode identifier for the UI. |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 131 | 136 |
| 132 // EnrollmentScreenHandler, WebUIMessageHandler implementation -- | 137 // EnrollmentScreenHandler, WebUIMessageHandler implementation -- |
| 133 | 138 |
| 134 void EnrollmentScreenHandler::RegisterMessages() { | 139 void EnrollmentScreenHandler::RegisterMessages() { |
| 135 AddCallback("toggleFakeEnrollment", | 140 AddCallback("toggleFakeEnrollment", |
| 136 &EnrollmentScreenHandler::HandleToggleFakeEnrollment); | 141 &EnrollmentScreenHandler::HandleToggleFakeEnrollment); |
| 137 AddCallback("oauthEnrollClose", | 142 AddCallback("oauthEnrollClose", |
| 138 &EnrollmentScreenHandler::HandleClose); | 143 &EnrollmentScreenHandler::HandleClose); |
| 139 AddCallback("oauthEnrollCompleteLogin", | 144 AddCallback("oauthEnrollCompleteLogin", |
| 140 &EnrollmentScreenHandler::HandleCompleteLogin); | 145 &EnrollmentScreenHandler::HandleCompleteLogin); |
| 146 AddCallback("oauthEnrollADCompleteLogin", |
| 147 &EnrollmentScreenHandler::HandleADCompleteLogin); |
| 141 AddCallback("oauthEnrollRetry", | 148 AddCallback("oauthEnrollRetry", |
| 142 &EnrollmentScreenHandler::HandleRetry); | 149 &EnrollmentScreenHandler::HandleRetry); |
| 143 AddCallback("frameLoadingCompleted", | 150 AddCallback("frameLoadingCompleted", |
| 144 &EnrollmentScreenHandler::HandleFrameLoadingCompleted); | 151 &EnrollmentScreenHandler::HandleFrameLoadingCompleted); |
| 145 AddCallback("oauthEnrollAttributes", | 152 AddCallback("oauthEnrollAttributes", |
| 146 &EnrollmentScreenHandler::HandleDeviceAttributesProvided); | 153 &EnrollmentScreenHandler::HandleDeviceAttributesProvided); |
| 147 AddCallback("oauthEnrollOnLearnMore", | 154 AddCallback("oauthEnrollOnLearnMore", |
| 148 &EnrollmentScreenHandler::HandleOnLearnMore); | 155 &EnrollmentScreenHandler::HandleOnLearnMore); |
| 149 } | 156 } |
| 150 | 157 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 170 } | 177 } |
| 171 | 178 |
| 172 void EnrollmentScreenHandler::Hide() { | 179 void EnrollmentScreenHandler::Hide() { |
| 173 } | 180 } |
| 174 | 181 |
| 175 void EnrollmentScreenHandler::ShowSigninScreen() { | 182 void EnrollmentScreenHandler::ShowSigninScreen() { |
| 176 observe_network_failure_ = true; | 183 observe_network_failure_ = true; |
| 177 ShowStep(kEnrollmentStepSignin); | 184 ShowStep(kEnrollmentStepSignin); |
| 178 } | 185 } |
| 179 | 186 |
| 187 void EnrollmentScreenHandler::ShowADJoin() { |
| 188 observe_network_failure_ = false; |
| 189 ShowStep(kEnrollmentStepADJoin); |
| 190 } |
| 191 |
| 180 void EnrollmentScreenHandler::ShowAttributePromptScreen( | 192 void EnrollmentScreenHandler::ShowAttributePromptScreen( |
| 181 const std::string& asset_id, | 193 const std::string& asset_id, |
| 182 const std::string& location) { | 194 const std::string& location) { |
| 183 CallJS("showAttributePromptStep", asset_id, location); | 195 CallJS("showAttributePromptStep", asset_id, location); |
| 184 } | 196 } |
| 185 | 197 |
| 186 void EnrollmentScreenHandler::ShowEnrollmentSpinnerScreen() { | 198 void EnrollmentScreenHandler::ShowEnrollmentSpinnerScreen() { |
| 187 ShowStep(kEnrollmentStepWorking); | 199 ShowStep(kEnrollmentStepWorking); |
| 188 } | 200 } |
| 189 | 201 |
| (...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 378 IDS_ENTERPRISE_ENROLLMENT_EXPLAIN_ATTRIBUTE_LINK); | 390 IDS_ENTERPRISE_ENROLLMENT_EXPLAIN_ATTRIBUTE_LINK); |
| 379 builder->Add("oauthEnrollAttributeExplanation", | 391 builder->Add("oauthEnrollAttributeExplanation", |
| 380 IDS_ENTERPRISE_ENROLLMENT_ATTRIBUTE_EXPLANATION); | 392 IDS_ENTERPRISE_ENROLLMENT_ATTRIBUTE_EXPLANATION); |
| 381 builder->Add("oauthEnrollAssetIdLabel", | 393 builder->Add("oauthEnrollAssetIdLabel", |
| 382 IDS_ENTERPRISE_ENROLLMENT_ASSET_ID_LABEL); | 394 IDS_ENTERPRISE_ENROLLMENT_ASSET_ID_LABEL); |
| 383 builder->Add("oauthEnrollLocationLabel", | 395 builder->Add("oauthEnrollLocationLabel", |
| 384 IDS_ENTERPRISE_ENROLLMENT_LOCATION_LABEL); | 396 IDS_ENTERPRISE_ENROLLMENT_LOCATION_LABEL); |
| 385 builder->Add("oauthEnrollWorking", IDS_ENTERPRISE_ENROLLMENT_WORKING_MESSAGE); | 397 builder->Add("oauthEnrollWorking", IDS_ENTERPRISE_ENROLLMENT_WORKING_MESSAGE); |
| 386 // Do not use AddF for this string as it will be rendered by the JS code. | 398 // Do not use AddF for this string as it will be rendered by the JS code. |
| 387 builder->Add("oauthEnrollAbeSuccess", IDS_ENTERPRISE_ENROLLMENT_ABE_SUCCESS); | 399 builder->Add("oauthEnrollAbeSuccess", IDS_ENTERPRISE_ENROLLMENT_ABE_SUCCESS); |
| 400 builder->Add("oauthEnrollADMachineNameInput", |
| 401 IDS_AD_MACHINE_NAME_INPUT_LABEL); |
| 402 builder->Add("oauthEnrollADDomainJoinWelcomeMessage", |
| 403 IDS_AD_DOMAIN_JOIN_WELCOME_MESSAGE); |
| 404 builder->Add("ADLoginUser", IDS_AD_LOGIN_USER); |
| 405 builder->Add("ADLoginPassword", IDS_AD_LOGIN_PASSWORD); |
| 388 } | 406 } |
| 389 | 407 |
| 390 bool EnrollmentScreenHandler::IsOnEnrollmentScreen() const { | 408 bool EnrollmentScreenHandler::IsOnEnrollmentScreen() const { |
| 391 return (GetCurrentScreen() == OobeScreen::SCREEN_OOBE_ENROLLMENT); | 409 return (GetCurrentScreen() == OobeScreen::SCREEN_OOBE_ENROLLMENT); |
| 392 } | 410 } |
| 393 | 411 |
| 394 bool EnrollmentScreenHandler::IsEnrollmentScreenHiddenByError() const { | 412 bool EnrollmentScreenHandler::IsEnrollmentScreenHiddenByError() const { |
| 395 return (GetCurrentScreen() == OobeScreen::SCREEN_ERROR_MESSAGE && | 413 return (GetCurrentScreen() == OobeScreen::SCREEN_ERROR_MESSAGE && |
| 396 network_error_model_->GetParentScreen() == | 414 network_error_model_->GetParentScreen() == |
| 397 OobeScreen::SCREEN_OOBE_ENROLLMENT); | 415 OobeScreen::SCREEN_OOBE_ENROLLMENT); |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 507 } | 525 } |
| 508 | 526 |
| 509 void EnrollmentScreenHandler::HandleCompleteLogin( | 527 void EnrollmentScreenHandler::HandleCompleteLogin( |
| 510 const std::string& user, | 528 const std::string& user, |
| 511 const std::string& auth_code) { | 529 const std::string& auth_code) { |
| 512 observe_network_failure_ = false; | 530 observe_network_failure_ = false; |
| 513 DCHECK(controller_); | 531 DCHECK(controller_); |
| 514 controller_->OnLoginDone(gaia::SanitizeEmail(user), auth_code); | 532 controller_->OnLoginDone(gaia::SanitizeEmail(user), auth_code); |
| 515 } | 533 } |
| 516 | 534 |
| 535 void EnrollmentScreenHandler::HandleADCompleteLogin( |
| 536 const std::string& machine_name, |
| 537 const std::string& user, |
| 538 const std::string& password) { |
| 539 observe_network_failure_ = false; |
| 540 DCHECK(controller_); |
| 541 chromeos::AuthpolicyClient* client = |
| 542 chromeos::DBusThreadManager::Get()->GetAuthpolicyClient(); |
| 543 |
| 544 client->Join(machine_name, |
| 545 user, |
| 546 password, |
| 547 base::Bind(&EnrollmentScreenHandler::HandleADDomainJoin, |
| 548 weak_ptr_factory_.GetWeakPtr(), |
| 549 machine_name, |
| 550 user)); |
| 551 } |
| 552 |
| 553 void EnrollmentScreenHandler::HandleADDomainJoin( |
| 554 const std::string& machine_name, |
| 555 const std::string& user, |
| 556 int code) { |
| 557 if (code == 0) { |
| 558 controller_->OnADJoined(gaia::ExtractDomainName(user)); |
| 559 } else { |
| 560 CallJS("invalidateAD", machine_name, user); |
| 561 } |
| 562 } |
| 563 |
| 517 void EnrollmentScreenHandler::HandleRetry() { | 564 void EnrollmentScreenHandler::HandleRetry() { |
| 518 DCHECK(controller_); | 565 DCHECK(controller_); |
| 519 controller_->OnRetry(); | 566 controller_->OnRetry(); |
| 520 } | 567 } |
| 521 | 568 |
| 522 void EnrollmentScreenHandler::HandleFrameLoadingCompleted() { | 569 void EnrollmentScreenHandler::HandleFrameLoadingCompleted() { |
| 523 if (network_state_informer_->state() != NetworkStateInformer::ONLINE) | 570 if (network_state_informer_->state() != NetworkStateInformer::ONLINE) |
| 524 return; | 571 return; |
| 525 | 572 |
| 526 UpdateState(NetworkError::ERROR_REASON_UPDATE); | 573 UpdateState(NetworkError::ERROR_REASON_UPDATE); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 574 | 621 |
| 575 ShowScreenWithData(OobeScreen::SCREEN_OOBE_ENROLLMENT, &screen_data); | 622 ShowScreenWithData(OobeScreen::SCREEN_OOBE_ENROLLMENT, &screen_data); |
| 576 if (first_show_) { | 623 if (first_show_) { |
| 577 first_show_ = false; | 624 first_show_ = false; |
| 578 UpdateStateInternal(NetworkError::ERROR_REASON_UPDATE, true); | 625 UpdateStateInternal(NetworkError::ERROR_REASON_UPDATE, true); |
| 579 } | 626 } |
| 580 histogram_helper_->OnScreenShow(); | 627 histogram_helper_->OnScreenShow(); |
| 581 } | 628 } |
| 582 | 629 |
| 583 } // namespace chromeos | 630 } // namespace chromeos |
| OLD | NEW |