diff options
author | 2024-03-03 22:07:59 +0000 | |
---|---|---|
committer | 2024-03-04 18:29:40 +0000 | |
commit | 9788e9807913240d382084fb76ac82a5989725e1 (patch) | |
tree | 8d4f22dbd7a767a098f978800991ea10e3fd15fe | |
parent | 62fe64e443b60d63bf92b9d71bad7d49a659748f (diff) |
Allow credential providers to set an "origin" for affiliated credentials
Bug: 307645200
Test: see screenshots attached to bug
Change-Id: I20448ffd7cccf96418b57623a34491638de72778
5 files changed, 16 insertions, 0 deletions
diff --git a/packages/CredentialManager/shared/src/com/android/credentialmanager/ktx/CredentialKtx.kt b/packages/CredentialManager/shared/src/com/android/credentialmanager/ktx/CredentialKtx.kt index b435bb8ad3a9..892eabf14191 100644 --- a/packages/CredentialManager/shared/src/com/android/credentialmanager/ktx/CredentialKtx.kt +++ b/packages/CredentialManager/shared/src/com/android/credentialmanager/ktx/CredentialKtx.kt @@ -138,6 +138,7 @@ private fun getCredentialOptionInfoList( entryGroupId = credentialEntry.entryGroupId.toString(), isDefaultIconPreferredAsSingleProvider = credentialEntry.isDefaultIconPreferredAsSingleProvider, + affiliatedDomain = credentialEntry.affiliatedDomain?.toString(), ) ) } @@ -165,6 +166,7 @@ private fun getCredentialOptionInfoList( entryGroupId = credentialEntry.entryGroupId.toString(), isDefaultIconPreferredAsSingleProvider = credentialEntry.isDefaultIconPreferredAsSingleProvider, + affiliatedDomain = credentialEntry.affiliatedDomain?.toString(), ) ) } @@ -191,6 +193,7 @@ private fun getCredentialOptionInfoList( entryGroupId = credentialEntry.entryGroupId.toString(), isDefaultIconPreferredAsSingleProvider = credentialEntry.isDefaultIconPreferredAsSingleProvider, + affiliatedDomain = credentialEntry.affiliatedDomain?.toString(), ) ) } diff --git a/packages/CredentialManager/shared/src/com/android/credentialmanager/model/get/CredentialEntryInfo.kt b/packages/CredentialManager/shared/src/com/android/credentialmanager/model/get/CredentialEntryInfo.kt index ac42b60d51c1..a657e97de3cc 100644 --- a/packages/CredentialManager/shared/src/com/android/credentialmanager/model/get/CredentialEntryInfo.kt +++ b/packages/CredentialManager/shared/src/com/android/credentialmanager/model/get/CredentialEntryInfo.kt @@ -48,6 +48,7 @@ class CredentialEntryInfo( val entryGroupId: String, // Used for deduplication, and displayed as the grouping title // "For <value-of-entryGroupId>" on the more-option screen. val isDefaultIconPreferredAsSingleProvider: Boolean, + val affiliatedDomain: String?, ) : EntryInfo( providerId, entryKey, diff --git a/packages/CredentialManager/src/com/android/credentialmanager/common/ui/Entry.kt b/packages/CredentialManager/src/com/android/credentialmanager/common/ui/Entry.kt index 8ff17e0d333a..56bd06618684 100644 --- a/packages/CredentialManager/src/com/android/credentialmanager/common/ui/Entry.kt +++ b/packages/CredentialManager/src/com/android/credentialmanager/common/ui/Entry.kt @@ -78,6 +78,8 @@ fun Entry( isLockedAuthEntry: Boolean = false, enforceOneLine: Boolean = false, onTextLayout: (TextLayoutResult) -> Unit = {}, + /** Get flow only, if present, where be drawn as a line above the headline. */ + affiliatedDomainText: String? = null, ) { val iconPadding = Modifier.wrapContentSize().padding( // Horizontal padding should be 16dp, but the suggestion chip itself @@ -102,6 +104,13 @@ fun Entry( ) { // Apply weight so that the trailing icon can always show. Column(modifier = Modifier.wrapContentHeight().fillMaxWidth().weight(1f)) { + if (!affiliatedDomainText.isNullOrBlank()) { + BodySmallText( + text = affiliatedDomainText, + enforceOneLine = enforceOneLine, + onTextLayout = onTextLayout, + ) + } SmallTitleText( text = entryHeadlineText, enforceOneLine = enforceOneLine, diff --git a/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetCredentialComponents.kt b/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetCredentialComponents.kt index 1fef5226188f..748c79891a40 100644 --- a/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetCredentialComponents.kt +++ b/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetCredentialComponents.kt @@ -376,6 +376,7 @@ fun PrimarySelectionCard( } internal const val MAX_ENTRY_FOR_PRIMARY_PAGE = 4 + /** Draws the primary credential selection page, used starting from android V. */ @Composable fun PrimarySelectionCardVImpl( @@ -805,6 +806,7 @@ fun CredentialEntryRow( }, enforceOneLine = enforceOneLine, onTextLayout = onTextLayout, + affiliatedDomainText = credentialEntryInfo.affiliatedDomain, ) } diff --git a/packages/CredentialManager/tests/robotests/screenshot/src/com/android/credentialmanager/GetCredScreenshotTest.kt b/packages/CredentialManager/tests/robotests/screenshot/src/com/android/credentialmanager/GetCredScreenshotTest.kt index 0820d266a9f5..28d83ee157b6 100644 --- a/packages/CredentialManager/tests/robotests/screenshot/src/com/android/credentialmanager/GetCredScreenshotTest.kt +++ b/packages/CredentialManager/tests/robotests/screenshot/src/com/android/credentialmanager/GetCredScreenshotTest.kt @@ -151,6 +151,7 @@ class GetCredScreenshotTest(emulationSpec: DeviceEmulationSpec) { entryGroupId = "username", isDefaultIconPreferredAsSingleProvider = false, rawCredentialType = "unknown-type", + affiliatedDomain = null, ) ), authenticationEntryList = emptyList(), |