1 package com.android.credentialmanager.factory
2 
3 import android.app.slice.Slice
4 import android.credentials.Credential
5 import androidx.credentials.PublicKeyCredential
6 import androidx.credentials.provider.CredentialEntry
7 import androidx.credentials.provider.CustomCredentialEntry
8 import androidx.credentials.provider.PasswordCredentialEntry
9 import androidx.credentials.provider.PublicKeyCredentialEntry
10 
fromSlicenull11 fun fromSlice(slice: Slice): CredentialEntry? =
12     try {
13         when (slice.spec?.type) {
14             Credential.TYPE_PASSWORD_CREDENTIAL -> PasswordCredentialEntry.fromSlice(slice)!!
15 
16             PublicKeyCredential.TYPE_PUBLIC_KEY_CREDENTIAL ->
17                 PublicKeyCredentialEntry.fromSlice(slice)!!
18 
19             else -> CustomCredentialEntry.fromSlice(slice)!!
20         }
21     } catch (e: Exception) {
22         // Try CustomCredentialEntry.fromSlice one last time in case the cause was a failed
23         // password / passkey parsing attempt.
24         CustomCredentialEntry.fromSlice(slice)
25     }