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

Side by Side Diff: chrome/browser/chromeos/arc/arc_auth_service.cc

Issue 2114463002: arc: Notify the user on fatal opt-in flow errors (Closed) Base URL: https://chromium.googlesource.com/a/chromium/src.git@master
Patch Set: Created 4 years, 5 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
« no previous file with comments | « chrome/browser/chromeos/arc/arc_auth_service.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/arc/arc_auth_service.h" 5 #include "chrome/browser/chromeos/arc/arc_auth_service.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "ash/shelf/shelf_delegate.h" 9 #include "ash/shelf/shelf_delegate.h"
10 #include "ash/shell.h" 10 #include "ash/shell.h"
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 188
189 return true; 189 return true;
190 } 190 }
191 191
192 void ArcAuthService::OnAuthInstanceReady() { 192 void ArcAuthService::OnAuthInstanceReady() {
193 arc_bridge_service()->auth_instance()->Init( 193 arc_bridge_service()->auth_instance()->Init(
194 binding_.CreateInterfacePtrAndBind()); 194 binding_.CreateInterfacePtrAndBind());
195 } 195 }
196 196
197 void ArcAuthService::OnBridgeStopped() { 197 void ArcAuthService::OnBridgeStopped() {
198 if (waiting_for_reply_) {
199 // Using SERVICE_UNAVAILABLE instead of UNKNOWN_ERROR, since the latter
200 // causes this code to not try to stop ARC, so it would retry without the
201 // user noticing.
202 OnSignInFailed(arc::mojom::ArcSignInFailureReason::SERVICE_UNAVAILABLE);
203 }
198 if (!clear_required_) 204 if (!clear_required_)
199 return; 205 return;
200 clear_required_ = false; 206 clear_required_ = false;
201 chromeos::DBusThreadManager::Get()->GetSessionManagerClient()->RemoveArcData( 207 chromeos::DBusThreadManager::Get()->GetSessionManagerClient()->RemoveArcData(
202 cryptohome::Identification( 208 cryptohome::Identification(
203 multi_user_util::GetAccountIdFromProfile(profile_))); 209 multi_user_util::GetAccountIdFromProfile(profile_)));
204 } 210 }
205 211
206 std::string ArcAuthService::GetAndResetAuthCode() { 212 std::string ArcAuthService::GetAndResetAuthCode() {
207 DCHECK(thread_checker.Get().CalledOnValidThread()); 213 DCHECK(thread_checker.Get().CalledOnValidThread());
(...skipping 22 matching lines...) Expand all
230 initial_opt_in_ = false; 236 initial_opt_in_ = false;
231 auth_callback_ = callback; 237 auth_callback_ = callback;
232 StartUI(); 238 StartUI();
233 } 239 }
234 240
235 void ArcAuthService::OnSignInComplete() { 241 void ArcAuthService::OnSignInComplete() {
236 DCHECK(thread_checker.Get().CalledOnValidThread()); 242 DCHECK(thread_checker.Get().CalledOnValidThread());
237 DCHECK_EQ(state_, State::ACTIVE); 243 DCHECK_EQ(state_, State::ACTIVE);
238 DCHECK(!sign_in_time_.is_null()); 244 DCHECK(!sign_in_time_.is_null());
239 245
246 waiting_for_reply_ = false;
Luis Héctor Chávez 2016/06/29 23:37:50 If adding this flag is undesirable, all the places
247
240 if (!IsOptInVerificationDisabled() && 248 if (!IsOptInVerificationDisabled() &&
241 !profile_->GetPrefs()->GetBoolean(prefs::kArcSignedIn)) { 249 !profile_->GetPrefs()->GetBoolean(prefs::kArcSignedIn)) {
242 playstore_launcher_.reset( 250 playstore_launcher_.reset(
243 new ArcAppLauncher(profile_, kPlayStoreAppId, true)); 251 new ArcAppLauncher(profile_, kPlayStoreAppId, true));
244 } 252 }
245 253
246 profile_->GetPrefs()->SetBoolean(prefs::kArcSignedIn, true); 254 profile_->GetPrefs()->SetBoolean(prefs::kArcSignedIn, true);
247 CloseUI(); 255 CloseUI();
248 UpdateProvisioningTiming(base::Time::Now() - sign_in_time_, true, 256 UpdateProvisioningTiming(base::Time::Now() - sign_in_time_, true,
249 IsAccountManaged(profile_)); 257 IsAccountManaged(profile_));
250 UpdateProvisioningResultUMA(ProvisioningResult::SUCCESS); 258 UpdateProvisioningResultUMA(ProvisioningResult::SUCCESS);
251 } 259 }
252 260
253 void ArcAuthService::OnSignInFailed(arc::mojom::ArcSignInFailureReason reason) { 261 void ArcAuthService::OnSignInFailed(arc::mojom::ArcSignInFailureReason reason) {
254 DCHECK(thread_checker.Get().CalledOnValidThread()); 262 DCHECK(thread_checker.Get().CalledOnValidThread());
255 DCHECK_EQ(state_, State::ACTIVE); 263 DCHECK_EQ(state_, State::ACTIVE);
256 DCHECK(!sign_in_time_.is_null()); 264 DCHECK(!sign_in_time_.is_null());
257 265
266 waiting_for_reply_ = false;
267
258 UpdateProvisioningTiming(base::Time::Now() - sign_in_time_, false, 268 UpdateProvisioningTiming(base::Time::Now() - sign_in_time_, false,
259 IsAccountManaged(profile_)); 269 IsAccountManaged(profile_));
260 int error_message_id; 270 int error_message_id;
261 switch (reason) { 271 switch (reason) {
262 case arc::mojom::ArcSignInFailureReason::NETWORK_ERROR: 272 case arc::mojom::ArcSignInFailureReason::NETWORK_ERROR:
263 error_message_id = IDS_ARC_SIGN_IN_NETWORK_ERROR; 273 error_message_id = IDS_ARC_SIGN_IN_NETWORK_ERROR;
264 UpdateOptInCancelUMA(OptInCancelReason::NETWORK_ERROR); 274 UpdateOptInCancelUMA(OptInCancelReason::NETWORK_ERROR);
265 UpdateProvisioningResultUMA(ProvisioningResult::NETWORK_ERROR); 275 UpdateProvisioningResultUMA(ProvisioningResult::NETWORK_ERROR);
266 break; 276 break;
267 case arc::mojom::ArcSignInFailureReason::SERVICE_UNAVAILABLE: 277 case arc::mojom::ArcSignInFailureReason::SERVICE_UNAVAILABLE:
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
557 if (state != State::FETCHING_CODE) { 567 if (state != State::FETCHING_CODE) {
558 ShutdownBridgeAndCloseUI(); 568 ShutdownBridgeAndCloseUI();
559 return; 569 return;
560 } 570 }
561 571
562 sign_in_time_ = base::Time::Now(); 572 sign_in_time_ = base::Time::Now();
563 573
564 SetUIPage(UIPage::START_PROGRESS, base::string16()); 574 SetUIPage(UIPage::START_PROGRESS, base::string16());
565 ShutdownBridge(); 575 ShutdownBridge();
566 auth_code_ = auth_code; 576 auth_code_ = auth_code;
577 waiting_for_reply_ = true;
567 StartArc(); 578 StartArc();
568 } 579 }
569 580
570 void ArcAuthService::StartLso() { 581 void ArcAuthService::StartLso() {
571 DCHECK(thread_checker.Get().CalledOnValidThread()); 582 DCHECK(thread_checker.Get().CalledOnValidThread());
572 583
573 // Update UMA only if error (with or without feedback) is currently shown. 584 // Update UMA only if error (with or without feedback) is currently shown.
574 if (ui_page_ == UIPage::ERROR) { 585 if (ui_page_ == UIPage::ERROR) {
575 UpdateOptInActionUMA(OptInActionType::RETRY); 586 UpdateOptInActionUMA(OptInActionType::RETRY);
576 } else if (ui_page_ == UIPage::ERROR_WITH_FEEDBACK) { 587 } else if (ui_page_ == UIPage::ERROR_WITH_FEEDBACK) {
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
718 return os << kStateFetchingCode; 729 return os << kStateFetchingCode;
719 case ArcAuthService::State::ACTIVE: 730 case ArcAuthService::State::ACTIVE:
720 return os << kStateActive; 731 return os << kStateActive;
721 default: 732 default:
722 NOTREACHED(); 733 NOTREACHED();
723 return os; 734 return os;
724 } 735 }
725 } 736 }
726 737
727 } // namespace arc 738 } // namespace arc
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/arc/arc_auth_service.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698