diff options
4 files changed, 28 insertions, 23 deletions
diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java index d779fbf2eabc..551297b253d1 100644 --- a/services/autofill/java/com/android/server/autofill/Session.java +++ b/services/autofill/java/com/android/server/autofill/Session.java @@ -4782,7 +4782,6 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } if (isCredmanIntegrationActive(response)) { - Slog.d(TAG, "Attempting to add Credential Manager callback to pinned entries"); addCredentialManagerCallback(response); } @@ -5713,7 +5712,6 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState /* isPrimary= */ true); updateFillDialogTriggerIdsLocked(); updateTrackedIdsLocked(); - if (mCurrentViewId == null) { return; } diff --git a/services/credentials/java/com/android/server/credentials/GetCandidateRequestSession.java b/services/credentials/java/com/android/server/credentials/GetCandidateRequestSession.java index 3cb98eb4cd7a..eff53de75ff4 100644 --- a/services/credentials/java/com/android/server/credentials/GetCandidateRequestSession.java +++ b/services/credentials/java/com/android/server/credentials/GetCandidateRequestSession.java @@ -41,6 +41,8 @@ import android.service.credentials.CredentialProviderService; import android.service.credentials.PermissionUtils; import android.util.Slog; +import com.android.server.credentials.metrics.ApiStatus; + import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -180,7 +182,7 @@ public class GetCandidateRequestSession extends RequestSession<GetCredentialRequ } else { Slog.w(TAG, "onUiCancellation called but finalResponseReceiver not found"); } - finishSession(/*propagateCancellation=*/false); + finishSession(/*propagateCancellation=*/false, ApiStatus.FAILURE.getMetricCode()); } @Override @@ -221,9 +223,10 @@ public class GetCandidateRequestSession extends RequestSession<GetCredentialRequ resultData.putParcelable( CredentialProviderService.EXTRA_GET_CREDENTIAL_RESPONSE, response); mFinalResponseReceiver.send(Constants.SUCCESS_CREDMAN_SELECTOR, resultData); - finishSession(/*propagateCancellation=*/ false); + finishSession(/*propagateCancellation=*/ false, ApiStatus.SUCCESS.getMetricCode()); } else { Slog.w(TAG, "onFinalResponseReceived result receiver not found for pinned entry"); + finishSession(/*propagateCancellation=*/ false, ApiStatus.FAILURE.getMetricCode()); } } diff --git a/services/credentials/java/com/android/server/credentials/RequestSession.java b/services/credentials/java/com/android/server/credentials/RequestSession.java index 633c9c4cb8e1..a5b9aa68b22e 100644 --- a/services/credentials/java/com/android/server/credentials/RequestSession.java +++ b/services/credentials/java/com/android/server/credentials/RequestSession.java @@ -175,7 +175,7 @@ abstract class RequestSession<T, U, V> implements CredentialManagerUi.Credential () -> { Slog.d(TAG, "Cancellation invoked from the client - clearing session"); boolean isUiActive = maybeCancelUi(); - finishSession(!isUiActive); + finishSession(!isUiActive, ApiStatus.CLIENT_CANCELED.getMetricCode()); } ); } @@ -231,7 +231,8 @@ abstract class RequestSession<T, U, V> implements CredentialManagerUi.Credential return; } if (isSessionCancelled()) { - finishSession(/*propagateCancellation=*/true); + finishSession(/*propagateCancellation=*/true, + ApiStatus.CLIENT_CANCELED.getMetricCode()); return; } String providerId = selection.getProviderId(); @@ -257,11 +258,12 @@ abstract class RequestSession<T, U, V> implements CredentialManagerUi.Credential } } - protected void finishSession(boolean propagateCancellation) { + protected void finishSession(boolean propagateCancellation, int apiStatus) { Slog.i(TAG, "finishing session with propagateCancellation " + propagateCancellation); if (propagateCancellation) { mProviders.values().forEach(ProviderSession::cancelProviderRemoteSession); } + mRequestSessionMetric.logApiCalledAtFinish(apiStatus); mRequestSessionStatus = RequestSessionStatus.COMPLETE; mProviders.clear(); clearRequestSessionLocked(); @@ -326,7 +328,8 @@ abstract class RequestSession<T, U, V> implements CredentialManagerUi.Credential mRequestSessionMetric.logCandidatePhaseMetrics(mProviders); if (isSessionCancelled()) { - finishSession(/*propagateCancellation=*/true); + finishSession(/*propagateCancellation=*/true, + ApiStatus.CLIENT_CANCELED.getMetricCode()); return providerDataList; } @@ -353,23 +356,20 @@ abstract class RequestSession<T, U, V> implements CredentialManagerUi.Credential return; } if (isSessionCancelled()) { - mRequestSessionMetric.logApiCalledAtFinish( - /*apiStatus=*/ ApiStatus.CLIENT_CANCELED.getMetricCode()); - finishSession(/*propagateCancellation=*/true); + finishSession(/*propagateCancellation=*/true, + ApiStatus.CLIENT_CANCELED.getMetricCode()); return; } try { invokeClientCallbackSuccess(response); - mRequestSessionMetric.logApiCalledAtFinish( - /*apiStatus=*/ ApiStatus.SUCCESS.getMetricCode()); + finishSession(/*propagateCancellation=*/false, + ApiStatus.SUCCESS.getMetricCode()); } catch (RemoteException e) { mRequestSessionMetric.collectFinalPhaseProviderMetricStatus( /*has_exception=*/ true, ProviderStatusForMetrics.FINAL_FAILURE); Slog.e(TAG, "Issue while responding to client with a response : " + e); - mRequestSessionMetric.logApiCalledAtFinish( - /*apiStatus=*/ ApiStatus.FAILURE.getMetricCode()); + finishSession(/*propagateCancellation=*/false, ApiStatus.FAILURE.getMetricCode()); } - finishSession(/*propagateCancellation=*/false); } /** @@ -387,9 +387,7 @@ abstract class RequestSession<T, U, V> implements CredentialManagerUi.Credential return; } if (isSessionCancelled()) { - mRequestSessionMetric.logApiCalledAtFinish( - /*apiStatus=*/ ApiStatus.CLIENT_CANCELED.getMetricCode()); - finishSession(/*propagateCancellation=*/true); + finishSession(/*propagateCancellation=*/true, ApiStatus.CLIENT_CANCELED.getMetricCode()); return; } @@ -399,8 +397,14 @@ abstract class RequestSession<T, U, V> implements CredentialManagerUi.Credential Slog.e(TAG, "Issue while responding to client with error : " + e); } boolean isUserCanceled = errorType.contains(MetricUtilities.USER_CANCELED_SUBSTRING); - mRequestSessionMetric.logFailureOrUserCancel(isUserCanceled); - finishSession(/*propagateCancellation=*/false); + if (isUserCanceled) { + mRequestSessionMetric.setHasExceptionFinalPhase(/* has_exception */ false); + finishSession(/*propagateCancellation=*/false, + ApiStatus.USER_CANCELED.getMetricCode()); + } else { + finishSession(/*propagateCancellation=*/false, + ApiStatus.FAILURE.getMetricCode()); + } } /** @@ -419,7 +423,7 @@ abstract class RequestSession<T, U, V> implements CredentialManagerUi.Credential @Override public void binderDied() { Slog.d(TAG, "Client binder died - clearing session"); - finishSession(isUiWaitingForData()); + finishSession(isUiWaitingForData(), ApiStatus.CLIENT_CANCELED.getMetricCode()); } } } diff --git a/services/credentials/java/com/android/server/credentials/metrics/RequestSessionMetric.java b/services/credentials/java/com/android/server/credentials/metrics/RequestSessionMetric.java index 8adcfbcb974c..a77bd3e280dd 100644 --- a/services/credentials/java/com/android/server/credentials/metrics/RequestSessionMetric.java +++ b/services/credentials/java/com/android/server/credentials/metrics/RequestSessionMetric.java @@ -247,7 +247,7 @@ public class RequestSessionMetric { * * @param exceptionBitFinalPhase represents if the final phase provider had an exception */ - private void setHasExceptionFinalPhase(boolean exceptionBitFinalPhase) { + public void setHasExceptionFinalPhase(boolean exceptionBitFinalPhase) { try { mChosenProviderFinalPhaseMetric.setHasException(exceptionBitFinalPhase); } catch (Exception e) { |