Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e3b37292 authored by Qinmei Du's avatar Qinmei Du
Browse files

Change the icon and displayName inside the providerInfo data class from the packageInfo

screencast: https://screencast.googleplex.com/cast/NjA2NjU2OTMxOTgwOTAyNHxjNTk0YmE4NC01Yg

Test: deployed locally

Bug: 253157211
Change-Id: I21e0b0cab9f078bba852eede203176168dc6e59c
parent ba9a87e4
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -21,15 +21,14 @@
  <string name="use_provider_for_all_title">Use <xliff:g id="providerInfoDisplayName">%1$s</xliff:g> for all your sign-ins?</string>
  <string name="set_as_default">Set as default</string>
  <string name="use_once">Use once</string>
  <string name="choose_create_option_description">You can use saved <xliff:g id="type">%1$s</xliff:g> on any device. It will be saved to <xliff:g id="providerInfoDisplayName">%2$s</xliff:g> for <xliff:g id="createInfoDisplayName">%3$s</xliff:g></string>
  <string name="choose_create_option_description">You can use your <xliff:g id="appDomainName">%1$s</xliff:g> <xliff:g id="type">%2$s</xliff:g> on any device. It is saved to <xliff:g id="providerInfoDisplayName">%3$s</xliff:g> for <xliff:g id="createInfoDisplayName">%4$s</xliff:g></string>
  <string name="more_options_usage_passwords_passkeys"><xliff:g id="passwordsNumber">%1$s</xliff:g> passwords, <xliff:g id="passkeysNumber">%2$s</xliff:g> passkeys</string>
  <string name="more_options_usage_passwords"><xliff:g id="passwordsNumber">%1$s</xliff:g> passwords</string>
  <string name="more_options_usage_passkeys"><xliff:g id="passkeysNumber">%1$s</xliff:g> passkeys</string>
  <string name="passkeys">passkeys</string>
  <string name="passwords">passwords</string>
  <string name="passkey">passkey</string>
  <string name="password">password</string>
  <string name="sign_ins">sign-ins</string>
  <string name="other_password_manager">Other password manager</string>
  <string name="createOptionInfo_icon_description">CreateOptionInfo credentialType icon</string>
  <!-- Spoken content description of an element which will close the sheet when clicked. -->
  <string name="close_sheet">"Close sheet"</string>
  <!-- Spoken content description of the back arrow button. -->
+4 −4
Original line number Diff line number Diff line
@@ -172,7 +172,7 @@ class CredentialManagerRepo(
  private fun testCreateCredentialEnabledProviderList(): List<CreateCredentialProviderData> {
    return listOf(
      CreateCredentialProviderData
        .Builder("com.google/com.google.CredentialManagerService")
        .Builder("io.enpass.app")
        .setSaveEntries(
          listOf<Entry>(
            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<Entry>(
            newCreateEntry("key1", "subkey-3", "elisa.beckett@dashlane.com",
@@ -199,8 +199,8 @@ class CredentialManagerRepo(

  private fun testDisabledProviderList(): List<DisabledProviderData> {
    return listOf(
      DisabledProviderData("LastPass"),
      DisabledProviderData("Xyzinstalledbutdisabled"),
      DisabledProviderData("com.lastpass.lpandroid"),
      DisabledProviderData("com.google.android.youtube")
    )
  }

+13 −6
Original line number Diff line number Diff line
@@ -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<CreateCredentialProviderData>,
      context: Context,
    ): List<com.android.credentialmanager.createflow.EnabledProviderInfo> {
      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<DisabledProviderData>,
      context: Context,
    ): List<com.android.credentialmanager.createflow.DisabledProviderInfo> {
      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(),
        )
      }
    }
+8 −12
Original line number Diff line number Diff line
@@ -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 = {