diff --git a/packages/CredentialManager/res/values/strings.xml b/packages/CredentialManager/res/values/strings.xml index 1a852c51744a4..cdd1a8964b2b4 100644 --- a/packages/CredentialManager/res/values/strings.xml +++ b/packages/CredentialManager/res/values/strings.xml @@ -21,15 +21,14 @@ Use %1$s for all your sign-ins? Set as default Use once - You can use saved %1$s on any device. It will be saved to %2$s for %3$s + You can use your %1$s %2$s on any device. It is saved to %3$s for %4$s %1$s passwords, %2$s passkeys %1$s passwords %1$s passkeys - passkeys - passwords + passkey + password sign-ins Other password manager - CreateOptionInfo credentialType icon "Close sheet" diff --git a/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt b/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt index 6e4bfd8a6f1ec..b71af2b654e4b 100644 --- a/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt +++ b/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt @@ -172,7 +172,7 @@ class CredentialManagerRepo( private fun testCreateCredentialEnabledProviderList(): List { return listOf( CreateCredentialProviderData - .Builder("com.google/com.google.CredentialManagerService") + .Builder("io.enpass.app") .setSaveEntries( listOf( newCreateEntry("key1", "subkey-1", "elisa.beckett@gmail.com", @@ -184,7 +184,7 @@ class CredentialManagerRepo( .setIsDefaultProvider(true) .build(), CreateCredentialProviderData - .Builder("com.dashlane/com.dashlane.CredentialManagerService") + .Builder("com.dashlane") .setSaveEntries( listOf( newCreateEntry("key1", "subkey-3", "elisa.beckett@dashlane.com", @@ -199,8 +199,8 @@ class CredentialManagerRepo( private fun testDisabledProviderList(): List { return listOf( - DisabledProviderData("LastPass"), - DisabledProviderData("Xyzinstalledbutdisabled"), + DisabledProviderData("com.lastpass.lpandroid"), + DisabledProviderData("com.google.android.youtube") ) } diff --git a/packages/CredentialManager/src/com/android/credentialmanager/DataConverter.kt b/packages/CredentialManager/src/com/android/credentialmanager/DataConverter.kt index e4fab079651e4..53e817e1a03ab 100644 --- a/packages/CredentialManager/src/com/android/credentialmanager/DataConverter.kt +++ b/packages/CredentialManager/src/com/android/credentialmanager/DataConverter.kt @@ -17,6 +17,7 @@ package com.android.credentialmanager import android.content.Context +import android.content.pm.PackageManager import android.credentials.ui.Entry import android.credentials.ui.GetCredentialProviderData import android.credentials.ui.CreateCredentialProviderData @@ -108,12 +109,15 @@ class CreateFlowUtils { providerDataList: List, context: Context, ): List { + val packageManager = context.packageManager return providerDataList.map { + val pkgInfo = packageManager + .getPackageInfo(it.providerFlattenedComponentName, + PackageManager.PackageInfoFlags.of(0)) com.android.credentialmanager.createflow.EnabledProviderInfo( - // TODO: replace to extract from the service data structure when available - icon = context.getDrawable(R.drawable.ic_passkey)!!, + icon = pkgInfo.applicationInfo.loadIcon(packageManager)!!, name = it.providerFlattenedComponentName, - displayName = it.providerFlattenedComponentName, + displayName = pkgInfo.applicationInfo.loadLabel(packageManager).toString(), createOptions = toCreationOptionInfoList(it.saveEntries, context), isDefault = it.isDefaultProvider, ) @@ -124,12 +128,15 @@ class CreateFlowUtils { providerDataList: List, context: Context, ): List { + val packageManager = context.packageManager return providerDataList.map { + val pkgInfo = packageManager + .getPackageInfo(it.providerFlattenedComponentName, + PackageManager.PackageInfoFlags.of(0)) com.android.credentialmanager.createflow.DisabledProviderInfo( - // TODO: replace to extract from the service data structure when available - icon = context.getDrawable(R.drawable.ic_passkey)!!, + icon = pkgInfo.applicationInfo.loadIcon(packageManager)!!, name = it.providerFlattenedComponentName, - displayName = it.providerFlattenedComponentName, + displayName = pkgInfo.applicationInfo.loadLabel(packageManager).toString(), ) } } diff --git a/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreatePasskeyComponents.kt b/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreatePasskeyComponents.kt index 06e437c874c31..4769a26b8eb18 100644 --- a/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreatePasskeyComponents.kt +++ b/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreatePasskeyComponents.kt @@ -358,7 +358,7 @@ fun CreationSelectionCard( Card() { Column() { Icon( - bitmap = createOptionInfo.credentialTypeIcon.toBitmap().asImageBitmap(), + bitmap = providerInfo.icon.toBitmap().asImageBitmap(), contentDescription = null, tint = Color.Unspecified, modifier = Modifier.align(alignment = Alignment.CenterHorizontally).padding(all = 24.dp) @@ -377,18 +377,14 @@ fun CreationSelectionCard( .align(alignment = Alignment.CenterHorizontally), textAlign = TextAlign.Center, ) - Text( - text = requestDisplayInfo.appDomainName, - style = MaterialTheme.typography.bodyMedium, - modifier = Modifier.align(alignment = Alignment.CenterHorizontally) - ) if (createOptionInfo.userProviderDisplayName != null) { Text( text = stringResource( R.string.choose_create_option_description, + requestDisplayInfo.appDomainName, when (requestDisplayInfo.type) { - TYPE_PUBLIC_KEY_CREDENTIAL -> stringResource(R.string.passkeys) - TYPE_PASSWORD_CREDENTIAL -> stringResource(R.string.passwords) + TYPE_PUBLIC_KEY_CREDENTIAL -> stringResource(R.string.passkey) + TYPE_PASSWORD_CREDENTIAL -> stringResource(R.string.password) else -> stringResource(R.string.sign_ins) }, providerInfo.displayName, @@ -471,7 +467,7 @@ fun PrimaryCreateOptionRow( icon = { Image(modifier = Modifier.size(24.dp, 24.dp).padding(start = 10.dp), bitmap = createOptionInfo.credentialTypeIcon.toBitmap().asImageBitmap(), - contentDescription = stringResource(R.string.createOptionInfo_icon_description)) + contentDescription = null) }, shape = MaterialTheme.shapes.large, label = { @@ -502,9 +498,9 @@ fun MoreOptionsInfoRow( modifier = Modifier.fillMaxWidth(), onClick = onOptionSelected, icon = { - Image(modifier = Modifier.size(24.dp, 24.dp).padding(start = 10.dp), - bitmap = createOptionInfo.credentialTypeIcon.toBitmap().asImageBitmap(), - contentDescription = stringResource(R.string.createOptionInfo_icon_description)) + Image(modifier = Modifier.size(32.dp, 32.dp).padding(start = 10.dp), + bitmap = providerInfo.icon.toBitmap().asImageBitmap(), + contentDescription = null) }, shape = MaterialTheme.shapes.large, label = {