diff options
5 files changed, 80 insertions, 16 deletions
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/keyguard/data/content/KeyguardQuickAffordanceProviderContract.kt b/packages/SystemUI/shared/src/com/android/systemui/shared/keyguard/data/content/KeyguardQuickAffordanceProviderContract.kt index f60db2ad2687..71469a363f74 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/keyguard/data/content/KeyguardQuickAffordanceProviderContract.kt +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/keyguard/data/content/KeyguardQuickAffordanceProviderContract.kt @@ -106,6 +106,8 @@ object KeyguardQuickAffordanceProviderContract { const val SLOT_ID = "slot_id" /** String. Unique ID for the selected affordance. */ const val AFFORDANCE_ID = "affordance_id" + /** String. Human-readable name for the affordance. */ + const val AFFORDANCE_NAME = "affordance_name" } } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardQuickAffordanceProvider.kt b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardQuickAffordanceProvider.kt index 1f1ed007fca0..bfc60c17225f 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardQuickAffordanceProvider.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardQuickAffordanceProvider.kt @@ -199,16 +199,19 @@ class KeyguardQuickAffordanceProvider : arrayOf( Contract.SelectionTable.Columns.SLOT_ID, Contract.SelectionTable.Columns.AFFORDANCE_ID, + Contract.SelectionTable.Columns.AFFORDANCE_NAME, ) ) .apply { - val affordanceIdsBySlotId = interactor.getSelections() - affordanceIdsBySlotId.entries.forEach { (slotId, affordanceIds) -> - affordanceIds.forEach { affordanceId -> + val affordanceRepresentationsBySlotId = interactor.getSelections() + affordanceRepresentationsBySlotId.entries.forEach { + (slotId, affordanceRepresentations) -> + affordanceRepresentations.forEach { affordanceRepresentation -> addRow( arrayOf( slotId, - affordanceId, + affordanceRepresentation.id, + affordanceRepresentation.name, ) ) } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractor.kt index 45eb6f501287..c8216c5d72d7 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractor.kt @@ -189,12 +189,18 @@ constructor( } /** Returns affordance IDs indexed by slot ID, for all known slots. */ - fun getSelections(): Map<String, List<String>> { + fun getSelections(): Map<String, List<KeyguardQuickAffordancePickerRepresentation>> { check(isUsingRepository) + val slots = repository.get().getSlotPickerRepresentations() val selections = repository.get().getSelections() - return repository.get().getSlotPickerRepresentations().associate { slotRepresentation -> - slotRepresentation.id to (selections[slotRepresentation.id] ?: emptyList()) + val affordanceById = + getAffordancePickerRepresentations().associateBy { affordance -> affordance.id } + return slots.associate { slot -> + slot.id to + (selections[slot.id] ?: emptyList()).mapNotNull { affordanceId -> + affordanceById[affordanceId] + } } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardQuickAffordanceProviderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardQuickAffordanceProviderTest.kt index 8395f02cbc41..5e27a500125b 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardQuickAffordanceProviderTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardQuickAffordanceProviderTest.kt @@ -99,10 +99,12 @@ class KeyguardQuickAffordanceProviderTest : SysuiTestCase() { setOf( FakeKeyguardQuickAffordanceConfig( key = AFFORDANCE_1, + pickerName = AFFORDANCE_1_NAME, pickerIconResourceId = 1, ), FakeKeyguardQuickAffordanceConfig( key = AFFORDANCE_2, + pickerName = AFFORDANCE_2_NAME, pickerIconResourceId = 2, ), ), @@ -176,6 +178,7 @@ class KeyguardQuickAffordanceProviderTest : SysuiTestCase() { runBlocking(IMMEDIATE) { val slotId = KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START val affordanceId = AFFORDANCE_2 + val affordanceName = AFFORDANCE_2_NAME insertSelection( slotId = slotId, @@ -188,6 +191,7 @@ class KeyguardQuickAffordanceProviderTest : SysuiTestCase() { Selection( slotId = slotId, affordanceId = affordanceId, + affordanceName = affordanceName, ) ) ) @@ -219,12 +223,12 @@ class KeyguardQuickAffordanceProviderTest : SysuiTestCase() { listOf( Affordance( id = AFFORDANCE_1, - name = AFFORDANCE_1, + name = AFFORDANCE_1_NAME, iconResourceId = 1, ), Affordance( id = AFFORDANCE_2, - name = AFFORDANCE_2, + name = AFFORDANCE_2_NAME, iconResourceId = 2, ), ) @@ -259,6 +263,7 @@ class KeyguardQuickAffordanceProviderTest : SysuiTestCase() { Selection( slotId = KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START, affordanceId = AFFORDANCE_1, + affordanceName = AFFORDANCE_1_NAME, ) ) ) @@ -290,6 +295,7 @@ class KeyguardQuickAffordanceProviderTest : SysuiTestCase() { Selection( slotId = KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START, affordanceId = AFFORDANCE_1, + affordanceName = AFFORDANCE_1_NAME, ) ) ) @@ -323,7 +329,13 @@ class KeyguardQuickAffordanceProviderTest : SysuiTestCase() { cursor.getColumnIndex(Contract.SelectionTable.Columns.SLOT_ID) val affordanceIdColumnIndex = cursor.getColumnIndex(Contract.SelectionTable.Columns.AFFORDANCE_ID) - if (slotIdColumnIndex == -1 || affordanceIdColumnIndex == -1) { + val affordanceNameColumnIndex = + cursor.getColumnIndex(Contract.SelectionTable.Columns.AFFORDANCE_NAME) + if ( + slotIdColumnIndex == -1 || + affordanceIdColumnIndex == -1 || + affordanceNameColumnIndex == -1 + ) { return@buildList } @@ -332,6 +344,7 @@ class KeyguardQuickAffordanceProviderTest : SysuiTestCase() { Selection( slotId = cursor.getString(slotIdColumnIndex), affordanceId = cursor.getString(affordanceIdColumnIndex), + affordanceName = cursor.getString(affordanceNameColumnIndex), ) ) } @@ -419,11 +432,14 @@ class KeyguardQuickAffordanceProviderTest : SysuiTestCase() { data class Selection( val slotId: String, val affordanceId: String, + val affordanceName: String, ) companion object { private val IMMEDIATE = Dispatchers.Main.immediate private const val AFFORDANCE_1 = "affordance_1" private const val AFFORDANCE_2 = "affordance_2" + private const val AFFORDANCE_1_NAME = "affordance_1_name" + private const val AFFORDANCE_2_NAME = "affordance_2_name" } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorTest.kt index c47e6f52c596..4850ea5ffed2 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorTest.kt @@ -33,6 +33,7 @@ import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository import com.android.systemui.keyguard.data.repository.KeyguardQuickAffordanceRepository import com.android.systemui.keyguard.domain.model.KeyguardQuickAffordanceModel import com.android.systemui.keyguard.domain.quickaffordance.FakeKeyguardQuickAffordanceRegistry +import com.android.systemui.keyguard.shared.model.KeyguardQuickAffordancePickerRepresentation import com.android.systemui.keyguard.shared.quickaffordance.ActivationState import com.android.systemui.keyguard.shared.quickaffordance.KeyguardQuickAffordancePosition import com.android.systemui.plugins.ActivityStarter @@ -314,7 +315,13 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() { .isEqualTo( mapOf( KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START to - listOf(homeControls.key), + listOf( + KeyguardQuickAffordancePickerRepresentation( + id = homeControls.key, + name = homeControls.pickerName, + iconResourceId = homeControls.pickerIconResourceId, + ), + ), KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END to emptyList(), ) ) @@ -343,7 +350,13 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() { .isEqualTo( mapOf( KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START to - listOf(quickAccessWallet.key), + listOf( + KeyguardQuickAffordancePickerRepresentation( + id = quickAccessWallet.key, + name = quickAccessWallet.pickerName, + iconResourceId = quickAccessWallet.pickerIconResourceId, + ), + ), KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END to emptyList(), ) ) @@ -375,9 +388,21 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() { .isEqualTo( mapOf( KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START to - listOf(quickAccessWallet.key), + listOf( + KeyguardQuickAffordancePickerRepresentation( + id = quickAccessWallet.key, + name = quickAccessWallet.pickerName, + iconResourceId = quickAccessWallet.pickerIconResourceId, + ), + ), KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END to - listOf(qrCodeScanner.key), + listOf( + KeyguardQuickAffordancePickerRepresentation( + id = qrCodeScanner.key, + name = qrCodeScanner.pickerName, + iconResourceId = qrCodeScanner.pickerIconResourceId, + ), + ), ) ) @@ -441,7 +466,13 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() { mapOf( KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START to emptyList(), KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END to - listOf(quickAccessWallet.key), + listOf( + KeyguardQuickAffordancePickerRepresentation( + id = quickAccessWallet.key, + name = quickAccessWallet.pickerName, + iconResourceId = quickAccessWallet.pickerIconResourceId, + ), + ), ) ) @@ -502,7 +533,13 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() { mapOf( KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START to emptyList(), KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END to - listOf(quickAccessWallet.key), + listOf( + KeyguardQuickAffordancePickerRepresentation( + id = quickAccessWallet.key, + name = quickAccessWallet.pickerName, + iconResourceId = quickAccessWallet.pickerIconResourceId, + ), + ), ) ) |