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

Commit 51e55151 authored by Ale Nijamkin's avatar Ale Nijamkin Committed by Android (Google) Code Review
Browse files

Merge "Exposes affordance names through content provider." into tm-qpr-dev

parents b8eef87b 75d365ef
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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"
        }
    }

+7 −4
Original line number Diff line number Diff line
@@ -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,
                            )
                        )
                    }
+9 −3
Original line number Diff line number Diff line
@@ -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]
                }
        }
    }

+19 −3
Original line number Diff line number Diff line
@@ -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"
    }
}
+43 −6
Original line number Diff line number Diff line
@@ -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,
                                ),
                            ),
                    )
                )