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:
@@ -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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,
|
||||||
|
),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user