Commit 2de9cf46 authored by mhasank's avatar mhasank Committed by Commit Bot

arc: Simplify cloud dpc error code handling

1. use base::UmaHistogramEnumeration in arc_optin_uma instead of macro
2. simplify the code in arc_session_manager for working with cloud dpc error
3. rename OptInCancelReason enum value to PROVISIONING_FAILED to indicate all kinds of failures

BUG=b:62613791
TEST=deploy to dut, disable playstore, re-enable playstore, successfully
finish the authorization flow
TEST=deploy android to dut with forced cloud dpc failure, enable
playstore, verify uma histogram is present in chrome://histograms

Change-Id: I0ec29e65c68ecb71551e200d06f31e990553d57c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2399881Reviewed-by: default avatarYury Khmel <khmel@chromium.org>
Reviewed-by: default avatarHidehiko Abe <hidehiko@chromium.org>
Commit-Queue: Muhammad Hasan Khan <mhasank@chromium.org>
Cr-Commit-Position: refs/heads/master@{#805642}
parent 010cb689
...@@ -83,7 +83,7 @@ void UpdateProvisioningResultUMA(ProvisioningResult result, ...@@ -83,7 +83,7 @@ void UpdateProvisioningResultUMA(ProvisioningResult result,
void UpdateCloudProvisionFlowErrorUMA(mojom::CloudProvisionFlowError error, void UpdateCloudProvisionFlowErrorUMA(mojom::CloudProvisionFlowError error,
const Profile* profile) { const Profile* profile) {
UMA_HISTOGRAM_ENUMERATION( base::UmaHistogramEnumeration(
GetHistogramNameByUserType("Arc.Provisioning.CloudFlowError", profile), GetHistogramNameByUserType("Arc.Provisioning.CloudFlowError", profile),
error); error);
} }
......
...@@ -57,8 +57,8 @@ enum class OptInCancelReason { ...@@ -57,8 +57,8 @@ enum class OptInCancelReason {
DEPRECATED_BAD_AUTHENTICATION = 4, DEPRECATED_BAD_AUTHENTICATION = 4,
DEPRECATED_GMS_CORE_NOT_AVAILABLE = 5, DEPRECATED_GMS_CORE_NOT_AVAILABLE = 5,
// Cloud provision flow failed. // Provision failed.
CLOUD_PROVISION_FLOW_FAIL = 6, PROVISIONING_FAILED = 6,
// Android management is required for user. // Android management is required for user.
ANDROID_MANAGEMENT_REQUIRED = 7, ANDROID_MANAGEMENT_REQUIRED = 7,
......
...@@ -303,10 +303,8 @@ int GetSignInErrorCode(arc::mojom::ArcSignInErrorPtr signin_error) { ...@@ -303,10 +303,8 @@ int GetSignInErrorCode(arc::mojom::ArcSignInErrorPtr signin_error) {
} }
ArcSupportHost::Error GetCloudProvisionFlowError( ArcSupportHost::Error GetCloudProvisionFlowError(
base::Optional<mojom::CloudProvisionFlowError> cloud_provision_flow_error) { mojom::CloudProvisionFlowError cloud_provision_flow_error) {
DCHECK(cloud_provision_flow_error); switch (cloud_provision_flow_error) {
switch (cloud_provision_flow_error.value()) {
case mojom::CloudProvisionFlowError::ERROR_ENROLLMENT_TOKEN_INVALID: case mojom::CloudProvisionFlowError::ERROR_ENROLLMENT_TOKEN_INVALID:
return ArcSupportHost::Error:: return ArcSupportHost::Error::
SIGN_IN_CLOUD_PROVISION_FLOW_ENROLLMENT_TOKEN_INVALID; SIGN_IN_CLOUD_PROVISION_FLOW_ENROLLMENT_TOKEN_INVALID;
...@@ -591,8 +589,6 @@ void ArcSessionManager::OnProvisioningFinished( ...@@ -591,8 +589,6 @@ void ArcSessionManager::OnProvisioningFinished(
if (scoped_opt_in_tracker_ && !provisioning_successful) if (scoped_opt_in_tracker_ && !provisioning_successful)
scoped_opt_in_tracker_->TrackError(); scoped_opt_in_tracker_->TrackError();
base::Optional<mojom::CloudProvisionFlowError> cloud_provision_flow_error;
if (result == ProvisioningResult::CHROME_SERVER_COMMUNICATION_ERROR) { if (result == ProvisioningResult::CHROME_SERVER_COMMUNICATION_ERROR) {
// TODO(poromov): Consider ARC PublicSession offline mode. // TODO(poromov): Consider ARC PublicSession offline mode.
// Currently ARC session will be exited below, while the main user session // Currently ARC session will be exited below, while the main user session
...@@ -616,15 +612,12 @@ void ArcSessionManager::OnProvisioningFinished( ...@@ -616,15 +612,12 @@ void ArcSessionManager::OnProvisioningFinished(
UpdateProvisioningTiming(base::TimeTicks::Now() - sign_in_start_time_, UpdateProvisioningTiming(base::TimeTicks::Now() - sign_in_start_time_,
provisioning_successful, profile_); provisioning_successful, profile_);
UpdateProvisioningResultUMA(result, profile_); UpdateProvisioningResultUMA(result, profile_);
if (signin_error && signin_error->is_cloud_provision_flow_error()) { if (signin_error && signin_error->is_cloud_provision_flow_error())
cloud_provision_flow_error = UpdateCloudProvisionFlowErrorUMA(
signin_error->get_cloud_provision_flow_error(); signin_error->get_cloud_provision_flow_error(), profile_);
UpdateCloudProvisionFlowErrorUMA(cloud_provision_flow_error.value(),
profile_);
}
if (!provisioning_successful) if (!provisioning_successful)
UpdateOptInCancelUMA(OptInCancelReason::CLOUD_PROVISION_FLOW_FAIL); UpdateOptInCancelUMA(OptInCancelReason::PROVISIONING_FAILED);
} }
if (provisioning_successful) { if (provisioning_successful) {
...@@ -682,7 +675,9 @@ void ArcSessionManager::OnProvisioningFinished( ...@@ -682,7 +675,9 @@ void ArcSessionManager::OnProvisioningFinished(
error = ArcSupportHost::Error::SIGN_IN_GMS_NOT_AVAILABLE_ERROR; error = ArcSupportHost::Error::SIGN_IN_GMS_NOT_AVAILABLE_ERROR;
break; break;
case ProvisioningResult::CLOUD_PROVISION_FLOW_ERROR: case ProvisioningResult::CLOUD_PROVISION_FLOW_ERROR:
error = GetCloudProvisionFlowError(cloud_provision_flow_error); DCHECK(signin_error && signin_error->is_cloud_provision_flow_error());
error = GetCloudProvisionFlowError(
signin_error->get_cloud_provision_flow_error());
break; break;
case ProvisioningResult::CHROME_SERVER_COMMUNICATION_ERROR: case ProvisioningResult::CHROME_SERVER_COMMUNICATION_ERROR:
error = ArcSupportHost::Error::SERVER_COMMUNICATION_ERROR; error = ArcSupportHost::Error::SERVER_COMMUNICATION_ERROR;
......
...@@ -3225,7 +3225,7 @@ Unknown properties are collapsed to zero. --> ...@@ -3225,7 +3225,7 @@ Unknown properties are collapsed to zero. -->
<int value="3" label="DEPRECATED: GMS Services are not available"/> <int value="3" label="DEPRECATED: GMS Services are not available"/>
<int value="4" label="DEPRECATED: Bad authentication returned by server"/> <int value="4" label="DEPRECATED: Bad authentication returned by server"/>
<int value="5" label="DEPRECATED: GMS Core is not available"/> <int value="5" label="DEPRECATED: GMS Core is not available"/>
<int value="6" label="Cloud provision flow failed"/> <int value="6" label="Provisioning failed"/>
<int value="7" label="Android Management required"/> <int value="7" label="Android Management required"/>
<int value="8" label="Busy"/> <int value="8" label="Busy"/>
</enum> </enum>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment