diff options
| author | 2024-03-04 17:02:48 +0000 | |
|---|---|---|
| committer | 2024-03-04 17:02:48 +0000 | |
| commit | 69c20281aa19b42ea24192e3c59b2b8e1ced11a1 (patch) | |
| tree | 5e8fc8856dba3bc9d7a408006695b9cbcd3641f0 | |
| parent | 6e099f72bd81995be4d7cce5b07c1dc487da54a5 (diff) | |
| parent | b8992fecfa958b54bdbbb6eeb402e49eddae6440 (diff) | |
Merge "Make sure finishSession logs the final status" into main
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) { |