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

Unified Diff: chrome/browser/chromeos/arc/arc_auth_service.cc

Issue 2173103002: Recategorize ARC auth sign in errors. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update error code. 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/arc/arc_auth_service.cc
diff --git a/chrome/browser/chromeos/arc/arc_auth_service.cc b/chrome/browser/chromeos/arc/arc_auth_service.cc
index c20b7401e98994688138b9c3ba3d02006c883521..643086e4e790a875a8e1d846479fbcae35678592 100644
--- a/chrome/browser/chromeos/arc/arc_auth_service.cc
+++ b/chrome/browser/chromeos/arc/arc_auth_service.cc
@@ -87,6 +87,47 @@ ash::ShelfDelegate* GetShelfDelegate() {
return nullptr;
}
+ProvisioningResult ConvertArcSignInFailureReasonToProvisioningResult(
+ arc::mojom::ArcSignInFailureReason reason) {
+ using ArcSignInFailureReason = arc::mojom::ArcSignInFailureReason;
+
+ switch (reason) {
+ case ArcSignInFailureReason::UNKNOWN_ERROR:
+ return ProvisioningResult::UNKNOWN_ERROR;
+ case ArcSignInFailureReason::MOJO_VERSION_MISMATCH:
+ return ProvisioningResult::MOJO_VERSION_MISMATCH;
+ case ArcSignInFailureReason::MOJO_CALL_TIMEOUT:
+ return ProvisioningResult::MOJO_CALL_TIMEOUT;
+ case ArcSignInFailureReason::DEVICE_CHECK_IN_FAILED:
+ return ProvisioningResult::DEVICE_CHECK_IN_FAILED;
+ case ArcSignInFailureReason::GMS_SIGN_IN_FAILED:
+ return ProvisioningResult::GMS_SIGN_IN_FAILED;
+ case ArcSignInFailureReason::GMS_SIGN_IN_TIMEOUT:
+ return ProvisioningResult::GMS_SIGN_IN_TIMEOUT;
+ case ArcSignInFailureReason::GMS_NETWORK_ERROR:
+ return ProvisioningResult::GMS_NETWORK_ERROR;
+ case ArcSignInFailureReason::GMS_SERVICE_UNAVAILABLE:
+ return ProvisioningResult::GMS_SERVICE_UNAVAILABLE;
+ case ArcSignInFailureReason::GMS_BAD_AUTHENTICATION:
+ return ProvisioningResult::GMS_BAD_AUTHENTICATION;
+ case ArcSignInFailureReason::GMS_EMPTY_CONSUMER_PKG_OR_SIG:
+ return ProvisioningResult::GMS_EMPTY_CONSUMER_PKG_OR_SIG;
+ case ArcSignInFailureReason::GMS_NEEDS_2F:
+ return ProvisioningResult::GMS_NEEDS_2F;
+ case ArcSignInFailureReason::GMS_NEEDS_POST_SIGN_IN_FLOW:
+ return ProvisioningResult::GMS_NEEDS_POST_SIGN_IN_FLOW;
+ case ArcSignInFailureReason::GMS_NEEDS_BROWSER:
+ return ProvisioningResult::GMS_NEEDS_BROWSER;
+ case ArcSignInFailureReason::CLOUD_PROVISION_FLOW_FAILED:
+ return ProvisioningResult::CLOUD_PROVISION_FLOW_FAILED;
+ case ArcSignInFailureReason::CLOUD_PROVISION_FLOW_TIMEOUT:
+ return ProvisioningResult::CLOUD_PROVISION_FLOW_TIMEOUT;
Junichi Uekawa 2016/07/26 06:22:27 my eyes hurt trying to compare and find a typo / c
hidehiko 2016/07/26 13:02:58 Replaced by a macro.
+ default:
+ LOG(ERROR) << "unknown reason: " << static_cast<int>(reason);
+ return ProvisioningResult::UNKNOWN_ERROR;
+ }
+}
+
} // namespace
ArcAuthService::ArcAuthService(ArcBridgeService* bridge_service)
@@ -198,7 +239,7 @@ void ArcAuthService::OnBridgeStopped(ArcBridgeService::StopReason reason) {
// Using SERVICE_UNAVAILABLE instead of UNKNOWN_ERROR, since the latter
// causes this code to not try to stop ARC, so it would retry without the
// user noticing.
- OnSignInFailed(mojom::ArcSignInFailureReason::SERVICE_UNAVAILABLE);
+ OnSignInFailedInternal(ProvisioningResult::ARC_STOPPED);
}
if (!clear_required_)
return;
@@ -258,6 +299,11 @@ void ArcAuthService::OnSignInComplete() {
}
void ArcAuthService::OnSignInFailed(arc::mojom::ArcSignInFailureReason reason) {
+ OnSignInFailedInternal(
+ ConvertArcSignInFailureReasonToProvisioningResult(reason));
+}
+
+void ArcAuthService::OnSignInFailedInternal(ProvisioningResult result) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
DCHECK_EQ(state_, State::ACTIVE);
DCHECK(!sign_in_time_.is_null());
@@ -266,42 +312,41 @@ void ArcAuthService::OnSignInFailed(arc::mojom::ArcSignInFailureReason reason) {
UpdateProvisioningTiming(base::Time::Now() - sign_in_time_, false,
IsAccountManaged(profile_));
+ UpdateOptInCancelUMA(OptInCancelReason::CLOUD_PROVISION_FLOW_FAIL);
victorhsieh 2016/07/25 20:30:41 Why it's always CLOUD_PROVISION_FLOW_FAIL now?
hidehiko 2016/07/26 13:02:58 The previous code is sending dupped error status v
+ UpdateProvisioningResultUMA(result);
+
int error_message_id;
- switch (reason) {
- case mojom::ArcSignInFailureReason::NETWORK_ERROR:
+ switch (result) {
+ case ProvisioningResult::GMS_NETWORK_ERROR:
error_message_id = IDS_ARC_SIGN_IN_NETWORK_ERROR;
- UpdateOptInCancelUMA(OptInCancelReason::NETWORK_ERROR);
- UpdateProvisioningResultUMA(ProvisioningResult::NETWORK_ERROR);
break;
- case mojom::ArcSignInFailureReason::SERVICE_UNAVAILABLE:
+ case ProvisioningResult::GMS_SERVICE_UNAVAILABLE:
victorhsieh 2016/07/25 20:30:41 FWIW, this SERVICE_UNAVAILABLE is just an edge cas
hidehiko 2016/07/26 13:02:58 SERVICE_UNAVAILABLE was used various purpose in th
+ case ProvisioningResult::GMS_SIGN_IN_FAILED:
+ case ProvisioningResult::GMS_SIGN_IN_TIMEOUT:
error_message_id = IDS_ARC_SIGN_IN_SERVICE_UNAVAILABLE_ERROR;
- UpdateOptInCancelUMA(OptInCancelReason::SERVICE_UNAVAILABLE);
- UpdateProvisioningResultUMA(ProvisioningResult::SERVICE_UNAVAILABLE);
break;
- case mojom::ArcSignInFailureReason::BAD_AUTHENTICATION:
+ case ProvisioningResult::GMS_BAD_AUTHENTICATION:
+ case ProvisioningResult::GMS_EMPTY_CONSUMER_PKG_OR_SIG:
+ case ProvisioningResult::GMS_NEEDS_2F:
+ case ProvisioningResult::GMS_NEEDS_POST_SIGN_IN_FLOW:
+ case ProvisioningResult::GMS_NEEDS_BROWSER:
error_message_id = IDS_ARC_SIGN_IN_BAD_AUTHENTICATION_ERROR;
- UpdateOptInCancelUMA(OptInCancelReason::BAD_AUTHENTICATION);
- UpdateProvisioningResultUMA(ProvisioningResult::BAD_AUTHENTICATION);
break;
- case mojom::ArcSignInFailureReason::GMS_CORE_NOT_AVAILABLE:
+ case ProvisioningResult::DEVICE_CHECK_IN_FAILED:
error_message_id = IDS_ARC_SIGN_IN_GMS_NOT_AVAILABLE_ERROR;
- UpdateOptInCancelUMA(OptInCancelReason::GMS_CORE_NOT_AVAILABLE);
- UpdateProvisioningResultUMA(ProvisioningResult::GMS_CORE_NOT_AVAILABLE);
break;
- case mojom::ArcSignInFailureReason::CLOUD_PROVISION_FLOW_FAIL:
+ case ProvisioningResult::CLOUD_PROVISION_FLOW_FAILED:
+ case ProvisioningResult::CLOUD_PROVISION_FLOW_TIMEOUT:
error_message_id = IDS_ARC_SIGN_IN_CLOUD_PROVISION_FLOW_FAIL_ERROR;
- UpdateOptInCancelUMA(OptInCancelReason::CLOUD_PROVISION_FLOW_FAIL);
- UpdateProvisioningResultUMA(
- ProvisioningResult::CLOUD_PROVISION_FLOW_FAIL);
break;
default:
error_message_id = IDS_ARC_SIGN_IN_UNKNOWN_ERROR;
- UpdateOptInCancelUMA(OptInCancelReason::UNKNOWN_ERROR);
- UpdateProvisioningResultUMA(ProvisioningResult::UNKNOWN_ERROR);
+ break;
}
- if (reason == mojom::ArcSignInFailureReason::CLOUD_PROVISION_FLOW_FAIL ||
- reason == mojom::ArcSignInFailureReason::UNKNOWN_ERROR) {
+ if (result == ProvisioningResult::CLOUD_PROVISION_FLOW_FAILED ||
+ result == ProvisioningResult::CLOUD_PROVISION_FLOW_TIMEOUT ||
+ result == ProvisioningResult::UNKNOWN_ERROR) {
clear_required_ = true;
// We'll delay shutting down the bridge in this case to allow people to send
// feedback.

Powered by Google App Engine
This is Rietveld 408576698