Merge "Exposes affordance names through content provider." into tm-qpr-dev am: 51e5515166

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20427404

Change-Id: Ic03f1437bf086edfcef0dba518d2d5926e3bfe7e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Ale Nijamkin
2022-11-18 22:45:55 +00:00
committed by Automerger Merge Worker
5 changed files with 80 additions and 16 deletions

View File

@@ -106,6 +106,8 @@ object KeyguardQuickAffordanceProviderContract {
const val SLOT_ID = "slot_id" const val SLOT_ID = "slot_id"
/** String. Unique ID for the selected affordance. */ /** String. Unique ID for the selected affordance. */
const val AFFORDANCE_ID = "affordance_id" const val AFFORDANCE_ID = "affordance_id"
/** String. Human-readable name for the affordance. */
const val AFFORDANCE_NAME = "affordance_name"
} }
} }

View File

@@ -199,16 +199,19 @@ class KeyguardQuickAffordanceProvider :
arrayOf( arrayOf(
Contract.SelectionTable.Columns.SLOT_ID, Contract.SelectionTable.Columns.SLOT_ID,
Contract.SelectionTable.Columns.AFFORDANCE_ID, Contract.SelectionTable.Columns.AFFORDANCE_ID,
Contract.SelectionTable.Columns.AFFORDANCE_NAME,
) )
) )
.apply { .apply {
val affordanceIdsBySlotId = interactor.getSelections() val affordanceRepresentationsBySlotId = interactor.getSelections()
affordanceIdsBySlotId.entries.forEach { (slotId, affordanceIds) -> affordanceRepresentationsBySlotId.entries.forEach {
affordanceIds.forEach { affordanceId -> (slotId, affordanceRepresentations) ->
affordanceRepresentations.forEach { affordanceRepresentation ->
addRow( addRow(
arrayOf( arrayOf(
slotId, slotId,
affordanceId, affordanceRepresentation.id,
affordanceRepresentation.name,
) )
) )
} }

View File

@@ -189,12 +189,18 @@ constructor(
} }
/** Returns affordance IDs indexed by slot ID, for all known slots. */ /** 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) check(isUsingRepository)
val slots = repository.get().getSlotPickerRepresentations()
val selections = repository.get().getSelections() val selections = repository.get().getSelections()
return repository.get().getSlotPickerRepresentations().associate { slotRepresentation -> val affordanceById =
slotRepresentation.id to (selections[slotRepresentation.id] ?: emptyList()) getAffordancePickerRepresentations().associateBy { affordance -> affordance.id }
return slots.associate { slot ->
slot.id to
(selections[slot.id] ?: emptyList()).mapNotNull { affordanceId ->
affordanceById[affordanceId]
}
} }
} }

View File

@@ -99,10 +99,12 @@ class KeyguardQuickAffordanceProviderTest : SysuiTestCase() {
setOf( setOf(
FakeKeyguardQuickAffordanceConfig( FakeKeyguardQuickAffordanceConfig(
key = AFFORDANCE_1, key = AFFORDANCE_1,
pickerName = AFFORDANCE_1_NAME,
pickerIconResourceId = 1, pickerIconResourceId = 1,
), ),
FakeKeyguardQuickAffordanceConfig( FakeKeyguardQuickAffordanceConfig(
key = AFFORDANCE_2, key = AFFORDANCE_2,
pickerName = AFFORDANCE_2_NAME,
pickerIconResourceId = 2, pickerIconResourceId = 2,
), ),
), ),
@@ -176,6 +178,7 @@ class KeyguardQuickAffordanceProviderTest : SysuiTestCase() {
runBlocking(IMMEDIATE) { runBlocking(IMMEDIATE) {
val slotId = KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START val slotId = KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START
val affordanceId = AFFORDANCE_2 val affordanceId = AFFORDANCE_2
val affordanceName = AFFORDANCE_2_NAME
insertSelection( insertSelection(
slotId = slotId, slotId = slotId,
@@ -188,6 +191,7 @@ class KeyguardQuickAffordanceProviderTest : SysuiTestCase() {
Selection( Selection(
slotId = slotId, slotId = slotId,
affordanceId = affordanceId, affordanceId = affordanceId,
affordanceName = affordanceName,
) )
) )
) )
@@ -219,12 +223,12 @@ class KeyguardQuickAffordanceProviderTest : SysuiTestCase() {
listOf( listOf(
Affordance( Affordance(
id = AFFORDANCE_1, id = AFFORDANCE_1,
name = AFFORDANCE_1, name = AFFORDANCE_1_NAME,
iconResourceId = 1, iconResourceId = 1,
), ),
Affordance( Affordance(
id = AFFORDANCE_2, id = AFFORDANCE_2,
name = AFFORDANCE_2, name = AFFORDANCE_2_NAME,
iconResourceId = 2, iconResourceId = 2,
), ),
) )
@@ -259,6 +263,7 @@ class KeyguardQuickAffordanceProviderTest : SysuiTestCase() {
Selection( Selection(
slotId = KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START, slotId = KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START,
affordanceId = AFFORDANCE_1, affordanceId = AFFORDANCE_1,
affordanceName = AFFORDANCE_1_NAME,
) )
) )
) )
@@ -290,6 +295,7 @@ class KeyguardQuickAffordanceProviderTest : SysuiTestCase() {
Selection( Selection(
slotId = KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START, slotId = KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START,
affordanceId = AFFORDANCE_1, affordanceId = AFFORDANCE_1,
affordanceName = AFFORDANCE_1_NAME,
) )
) )
) )
@@ -323,7 +329,13 @@ class KeyguardQuickAffordanceProviderTest : SysuiTestCase() {
cursor.getColumnIndex(Contract.SelectionTable.Columns.SLOT_ID) cursor.getColumnIndex(Contract.SelectionTable.Columns.SLOT_ID)
val affordanceIdColumnIndex = val affordanceIdColumnIndex =
cursor.getColumnIndex(Contract.SelectionTable.Columns.AFFORDANCE_ID) 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 return@buildList
} }
@@ -332,6 +344,7 @@ class KeyguardQuickAffordanceProviderTest : SysuiTestCase() {
Selection( Selection(
slotId = cursor.getString(slotIdColumnIndex), slotId = cursor.getString(slotIdColumnIndex),
affordanceId = cursor.getString(affordanceIdColumnIndex), affordanceId = cursor.getString(affordanceIdColumnIndex),
affordanceName = cursor.getString(affordanceNameColumnIndex),
) )
) )
} }
@@ -419,11 +432,14 @@ class KeyguardQuickAffordanceProviderTest : SysuiTestCase() {
data class Selection( data class Selection(
val slotId: String, val slotId: String,
val affordanceId: String, val affordanceId: String,
val affordanceName: String,
) )
companion object { companion object {
private val IMMEDIATE = Dispatchers.Main.immediate private val IMMEDIATE = Dispatchers.Main.immediate
private const val AFFORDANCE_1 = "affordance_1" private const val AFFORDANCE_1 = "affordance_1"
private const val AFFORDANCE_2 = "affordance_2" 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"
} }
} }

View File

@@ -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.data.repository.KeyguardQuickAffordanceRepository
import com.android.systemui.keyguard.domain.model.KeyguardQuickAffordanceModel import com.android.systemui.keyguard.domain.model.KeyguardQuickAffordanceModel
import com.android.systemui.keyguard.domain.quickaffordance.FakeKeyguardQuickAffordanceRegistry 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.ActivationState
import com.android.systemui.keyguard.shared.quickaffordance.KeyguardQuickAffordancePosition import com.android.systemui.keyguard.shared.quickaffordance.KeyguardQuickAffordancePosition
import com.android.systemui.plugins.ActivityStarter import com.android.systemui.plugins.ActivityStarter
@@ -314,7 +315,13 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() {
.isEqualTo( .isEqualTo(
mapOf( mapOf(
KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START to 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(), KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END to emptyList(),
) )
) )
@@ -343,7 +350,13 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() {
.isEqualTo( .isEqualTo(
mapOf( mapOf(
KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START to 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(), KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END to emptyList(),
) )
) )
@@ -375,9 +388,21 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() {
.isEqualTo( .isEqualTo(
mapOf( mapOf(
KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START to 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 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( mapOf(
KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START to emptyList(), KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START to emptyList(),
KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END to 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( mapOf(
KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START to emptyList(), KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START to emptyList(),
KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END to KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_END to
listOf(quickAccessWallet.key), listOf(
KeyguardQuickAffordancePickerRepresentation(
id = quickAccessWallet.key,
name = quickAccessWallet.pickerName,
iconResourceId = quickAccessWallet.pickerIconResourceId,
),
),
) )
) )