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/chromeos/login/enrollment/enrollment_screen.h" | 5 #include "chrome/browser/chromeos/login/enrollment/enrollment_screen.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 | 71 |
72 EnrollmentScreen::~EnrollmentScreen() { | 72 EnrollmentScreen::~EnrollmentScreen() { |
73 if (remora_controller_) | 73 if (remora_controller_) |
74 remora_controller_->RemoveObserver(this); | 74 remora_controller_->RemoveObserver(this); |
75 } | 75 } |
76 | 76 |
77 void EnrollmentScreen::SetParameters( | 77 void EnrollmentScreen::SetParameters( |
78 EnrollmentScreenActor::EnrollmentMode enrollment_mode, | 78 EnrollmentScreenActor::EnrollmentMode enrollment_mode, |
79 const std::string& management_domain, | 79 const std::string& management_domain, |
80 const std::string& user, | 80 const std::string& user, |
81 const std::string& auth_token, | |
82 pairing_chromeos::ControllerPairingController* shark_controller, | 81 pairing_chromeos::ControllerPairingController* shark_controller, |
83 pairing_chromeos::HostPairingController* remora_controller) { | 82 pairing_chromeos::HostPairingController* remora_controller) { |
84 enrollment_mode_ = enrollment_mode; | 83 enrollment_mode_ = enrollment_mode; |
85 user_ = user.empty() ? user : gaia::CanonicalizeEmail(user); | 84 user_ = user.empty() ? user : gaia::CanonicalizeEmail(user); |
86 auth_token_ = auth_token; | |
87 shark_controller_ = shark_controller; | 85 shark_controller_ = shark_controller; |
88 if (remora_controller_) | 86 if (remora_controller_) |
89 remora_controller_->RemoveObserver(this); | 87 remora_controller_->RemoveObserver(this); |
90 remora_controller_ = remora_controller; | 88 remora_controller_ = remora_controller; |
91 if (remora_controller_) | 89 if (remora_controller_) |
92 remora_controller_->AddObserver(this); | 90 remora_controller_->AddObserver(this); |
93 actor_->SetParameters(this, enrollment_mode_, management_domain); | 91 actor_->SetParameters(this, enrollment_mode_, management_domain); |
94 } | 92 } |
95 | 93 |
96 void EnrollmentScreen::PrepareToShow() { | 94 void EnrollmentScreen::PrepareToShow() { |
97 actor_->PrepareToShow(); | 95 actor_->PrepareToShow(); |
98 } | 96 } |
99 | 97 |
100 void EnrollmentScreen::Show() { | 98 void EnrollmentScreen::Show() { |
101 if (is_auto_enrollment() && !enrollment_failed_once_) { | 99 if (is_auto_enrollment() && !enrollment_failed_once_) { |
102 actor_->Show(); | 100 actor_->Show(); |
103 UMA(policy::kMetricEnrollmentAutoStarted); | 101 UMA(policy::kMetricEnrollmentAutoStarted); |
104 actor_->ShowEnrollmentSpinnerScreen(); | 102 actor_->ShowEnrollmentSpinnerScreen(); |
105 actor_->FetchOAuthToken(); | 103 actor_->FetchOAuthToken(); |
106 } else if (auth_token_.empty()) { | 104 } else { |
107 UMA(policy::kMetricEnrollmentTriggered); | 105 UMA(policy::kMetricEnrollmentTriggered); |
108 actor_->ResetAuth(base::Bind(&EnrollmentScreen::ShowSigninScreen, | 106 actor_->ResetAuth(base::Bind(&EnrollmentScreen::ShowSigninScreen, |
109 weak_ptr_factory_.GetWeakPtr())); | 107 weak_ptr_factory_.GetWeakPtr())); |
110 } else { | |
111 actor_->Show(); | |
112 actor_->ShowEnrollmentSpinnerScreen(); | |
113 OnOAuthTokenAvailable(auth_token_); | |
114 } | 108 } |
115 } | 109 } |
116 | 110 |
117 void EnrollmentScreen::Hide() { | 111 void EnrollmentScreen::Hide() { |
118 actor_->Hide(); | 112 actor_->Hide(); |
119 weak_ptr_factory_.InvalidateWeakPtrs(); | 113 weak_ptr_factory_.InvalidateWeakPtrs(); |
120 } | 114 } |
121 | 115 |
122 std::string EnrollmentScreen::GetName() const { | 116 std::string EnrollmentScreen::GetName() const { |
123 return WizardController::kEnrollmentScreenName; | 117 return WizardController::kEnrollmentScreenName; |
124 } | 118 } |
125 | 119 |
126 void EnrollmentScreen::PairingStageChanged(Stage new_stage) { | 120 void EnrollmentScreen::PairingStageChanged(Stage new_stage) { |
127 DCHECK(remora_controller_); | 121 DCHECK(remora_controller_); |
128 if (new_stage == HostPairingController::STAGE_FINISHED) { | 122 if (new_stage == HostPairingController::STAGE_FINISHED) { |
129 remora_controller_->RemoveObserver(this); | 123 remora_controller_->RemoveObserver(this); |
130 remora_controller_ = NULL; | 124 remora_controller_ = NULL; |
131 // TODO(zork): Check that this is the best exit status. crbug.com/412798 | 125 OnConfirmationClosed(); |
132 get_screen_observer()->OnExit( | |
133 WizardController::ENTERPRISE_AUTO_MAGIC_ENROLLMENT_COMPLETED); | |
134 } | 126 } |
135 } | 127 } |
136 | 128 |
137 void EnrollmentScreen::ConfigureHost(bool accepted_eula, | 129 void EnrollmentScreen::ConfigureHost(bool accepted_eula, |
138 const std::string& lang, | 130 const std::string& lang, |
139 const std::string& timezone, | 131 const std::string& timezone, |
140 bool send_reports, | 132 bool send_reports, |
141 const std::string& keyboard_layout) { | 133 const std::string& keyboard_layout) { |
142 } | 134 } |
143 | 135 |
144 void EnrollmentScreen::EnrollHost(const std::string& auth_token) { | 136 void EnrollmentScreen::EnrollHost(const std::string& auth_token) { |
145 // TODO(achuith, zork): Move this to ConfigureHost (crbug.com/419512). | 137 // TODO(achuith, zork): Move this to ConfigureHost (crbug.com/419512). |
146 StartupUtils::MarkEulaAccepted(); | 138 StartupUtils::MarkEulaAccepted(); |
147 | 139 |
148 actor_->Show(); | 140 actor_->Show(); |
149 actor_->ShowEnrollmentSpinnerScreen(); | 141 actor_->ShowEnrollmentSpinnerScreen(); |
150 OnOAuthTokenAvailable(auth_token); | 142 OnOAuthTokenAvailable(auth_token); |
| 143 if (remora_controller_) { |
| 144 remora_controller_->OnEnrollmentStatusChanged( |
| 145 HostPairingController::ENROLLMENT_STATUS_ENROLLING); |
| 146 } |
151 } | 147 } |
152 | 148 |
153 void EnrollmentScreen::OnLoginDone(const std::string& user) { | 149 void EnrollmentScreen::OnLoginDone(const std::string& user) { |
154 elapsed_timer_.reset(new base::ElapsedTimer()); | 150 elapsed_timer_.reset(new base::ElapsedTimer()); |
155 user_ = gaia::CanonicalizeEmail(user); | 151 user_ = gaia::CanonicalizeEmail(user); |
156 | 152 |
157 if (is_auto_enrollment()) | 153 if (is_auto_enrollment()) |
158 UMA(policy::kMetricEnrollmentAutoRestarted); | 154 UMA(policy::kMetricEnrollmentAutoRestarted); |
159 else if (enrollment_failed_once_) | 155 else if (enrollment_failed_once_) |
160 UMA(policy::kMetricEnrollmentRestarted); | 156 UMA(policy::kMetricEnrollmentRestarted); |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
319 | 315 |
320 void EnrollmentScreen::ReportEnrollmentStatus(policy::EnrollmentStatus status) { | 316 void EnrollmentScreen::ReportEnrollmentStatus(policy::EnrollmentStatus status) { |
321 switch (status.status()) { | 317 switch (status.status()) { |
322 case policy::EnrollmentStatus::STATUS_SUCCESS: | 318 case policy::EnrollmentStatus::STATUS_SUCCESS: |
323 StartupUtils::MarkDeviceRegistered( | 319 StartupUtils::MarkDeviceRegistered( |
324 base::Bind(&EnrollmentScreen::ShowEnrollmentStatusOnSuccess, | 320 base::Bind(&EnrollmentScreen::ShowEnrollmentStatusOnSuccess, |
325 weak_ptr_factory_.GetWeakPtr(), | 321 weak_ptr_factory_.GetWeakPtr(), |
326 status)); | 322 status)); |
327 UMA(is_auto_enrollment() ? policy::kMetricEnrollmentAutoOK | 323 UMA(is_auto_enrollment() ? policy::kMetricEnrollmentAutoOK |
328 : policy::kMetricEnrollmentOK); | 324 : policy::kMetricEnrollmentOK); |
329 if (remora_controller_) | 325 if (remora_controller_) { |
330 remora_controller_->SetEnrollmentComplete(true); | 326 remora_controller_->OnEnrollmentStatusChanged( |
| 327 HostPairingController::ENROLLMENT_STATUS_SUCCESS); |
| 328 } |
331 return; | 329 return; |
332 case policy::EnrollmentStatus::STATUS_REGISTRATION_FAILED: | 330 case policy::EnrollmentStatus::STATUS_REGISTRATION_FAILED: |
333 case policy::EnrollmentStatus::STATUS_POLICY_FETCH_FAILED: | 331 case policy::EnrollmentStatus::STATUS_POLICY_FETCH_FAILED: |
334 switch (status.client_status()) { | 332 switch (status.client_status()) { |
335 case policy::DM_STATUS_SUCCESS: | 333 case policy::DM_STATUS_SUCCESS: |
336 NOTREACHED(); | 334 NOTREACHED(); |
337 break; | 335 break; |
338 case policy::DM_STATUS_REQUEST_INVALID: | 336 case policy::DM_STATUS_REQUEST_INVALID: |
339 UMAFailure(policy::kMetricEnrollmentRegisterPolicyPayloadInvalid); | 337 UMAFailure(policy::kMetricEnrollmentRegisterPolicyPayloadInvalid); |
340 break; | 338 break; |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
413 UMAFailure(policy::kMetricEnrollmentRobotRefreshTokenStoreFailed); | 411 UMAFailure(policy::kMetricEnrollmentRobotRefreshTokenStoreFailed); |
414 break; | 412 break; |
415 case policy::EnrollmentStatus::STATUS_STORE_TOKEN_AND_ID_FAILED: | 413 case policy::EnrollmentStatus::STATUS_STORE_TOKEN_AND_ID_FAILED: |
416 // This error should not happen for enterprise enrollment, it only affects | 414 // This error should not happen for enterprise enrollment, it only affects |
417 // consumer enrollment. | 415 // consumer enrollment. |
418 UMAFailure(policy::kMetricEnrollmentStoreTokenAndIdFailed); | 416 UMAFailure(policy::kMetricEnrollmentStoreTokenAndIdFailed); |
419 NOTREACHED(); | 417 NOTREACHED(); |
420 break; | 418 break; |
421 } | 419 } |
422 | 420 |
423 if (remora_controller_) | 421 if (remora_controller_) { |
424 remora_controller_->SetEnrollmentComplete(false); | 422 remora_controller_->OnEnrollmentStatusChanged( |
| 423 HostPairingController::ENROLLMENT_STATUS_FAILURE); |
| 424 } |
425 enrollment_failed_once_ = true; | 425 enrollment_failed_once_ = true; |
426 if (elapsed_timer_) | 426 if (elapsed_timer_) |
427 UMA_ENROLLMENT_TIME("Enterprise.EnrollmentTime.Failure", elapsed_timer_); | 427 UMA_ENROLLMENT_TIME("Enterprise.EnrollmentTime.Failure", elapsed_timer_); |
428 actor_->ShowEnrollmentStatus(status); | 428 actor_->ShowEnrollmentStatus(status); |
429 } | 429 } |
430 | 430 |
431 void EnrollmentScreen::UMA(policy::MetricEnrollment sample) { | 431 void EnrollmentScreen::UMA(policy::MetricEnrollment sample) { |
432 switch (enrollment_mode_) { | 432 switch (enrollment_mode_) { |
433 case EnrollmentScreenActor::ENROLLMENT_MODE_MANUAL: | 433 case EnrollmentScreenActor::ENROLLMENT_MODE_MANUAL: |
434 case EnrollmentScreenActor::ENROLLMENT_MODE_AUTO: | 434 case EnrollmentScreenActor::ENROLLMENT_MODE_AUTO: |
(...skipping 16 matching lines...) Expand all Loading... |
451 sample = policy::kMetricEnrollmentAutoFailed; | 451 sample = policy::kMetricEnrollmentAutoFailed; |
452 UMA(sample); | 452 UMA(sample); |
453 } | 453 } |
454 | 454 |
455 void EnrollmentScreen::ShowSigninScreen() { | 455 void EnrollmentScreen::ShowSigninScreen() { |
456 actor_->Show(); | 456 actor_->Show(); |
457 actor_->ShowSigninScreen(); | 457 actor_->ShowSigninScreen(); |
458 } | 458 } |
459 | 459 |
460 } // namespace chromeos | 460 } // namespace chromeos |
OLD | NEW |