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

Commit 528cc83a authored by Olivier St-Onge's avatar Olivier St-Onge
Browse files

Fix expected icons for additional tests

Flag: com.android.systemui.qs_ui_refactor_compose_fragment
Bug: 382236958
Test: BluetoothTileTest.kt
Test: DndTileTest.kt
Test: DreamTileTest.java
Test: HotspotTileTest.java
Change-Id: Ibd21e818058f9d1a5eda647877e86eed07351abb
parent ff65f869
Loading
Loading
Loading
Loading
+25 −20
Original line number Diff line number Diff line
@@ -22,8 +22,10 @@ import com.android.systemui.plugins.qs.QSTile
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.qs.QSHost
import com.android.systemui.qs.QsEventLogger
import com.android.systemui.qs.flags.QsInCompose.isEnabled
import com.android.systemui.qs.logging.QSLogger
import com.android.systemui.qs.tileimpl.QSTileImpl
import com.android.systemui.qs.tileimpl.QSTileImpl.DrawableIconWithRes
import com.android.systemui.res.R
import com.android.systemui.statusbar.policy.BluetoothController
import com.android.systemui.util.mockito.any
@@ -81,7 +83,7 @@ class BluetoothTileTest : SysuiTestCase() {
                qsLogger,
                bluetoothController,
                featureFlags,
                bluetoothTileDialogViewModel
                bluetoothTileDialogViewModel,
            )

        tile.initialize()
@@ -109,8 +111,7 @@ class BluetoothTileTest : SysuiTestCase() {

        tile.handleUpdateState(state, /* arg= */ null)

        assertThat(state.icon)
            .isEqualTo(QSTileImpl.ResourceIcon.get(R.drawable.qs_bluetooth_icon_off))
        assertThat(state.icon).isEqualTo(createExpectedIcon(R.drawable.qs_bluetooth_icon_off))
    }

    @Test
@@ -121,8 +122,7 @@ class BluetoothTileTest : SysuiTestCase() {

        tile.handleUpdateState(state, /* arg= */ null)

        assertThat(state.icon)
            .isEqualTo(QSTileImpl.ResourceIcon.get(R.drawable.qs_bluetooth_icon_off))
        assertThat(state.icon).isEqualTo(createExpectedIcon(R.drawable.qs_bluetooth_icon_off))
    }

    @Test
@@ -133,8 +133,7 @@ class BluetoothTileTest : SysuiTestCase() {

        tile.handleUpdateState(state, /* arg= */ null)

        assertThat(state.icon)
            .isEqualTo(QSTileImpl.ResourceIcon.get(R.drawable.qs_bluetooth_icon_on))
        assertThat(state.icon).isEqualTo(createExpectedIcon(R.drawable.qs_bluetooth_icon_on))
    }

    @Test
@@ -145,8 +144,7 @@ class BluetoothTileTest : SysuiTestCase() {

        tile.handleUpdateState(state, /* arg= */ null)

        assertThat(state.icon)
            .isEqualTo(QSTileImpl.ResourceIcon.get(R.drawable.qs_bluetooth_icon_search))
        assertThat(state.icon).isEqualTo(createExpectedIcon(R.drawable.qs_bluetooth_icon_search))
    }

    @Test
@@ -161,11 +159,10 @@ class BluetoothTileTest : SysuiTestCase() {
            .isEqualTo(
                mContext.getString(
                    R.string.quick_settings_bluetooth_secondary_label_battery_level,
                    Utils.formatPercentage(50)
                    Utils.formatPercentage(50),
                )
            )
        verify(bluetoothController)
            .addOnMetadataChangedListener(eq(cachedDevice), any(), any())
        verify(bluetoothController).addOnMetadataChangedListener(eq(cachedDevice), any(), any())
    }

    @Test
@@ -186,7 +183,7 @@ class BluetoothTileTest : SysuiTestCase() {
            .isEqualTo(
                mContext.getString(
                    R.string.quick_settings_bluetooth_secondary_label_battery_level,
                    Utils.formatPercentage(25)
                    Utils.formatPercentage(25),
                )
            )
        verify(bluetoothController, times(1))
@@ -265,7 +262,7 @@ class BluetoothTileTest : SysuiTestCase() {
        qsLogger: QSLogger,
        bluetoothController: BluetoothController,
        featureFlags: FeatureFlagsClassic,
        bluetoothTileDialogViewModel: BluetoothTileDialogViewModel
        bluetoothTileDialogViewModel: BluetoothTileDialogViewModel,
    ) :
        BluetoothTile(
            qsHost,
@@ -279,13 +276,13 @@ class BluetoothTileTest : SysuiTestCase() {
            qsLogger,
            bluetoothController,
            featureFlags,
            bluetoothTileDialogViewModel
            bluetoothTileDialogViewModel,
        ) {
        var restrictionChecked: String? = null

        override fun checkIfRestrictionEnforcedByAdminOnly(
            state: QSTile.State?,
            userRestriction: String?
            userRestriction: String?,
        ) {
            restrictionChecked = userRestriction
        }
@@ -321,7 +318,7 @@ class BluetoothTileTest : SysuiTestCase() {
    fun listenToDeviceMetadata(
        state: QSTile.BooleanState,
        cachedDevice: CachedBluetoothDevice,
        batteryLevel: Int
        batteryLevel: Int,
    ) {
        val btDevice = mock<BluetoothDevice>()
        whenever(cachedDevice.device).thenReturn(btDevice)
@@ -332,4 +329,12 @@ class BluetoothTileTest : SysuiTestCase() {
        addConnectedDevice(cachedDevice)
        tile.handleUpdateState(state, /* arg= */ null)
    }

    private fun createExpectedIcon(resId: Int): QSTile.Icon {
        return if (isEnabled) {
            DrawableIconWithRes(mContext.getDrawable(resId), resId)
        } else {
            QSTileImpl.ResourceIcon.get(resId)
        }
    }
}
+49 −50
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@ import android.view.ContextThemeWrapper
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.internal.logging.MetricsLogger
import com.android.systemui.res.R
import com.android.systemui.SysuiTestCase
import com.android.systemui.animation.DialogTransitionAnimator
import com.android.systemui.animation.Expandable
@@ -39,14 +38,18 @@ import com.android.systemui.plugins.qs.QSTile
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.qs.QSHost
import com.android.systemui.qs.QsEventLogger
import com.android.systemui.qs.flags.QsInCompose.isEnabled
import com.android.systemui.qs.logging.QSLogger
import com.android.systemui.qs.tileimpl.QSTileImpl
import com.android.systemui.qs.tileimpl.QSTileImpl.DrawableIconWithRes
import com.android.systemui.res.R
import com.android.systemui.statusbar.policy.ZenModeController
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.nullable
import com.android.systemui.util.settings.FakeSettings
import com.android.systemui.util.settings.SecureSettings
import com.google.common.truth.Truth.assertThat
import java.io.File
import org.junit.After
import org.junit.Before
import org.junit.Test
@@ -55,9 +58,8 @@ import org.mockito.Mock
import org.mockito.Mockito.anyBoolean
import org.mockito.Mockito.never
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
import java.io.File
import org.mockito.Mockito.`when` as whenever
import org.mockito.MockitoAnnotations

@SmallTest
@RunWith(AndroidJUnit4::class)
@@ -70,41 +72,29 @@ class DndTileTest : SysuiTestCase() {
        private const val KEY = Settings.Secure.ZEN_DURATION
    }

    @Mock
    private lateinit var qsHost: QSHost
    @Mock private lateinit var qsHost: QSHost

    @Mock
    private lateinit var metricsLogger: MetricsLogger
    @Mock private lateinit var metricsLogger: MetricsLogger

    @Mock
    private lateinit var statusBarStateController: StatusBarStateController
    @Mock private lateinit var statusBarStateController: StatusBarStateController

    @Mock
    private lateinit var activityStarter: ActivityStarter
    @Mock private lateinit var activityStarter: ActivityStarter

    @Mock
    private lateinit var qsLogger: QSLogger
    @Mock private lateinit var qsLogger: QSLogger

    @Mock
    private lateinit var uiEventLogger: QsEventLogger
    @Mock private lateinit var uiEventLogger: QsEventLogger

    @Mock
    private lateinit var zenModeController: ZenModeController
    @Mock private lateinit var zenModeController: ZenModeController

    @Mock
    private lateinit var sharedPreferences: SharedPreferences
    @Mock private lateinit var sharedPreferences: SharedPreferences

    @Mock
    private lateinit var mDialogTransitionAnimator: DialogTransitionAnimator
    @Mock private lateinit var mDialogTransitionAnimator: DialogTransitionAnimator

    @Mock
    private lateinit var hostDialog: Dialog
    @Mock private lateinit var hostDialog: Dialog

    @Mock
    private lateinit var expandable: Expandable
    @Mock private lateinit var expandable: Expandable

    @Mock
    private lateinit var controller: DialogTransitionAnimator.Controller
    @Mock private lateinit var controller: DialogTransitionAnimator.Controller

    private lateinit var secureSettings: SecureSettings
    private lateinit var testableLooper: TestableLooper
@@ -118,9 +108,9 @@ class DndTileTest : SysuiTestCase() {

        whenever(qsHost.userId).thenReturn(DEFAULT_USER)

        val wrappedContext = object : ContextWrapper(
                ContextThemeWrapper(context, R.style.Theme_SystemUI_QuickSettings)
        ) {
        val wrappedContext =
            object :
                ContextWrapper(ContextThemeWrapper(context, R.style.Theme_SystemUI_QuickSettings)) {
                override fun getSharedPreferences(file: File?, mode: Int): SharedPreferences {
                    return sharedPreferences
                }
@@ -128,7 +118,8 @@ class DndTileTest : SysuiTestCase() {
        whenever(qsHost.context).thenReturn(wrappedContext)
        whenever(expandable.dialogTransitionController(any())).thenReturn(controller)

        tile = DndTile(
        tile =
            DndTile(
                qsHost,
                uiEventLogger,
                testableLooper.looper,
@@ -141,7 +132,7 @@ class DndTileTest : SysuiTestCase() {
                zenModeController,
                sharedPreferences,
                secureSettings,
            mDialogTransitionAnimator
                mDialogTransitionAnimator,
            )
    }

@@ -222,7 +213,7 @@ class DndTileTest : SysuiTestCase() {

        tile.handleUpdateState(state, /* arg= */ null)

        assertThat(state.icon).isEqualTo(QSTileImpl.ResourceIcon.get(R.drawable.qs_dnd_icon_off))
        assertThat(state.icon).isEqualTo(createExpectedIcon(R.drawable.qs_dnd_icon_off))
    }

    @Test
@@ -232,6 +223,14 @@ class DndTileTest : SysuiTestCase() {

        tile.handleUpdateState(state, /* arg= */ null)

        assertThat(state.icon).isEqualTo(QSTileImpl.ResourceIcon.get(R.drawable.qs_dnd_icon_on))
        assertThat(state.icon).isEqualTo(createExpectedIcon(R.drawable.qs_dnd_icon_on))
    }

    private fun createExpectedIcon(resId: Int): QSTile.Icon {
        return if (isEnabled) {
            DrawableIconWithRes(mContext.getDrawable(resId), resId)
        } else {
            QSTileImpl.ResourceIcon.get(resId)
        }
    }
}
+12 −2
Original line number Diff line number Diff line
@@ -45,9 +45,11 @@ import com.android.systemui.SysuiTestCase;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.classifier.FalsingManagerFake;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.qs.QSTile;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.QsEventLogger;
import com.android.systemui.qs.flags.QsInCompose;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.res.R;
@@ -246,13 +248,13 @@ public class DreamTileTest extends SysuiTestCase {
        dockIntent.putExtra(Intent.EXTRA_DOCK_STATE, Intent.EXTRA_DOCK_STATE_DESK);
        receiver.onReceive(mContext, dockIntent);
        mTestableLooper.processAllMessages();
        assertEquals(QSTileImpl.ResourceIcon.get(R.drawable.ic_qs_screen_saver),
        assertEquals(createExpectedIcon(R.drawable.ic_qs_screen_saver),
                dockedTile.getState().icon);

        dockIntent.putExtra(Intent.EXTRA_DOCK_STATE, Intent.EXTRA_DOCK_STATE_UNDOCKED);
        receiver.onReceive(mContext, dockIntent);
        mTestableLooper.processAllMessages();
        assertEquals(QSTileImpl.ResourceIcon.get(R.drawable.ic_qs_screen_saver_undocked),
        assertEquals(createExpectedIcon(R.drawable.ic_qs_screen_saver_undocked),
                dockedTile.getState().icon);

        destroyTile(dockedTile);
@@ -268,6 +270,14 @@ public class DreamTileTest extends SysuiTestCase {
        mTestableLooper.processAllMessages();
    }

    private QSTile.Icon createExpectedIcon(int resId) {
        if (QsInCompose.isEnabled()) {
            return new QSTileImpl.DrawableIconWithRes(mContext.getDrawable(resId), resId);
        } else {
            return QSTileImpl.ResourceIcon.get(resId);
        }
    }

    private DreamTile constructTileForTest(boolean dreamSupported,
            boolean dreamOnlyEnabledForSystemUser) {
        return new DreamTile(
+12 −3
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ import com.android.systemui.plugins.qs.QSTile;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.QsEventLogger;
import com.android.systemui.qs.flags.QsInCompose;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.res.R;
@@ -144,7 +145,7 @@ public class HotspotTileTest extends SysuiTestCase {
        mTile.handleUpdateState(state, /* arg= */ null);

        assertThat(state.icon)
                .isEqualTo(QSTileImpl.ResourceIcon.get(R.drawable.qs_hotspot_icon_off));
                .isEqualTo(createExpectedIcon(R.drawable.qs_hotspot_icon_off));
    }

    @Test
@@ -156,7 +157,7 @@ public class HotspotTileTest extends SysuiTestCase {
        mTile.handleUpdateState(state, /* arg= */ null);

        assertThat(state.icon)
                .isEqualTo(QSTileImpl.ResourceIcon.get(R.drawable.qs_hotspot_icon_search));
                .isEqualTo(createExpectedIcon(R.drawable.qs_hotspot_icon_search));
    }

    @Test
@@ -168,6 +169,14 @@ public class HotspotTileTest extends SysuiTestCase {
        mTile.handleUpdateState(state, /* arg= */ null);

        assertThat(state.icon)
                .isEqualTo(QSTileImpl.ResourceIcon.get(R.drawable.qs_hotspot_icon_on));
                .isEqualTo(createExpectedIcon(R.drawable.qs_hotspot_icon_on));
    }

    private QSTile.Icon createExpectedIcon(int resId) {
        if (QsInCompose.isEnabled()) {
            return new QSTileImpl.DrawableIconWithRes(mContext.getDrawable(resId), resId);
        } else {
            return QSTileImpl.ResourceIcon.get(resId);
        }
    }
}