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 = {