Merge "Clear/restore calling app identity prior to ui launch." into udc-dev am: 89b4148cb8

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22144642

Change-Id: Ia9fd333c958f5faa1040c4485373636a1807abb8
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Omer Ozer
2023-03-21 17:57:22 +00:00
committed by Automerger Merge Worker

View File

@@ -27,6 +27,7 @@ import android.credentials.GetCredentialResponse;
import android.credentials.IGetCredentialCallback; import android.credentials.IGetCredentialCallback;
import android.credentials.ui.ProviderData; import android.credentials.ui.ProviderData;
import android.credentials.ui.RequestInfo; import android.credentials.ui.RequestInfo;
import android.os.Binder;
import android.os.CancellationSignal; import android.os.CancellationSignal;
import android.os.RemoteException; import android.os.RemoteException;
import android.service.credentials.CallingAppInfo; import android.service.credentials.CallingAppInfo;
@@ -84,11 +85,12 @@ public class GetRequestSession extends RequestSession<GetCredentialRequest,
protected void launchUiWithProviderData(ArrayList<ProviderData> providerDataList) { protected void launchUiWithProviderData(ArrayList<ProviderData> providerDataList) {
mChosenProviderFinalPhaseMetric.setUiCallStartTimeNanoseconds(System.nanoTime()); mChosenProviderFinalPhaseMetric.setUiCallStartTimeNanoseconds(System.nanoTime());
try { try {
mClientCallback.onPendingIntent(mCredentialManagerUi.createPendingIntent( Binder.withCleanCallingIdentity(() ->
mClientCallback.onPendingIntent(mCredentialManagerUi.createPendingIntent(
RequestInfo.newGetRequestInfo( RequestInfo.newGetRequestInfo(
mRequestId, mClientRequest, mClientAppInfo.getPackageName()), mRequestId, mClientRequest, mClientAppInfo.getPackageName()),
providerDataList)); providerDataList)));
} catch (RemoteException e) { } catch (RuntimeException e) {
mChosenProviderFinalPhaseMetric.setUiReturned(false); mChosenProviderFinalPhaseMetric.setUiReturned(false);
respondToClientWithErrorAndFinish( respondToClientWithErrorAndFinish(
GetCredentialException.TYPE_UNKNOWN, "Unable to instantiate selector"); GetCredentialException.TYPE_UNKNOWN, "Unable to instantiate selector");