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 "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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |