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

Commit b7a96f1c authored by Behnam Heydarshahi's avatar Behnam Heydarshahi
Browse files

Inject resources instead of context in QSTileState

Inject the minimum required. Edit 3 classes that were already using the
build method from QSTileState.

Fixes: 312470536
Flag: LEGACY QS_PIPELINE_NEW_TILES DISABLED
Test: atest SystemUiRoboTests
Test: atest AirplaneModeMapper FlashlightMapper LocationMapper

Change-Id: I85d7e62bb7c5e03bc1c459e2df1e3f7397470476
parent 20690ec5
Loading
Loading
Loading
Loading
+3 −15
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package com.android.systemui.qs.tiles.impl.flashlight.domain

import android.graphics.drawable.Drawable
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
@@ -26,7 +25,6 @@ import com.android.systemui.qs.tiles.impl.flashlight.domain.model.FlashlightTile
import com.android.systemui.qs.tiles.impl.flashlight.qsFlashlightTileConfig
import com.android.systemui.qs.tiles.viewmodel.QSTileState
import com.android.systemui.res.R
import com.android.systemui.util.mockito.mock
import com.google.common.truth.Truth.assertThat
import junit.framework.Assert.assertEquals
import org.junit.Test
@@ -37,7 +35,7 @@ import org.junit.runner.RunWith
class FlashlightMapperTest : SysuiTestCase() {
    private val kosmos = Kosmos()
    private val qsTileConfig = kosmos.qsFlashlightTileConfig
    private val mapper by lazy { FlashlightMapper(context) }
    private val mapper by lazy { FlashlightMapper(context.orCreateTestableResources.resources) }

    @Test
    fun mapsDisabledDataToInactiveState() {
@@ -58,12 +56,7 @@ class FlashlightMapperTest : SysuiTestCase() {

    @Test
    fun mapsEnabledDataToOnIconState() {
        val fakeDrawable = mock<Drawable>()
        context.orCreateTestableResources.addOverride(
            R.drawable.qs_flashlight_icon_on,
            fakeDrawable
        )
        val expectedIcon = Icon.Loaded(fakeDrawable, null)
        val expectedIcon = Icon.Resource(R.drawable.qs_flashlight_icon_on, null)

        val tileState: QSTileState = mapper.map(qsTileConfig, FlashlightTileModel(true))

@@ -73,12 +66,7 @@ class FlashlightMapperTest : SysuiTestCase() {

    @Test
    fun mapsDisabledDataToOffIconState() {
        val fakeDrawable = mock<Drawable>()
        context.orCreateTestableResources.addOverride(
            R.drawable.qs_flashlight_icon_off,
            fakeDrawable
        )
        val expectedIcon = Icon.Loaded(fakeDrawable, null)
        val expectedIcon = Icon.Resource(R.drawable.qs_flashlight_icon_off, null)

        val tileState: QSTileState = mapper.map(qsTileConfig, FlashlightTileModel(false))

+4 −9
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package com.android.systemui.qs.tiles.impl.location.domain

import android.graphics.drawable.Drawable
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
@@ -26,7 +25,6 @@ import com.android.systemui.qs.tiles.impl.location.domain.model.LocationTileMode
import com.android.systemui.qs.tiles.impl.location.qsLocationTileConfig
import com.android.systemui.qs.tiles.viewmodel.QSTileState
import com.android.systemui.res.R
import com.android.systemui.util.mockito.mock
import com.google.common.truth.Truth
import junit.framework.Assert
import org.junit.Test
@@ -37,7 +35,8 @@ import org.junit.runner.RunWith
class LocationTileMapperTest : SysuiTestCase() {
    private val kosmos = Kosmos()
    private val qsTileConfig = kosmos.qsLocationTileConfig
    private val mapper by lazy { LocationTileMapper(context) }

    private val mapper by lazy { LocationTileMapper(context.orCreateTestableResources.resources) }

    @Test
    fun mapsDisabledDataToInactiveState() {
@@ -57,9 +56,7 @@ class LocationTileMapperTest : SysuiTestCase() {

    @Test
    fun mapsEnabledDataToOnIconState() {
        val fakeDrawable = mock<Drawable>()
        context.orCreateTestableResources.addOverride(R.drawable.qs_location_icon_on, fakeDrawable)
        val expectedIcon = Icon.Loaded(fakeDrawable, null)
        val expectedIcon = Icon.Resource(R.drawable.qs_location_icon_on, null)

        val tileState: QSTileState = mapper.map(qsTileConfig, LocationTileModel(true))

@@ -69,9 +66,7 @@ class LocationTileMapperTest : SysuiTestCase() {

    @Test
    fun mapsDisabledDataToOffIconState() {
        val fakeDrawable = mock<Drawable>()
        context.orCreateTestableResources.addOverride(R.drawable.qs_location_icon_off, fakeDrawable)
        val expectedIcon = Icon.Loaded(fakeDrawable, null)
        val expectedIcon = Icon.Resource(R.drawable.qs_location_icon_off, null)

        val tileState: QSTileState = mapper.map(qsTileConfig, LocationTileModel(false))

+12 −13
Original line number Diff line number Diff line
@@ -16,8 +16,9 @@

package com.android.systemui.qs.tiles.impl.airplane.domain

import android.content.Context
import android.content.res.Resources
import com.android.systemui.common.shared.model.Icon
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.qs.tiles.base.interactor.QSTileDataToStateMapper
import com.android.systemui.qs.tiles.impl.airplane.domain.model.AirplaneModeTileModel
import com.android.systemui.qs.tiles.viewmodel.QSTileConfig
@@ -26,29 +27,27 @@ import com.android.systemui.res.R
import javax.inject.Inject

/** Maps [AirplaneModeTileModel] to [QSTileState]. */
class AirplaneModeMapper @Inject constructor(private val context: Context) :
class AirplaneModeMapper @Inject constructor(@Main private val resources: Resources) :
    QSTileDataToStateMapper<AirplaneModeTileModel> {

    override fun map(config: QSTileConfig, data: AirplaneModeTileModel): QSTileState =
        QSTileState.build(context, config.uiConfig) {
        QSTileState.build(resources, config.uiConfig) {
            val icon =
                Icon.Loaded(
                    context.getDrawable(
                Icon.Resource(
                    if (data.isEnabled) {
                        R.drawable.qs_airplane_icon_on
                    } else {
                        R.drawable.qs_airplane_icon_off
                        }
                    )!!,
                    },
                    contentDescription = null
                )
            this.icon = { icon }
            if (data.isEnabled) {
                activationState = QSTileState.ActivationState.ACTIVE
                secondaryLabel = context.resources.getStringArray(R.array.tile_states_airplane)[2]
                secondaryLabel = resources.getStringArray(R.array.tile_states_airplane)[2]
            } else {
                activationState = QSTileState.ActivationState.INACTIVE
                secondaryLabel = context.resources.getStringArray(R.array.tile_states_airplane)[1]
                secondaryLabel = resources.getStringArray(R.array.tile_states_airplane)[1]
            }
            contentDescription = label
            supportedActions =
+12 −13
Original line number Diff line number Diff line
@@ -16,8 +16,9 @@

package com.android.systemui.qs.tiles.impl.flashlight.domain

import android.content.Context
import android.content.res.Resources
import com.android.systemui.common.shared.model.Icon
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.qs.tiles.base.interactor.QSTileDataToStateMapper
import com.android.systemui.qs.tiles.impl.flashlight.domain.model.FlashlightTileModel
import com.android.systemui.qs.tiles.viewmodel.QSTileConfig
@@ -26,30 +27,28 @@ import com.android.systemui.res.R
import javax.inject.Inject

/** Maps [FlashlightTileModel] to [QSTileState]. */
class FlashlightMapper @Inject constructor(private val context: Context) :
class FlashlightMapper @Inject constructor(@Main private val resources: Resources) :
    QSTileDataToStateMapper<FlashlightTileModel> {

    override fun map(config: QSTileConfig, data: FlashlightTileModel): QSTileState =
        QSTileState.build(context, config.uiConfig) {
        QSTileState.build(resources, config.uiConfig) {
            val icon =
                Icon.Loaded(
                    context.resources.getDrawable(
                Icon.Resource(
                    if (data.isEnabled) {
                        R.drawable.qs_flashlight_icon_on
                    } else {
                        R.drawable.qs_flashlight_icon_off
                        }
                    ),
                    },
                    contentDescription = null
                )
            this.icon = { icon }

            if (data.isEnabled) {
                activationState = QSTileState.ActivationState.ACTIVE
                secondaryLabel = context.resources.getStringArray(R.array.tile_states_flashlight)[2]
                secondaryLabel = resources.getStringArray(R.array.tile_states_flashlight)[2]
            } else {
                activationState = QSTileState.ActivationState.INACTIVE
                secondaryLabel = context.resources.getStringArray(R.array.tile_states_flashlight)[1]
                secondaryLabel = resources.getStringArray(R.array.tile_states_flashlight)[1]
            }
            contentDescription = label
            supportedActions =
+13 −14
Original line number Diff line number Diff line
@@ -16,8 +16,9 @@

package com.android.systemui.qs.tiles.impl.location.domain

import android.content.Context
import android.content.res.Resources
import com.android.systemui.common.shared.model.Icon
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.qs.tiles.base.interactor.QSTileDataToStateMapper
import com.android.systemui.qs.tiles.impl.location.domain.model.LocationTileModel
import com.android.systemui.qs.tiles.viewmodel.QSTileConfig
@@ -26,32 +27,30 @@ import com.android.systemui.res.R
import javax.inject.Inject

/** Maps [LocationTileModel] to [QSTileState]. */
class LocationTileMapper @Inject constructor(private val context: Context) :
class LocationTileMapper @Inject constructor(@Main private val resources: Resources) :
    QSTileDataToStateMapper<LocationTileModel> {

    override fun map(config: QSTileConfig, data: LocationTileModel): QSTileState =
        QSTileState.build(context, config.uiConfig) {
        QSTileState.build(resources, config.uiConfig) {
            val icon =
                Icon.Loaded(
                    context.resources.getDrawable(
                Icon.Resource(
                    if (data.isEnabled) {
                        R.drawable.qs_location_icon_on
                    } else {
                        R.drawable.qs_location_icon_off
                        }
                    ),
                    },
                    contentDescription = null
                )
            this.icon = { icon }

            this.label = context.resources.getString(R.string.quick_settings_location_label)
            this.label = resources.getString(R.string.quick_settings_location_label)

            if (data.isEnabled) {
                activationState = QSTileState.ActivationState.ACTIVE
                secondaryLabel = context.resources.getStringArray(R.array.tile_states_location)[2]
                secondaryLabel = resources.getStringArray(R.array.tile_states_location)[2]
            } else {
                activationState = QSTileState.ActivationState.INACTIVE
                secondaryLabel = context.resources.getStringArray(R.array.tile_states_location)[1]
                secondaryLabel = resources.getStringArray(R.array.tile_states_location)[1]
            }
            contentDescription = label
            supportedActions =
Loading