diff options
| author | 2024-02-27 01:27:55 +0000 | |
|---|---|---|
| committer | 2024-02-27 01:28:00 +0000 | |
| commit | f5696ed0993c586dd1aa250fa70c6663e4d15e13 (patch) | |
| tree | 350968eb6f17b3fb7eebd709fa30803ccde3dc07 | |
| parent | c9ad4d2726f60fab0e2f772d96ec51e97b2d4ed0 (diff) | |
Skip filtering of options for hybrid service
Test: Cts
Bug: 323923403
Change-Id: I8479524d41896a4822689665a950b888bca9ae80
| -rw-r--r-- | services/credentials/java/com/android/server/credentials/ProviderGetSession.java | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/services/credentials/java/com/android/server/credentials/ProviderGetSession.java b/services/credentials/java/com/android/server/credentials/ProviderGetSession.java index ca23d62601bb..2456c488c6ae 100644 --- a/services/credentials/java/com/android/server/credentials/ProviderGetSession.java +++ b/services/credentials/java/com/android/server/credentials/ProviderGetSession.java @@ -100,7 +100,7 @@ public final class ProviderGetSession extends ProviderSession<BeginGetCredential android.credentials.GetCredentialRequest filteredRequest = filterOptions(providerInfo.getCapabilities(), getRequestSession.mClientRequest, - providerInfo); + providerInfo, getRequestSession.mHybridService); if (filteredRequest != null) { Map<String, CredentialOption> beginGetOptionToCredentialOptionMap = new HashMap<>(); @@ -136,7 +136,7 @@ public final class ProviderGetSession extends ProviderSession<BeginGetCredential android.credentials.GetCredentialRequest filteredRequest = filterOptions(providerInfo.getCapabilities(), getRequestSession.mClientRequest, - providerInfo); + providerInfo, getRequestSession.mHybridService); if (filteredRequest != null) { Map<String, CredentialOption> beginGetOptionToCredentialOptionMap = new HashMap<>(); @@ -186,9 +186,19 @@ public final class ProviderGetSession extends ProviderSession<BeginGetCredential private static android.credentials.GetCredentialRequest filterOptions( List<String> providerCapabilities, android.credentials.GetCredentialRequest clientRequest, - CredentialProviderInfo info - ) { + CredentialProviderInfo info, + String hybridService) { Slog.i(TAG, "Filtering request options for: " + info.getComponentName()); + if (android.credentials.flags.Flags.hybridFilterFixEnabled()) { + ComponentName hybridComponentName = ComponentName.unflattenFromString(hybridService); + if (hybridComponentName != null && hybridComponentName + .equals(info.getComponentName())) { + Slog.i(TAG, "Skipping filtering of options for hybrid service"); + return clientRequest; + } + Slog.w(TAG, "Could not parse hybrid service while filtering options"); + } + List<CredentialOption> filteredOptions = new ArrayList<>(); for (CredentialOption option : clientRequest.getCredentialOptions()) { if (providerCapabilities.contains(option.getType()) |