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

Commit e0394fb2 authored by Caitlin Cassidy's avatar Caitlin Cassidy
Browse files

[Media TTT] Stop chip from crashing on older devices (e.g. Pixel 4a),

un-ignore the tests now that it doesn't crash, and rehab the tests a
bit.

Fixes: 216286227
Test: media.taptotransfer tests
Test: verified chip displays on Pixel 4a correctly
Change-Id: I9ce20da5be2973f303884be28dec91dcc5f3a4e5
parent 1ccbddad
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -155,6 +155,7 @@
    <color name="GM2_grey_900">#202124</color>

    <color name="GM2_red_300">#F28B82</color>
    <color name="GM2_red_500">#EA4335</color>
    <color name="GM2_red_700">#C5221F</color>

    <color name="GM2_blue_300">#8AB4F8</color>
+0 −2
Original line number Diff line number Diff line
@@ -39,7 +39,6 @@ import com.android.systemui.util.mockito.nullable
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
import org.junit.Before
import org.junit.Ignore
import org.junit.Test
import org.mockito.Mock
import org.mockito.Mockito.verify
@@ -49,7 +48,6 @@ import java.io.StringWriter
import java.util.concurrent.Executor

@SmallTest
@Ignore("b/216286227")
class MediaTttCommandLineHelperTest : SysuiTestCase() {

    private val inlineExecutor = Executor { command -> command.run() }
+7 −6
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.systemui.media.taptotransfer.common

import android.content.Context
import android.graphics.drawable.Drawable
import android.graphics.drawable.Icon
import android.view.View
import android.view.ViewGroup
import android.view.WindowManager
@@ -29,7 +28,6 @@ import com.android.systemui.SysuiTestCase
import com.android.systemui.util.mockito.any
import com.google.common.truth.Truth.assertThat
import org.junit.Before
import org.junit.Ignore
import org.junit.Test
import org.mockito.ArgumentCaptor
import org.mockito.Mock
@@ -39,7 +37,6 @@ import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations

@SmallTest
@Ignore("b/216286227")
class MediaTttChipControllerCommonTest : SysuiTestCase() {
    private lateinit var controllerCommon: MediaTttChipControllerCommon<MediaTttChipState>

@@ -50,7 +47,7 @@ class MediaTttChipControllerCommonTest : SysuiTestCase() {
    @Before
    fun setUp() {
        MockitoAnnotations.initMocks(this)
        appIconDrawable = Icon.createWithResource(context, R.drawable.ic_cake).loadDrawable(context)
        appIconDrawable = context.getDrawable(R.drawable.ic_cake)!!
        controllerCommon = TestControllerCommon(context, windowManager)
    }

@@ -93,10 +90,10 @@ class MediaTttChipControllerCommonTest : SysuiTestCase() {
        controllerCommon.displayChip(getState())
        val chipView = getChipView()

        val state = MediaTttChipState(PACKAGE_NAME)
        val state = TestChipState(PACKAGE_NAME)
        controllerCommon.setIcon(state, chipView)

        assertThat(chipView.getAppIconView().drawable).isEqualTo(state.getAppIcon(context))
        assertThat(chipView.getAppIconView().drawable).isEqualTo(appIconDrawable)
        assertThat(chipView.getAppIconView().contentDescription)
                .isEqualTo(state.getAppName(context))
    }
@@ -120,6 +117,10 @@ class MediaTttChipControllerCommonTest : SysuiTestCase() {
        override fun updateChipView(chipState: MediaTttChipState, currentChipView: ViewGroup) {
        }
    }

    inner class TestChipState(appPackageName: String?) : MediaTttChipState(appPackageName) {
        override fun getAppIcon(context: Context) = appIconDrawable
    }
}

private const val PACKAGE_NAME = "com.android.systemui"
+24 −9
Original line number Diff line number Diff line
@@ -17,7 +17,9 @@
package com.android.systemui.media.taptotransfer.receiver

import android.app.StatusBarManager
import android.graphics.drawable.Icon
import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager
import android.graphics.drawable.Drawable
import android.media.MediaRoute2Info
import android.os.Handler
import android.view.View
@@ -29,30 +31,44 @@ import com.android.systemui.R
import com.android.systemui.SysuiTestCase
import com.android.systemui.statusbar.CommandQueue
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.eq
import com.google.common.truth.Truth.assertThat
import org.junit.Before
import org.junit.Ignore
import org.junit.Test
import org.mockito.ArgumentCaptor
import org.mockito.Mock
import org.mockito.Mockito.never
import org.mockito.Mockito.verify
import org.mockito.Mockito.`when` as whenever
import org.mockito.MockitoAnnotations

@SmallTest
@Ignore("b/216286227")
class MediaTttChipControllerReceiverTest : SysuiTestCase() {
    private lateinit var controllerReceiver: MediaTttChipControllerReceiver

    @Mock
    private lateinit var packageManager: PackageManager
    @Mock
    private lateinit var applicationInfo: ApplicationInfo
    @Mock
    private lateinit var windowManager: WindowManager
    @Mock
    private lateinit var commandQueue: CommandQueue
    private lateinit var commandQueueCallback: CommandQueue.Callbacks
    private lateinit var fakeAppIconDrawable: Drawable

    @Before
    fun setUp() {
        MockitoAnnotations.initMocks(this)

        fakeAppIconDrawable = context.getDrawable(R.drawable.ic_cake)!!
        whenever(packageManager.getApplicationIcon(PACKAGE_NAME)).thenReturn(fakeAppIconDrawable)
        whenever(applicationInfo.loadLabel(packageManager)).thenReturn(APP_NAME)
        whenever(packageManager.getApplicationInfo(
            eq(PACKAGE_NAME), any<PackageManager.ApplicationInfoFlags>()
        )).thenReturn(applicationInfo)
        context.setMockPackageManager(packageManager)

        controllerReceiver = MediaTttChipControllerReceiver(
                commandQueue, context, windowManager, Handler.getMain())

@@ -113,13 +129,12 @@ class MediaTttChipControllerReceiverTest : SysuiTestCase() {

        controllerReceiver.displayChip(state)

        assertThat(getChipView().getAppIconView().drawable).isEqualTo(state.getAppIcon(context))

        assertThat(getChipView().getAppIconView().drawable).isEqualTo(fakeAppIconDrawable)
    }

    @Test
    fun displayChip_hasAppIconDrawable_iconIsDrawable() {
        val drawable = Icon.createWithResource(context, R.drawable.ic_cake).loadDrawable(context)
        val drawable = context.getDrawable(R.drawable.ic_alarm)!!
        val state = ChipStateReceiver(PACKAGE_NAME, drawable, "appName")

        controllerReceiver.displayChip(state)
@@ -133,13 +148,12 @@ class MediaTttChipControllerReceiverTest : SysuiTestCase() {

        controllerReceiver.displayChip(state)

        assertThat(getChipView().getAppIconView().contentDescription)
                .isEqualTo(state.getAppName(context))
        assertThat(getChipView().getAppIconView().contentDescription).isEqualTo(APP_NAME)
    }

    @Test
    fun displayChip_hasAppName_iconContentDescriptionIsAppNameOverride() {
        val appName = "FakeAppName"
        val appName = "Override App Name"
        val state = ChipStateReceiver(PACKAGE_NAME, appIconDrawable = null, appName)

        controllerReceiver.displayChip(state)
@@ -156,6 +170,7 @@ class MediaTttChipControllerReceiverTest : SysuiTestCase() {
    private fun ViewGroup.getAppIconView() = this.requireViewById<ImageView>(R.id.app_icon)
}

private const val APP_NAME = "Fake app name"
private const val PACKAGE_NAME = "com.android.systemui"

private val routeInfo = MediaRoute2Info.Builder("id", "Test route name")
+41 −30
Original line number Diff line number Diff line
@@ -17,6 +17,9 @@
package com.android.systemui.media.taptotransfer.sender

import android.app.StatusBarManager
import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager
import android.graphics.drawable.Drawable
import android.media.MediaRoute2Info
import android.view.View
import android.view.WindowManager
@@ -29,30 +32,44 @@ import com.android.systemui.R
import com.android.systemui.SysuiTestCase
import com.android.systemui.statusbar.CommandQueue
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.eq
import com.google.common.truth.Truth.assertThat
import org.junit.Before
import org.junit.Ignore
import org.junit.Test
import org.mockito.ArgumentCaptor
import org.mockito.Mock
import org.mockito.Mockito.never
import org.mockito.Mockito.verify
import org.mockito.Mockito.`when` as whenever
import org.mockito.MockitoAnnotations

@SmallTest
@Ignore("b/216286227")
class MediaTttChipControllerSenderTest : SysuiTestCase() {
    private lateinit var controllerSender: MediaTttChipControllerSender

    @Mock
    private lateinit var packageManager: PackageManager
    @Mock
    private lateinit var applicationInfo: ApplicationInfo
    @Mock
    private lateinit var windowManager: WindowManager
    @Mock
    private lateinit var commandQueue: CommandQueue
    private lateinit var commandQueueCallback: CommandQueue.Callbacks
    private lateinit var fakeAppIconDrawable: Drawable

    @Before
    fun setUp() {
        MockitoAnnotations.initMocks(this)

        fakeAppIconDrawable = context.getDrawable(R.drawable.ic_cake)!!
        whenever(applicationInfo.loadLabel(packageManager)).thenReturn(APP_NAME)
        whenever(packageManager.getApplicationIcon(PACKAGE_NAME)).thenReturn(fakeAppIconDrawable)
        whenever(packageManager.getApplicationInfo(
            eq(PACKAGE_NAME), any<PackageManager.ApplicationInfoFlags>()
        )).thenReturn(applicationInfo)
        context.setMockPackageManager(packageManager)

        controllerSender = MediaTttChipControllerSender(commandQueue, context, windowManager)

        val callbackCaptor = ArgumentCaptor.forClass(CommandQueue.Callbacks::class.java)
@@ -192,9 +209,8 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() {
        controllerSender.displayChip(state)

        val chipView = getChipView()
        assertThat(chipView.getAppIconView().drawable).isEqualTo(state.getAppIcon(context))
        assertThat(chipView.getAppIconView().contentDescription)
                .isEqualTo(state.getAppName(context))
        assertThat(chipView.getAppIconView().drawable).isEqualTo(fakeAppIconDrawable)
        assertThat(chipView.getAppIconView().contentDescription).isEqualTo(APP_NAME)
        assertThat(chipView.getChipText()).isEqualTo(state.getChipTextString(context))
        assertThat(chipView.getLoadingIconVisibility()).isEqualTo(View.GONE)
        assertThat(chipView.getUndoButton().visibility).isEqualTo(View.GONE)
@@ -207,9 +223,8 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() {
        controllerSender.displayChip(state)

        val chipView = getChipView()
        assertThat(chipView.getAppIconView().drawable).isEqualTo(state.getAppIcon(context))
        assertThat(chipView.getAppIconView().contentDescription)
                .isEqualTo(state.getAppName(context))
        assertThat(chipView.getAppIconView().drawable).isEqualTo(fakeAppIconDrawable)
        assertThat(chipView.getAppIconView().contentDescription).isEqualTo(APP_NAME)
        assertThat(chipView.getChipText()).isEqualTo(state.getChipTextString(context))
        assertThat(chipView.getLoadingIconVisibility()).isEqualTo(View.GONE)
        assertThat(chipView.getUndoButton().visibility).isEqualTo(View.GONE)
@@ -222,9 +237,8 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() {
        controllerSender.displayChip(state)

        val chipView = getChipView()
        assertThat(chipView.getAppIconView().drawable).isEqualTo(state.getAppIcon(context))
        assertThat(chipView.getAppIconView().contentDescription)
                .isEqualTo(state.getAppName(context))
        assertThat(chipView.getAppIconView().drawable).isEqualTo(fakeAppIconDrawable)
        assertThat(chipView.getAppIconView().contentDescription).isEqualTo(APP_NAME)
        assertThat(chipView.getChipText()).isEqualTo(state.getChipTextString(context))
        assertThat(chipView.getLoadingIconVisibility()).isEqualTo(View.VISIBLE)
        assertThat(chipView.getUndoButton().visibility).isEqualTo(View.GONE)
@@ -237,9 +251,8 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() {
        controllerSender.displayChip(state)

        val chipView = getChipView()
        assertThat(chipView.getAppIconView().drawable).isEqualTo(state.getAppIcon(context))
        assertThat(chipView.getAppIconView().contentDescription)
                .isEqualTo(state.getAppName(context))
        assertThat(chipView.getAppIconView().drawable).isEqualTo(fakeAppIconDrawable)
        assertThat(chipView.getAppIconView().contentDescription).isEqualTo(APP_NAME)
        assertThat(chipView.getChipText()).isEqualTo(state.getChipTextString(context))
        assertThat(chipView.getLoadingIconVisibility()).isEqualTo(View.VISIBLE)
        assertThat(chipView.getUndoButton().visibility).isEqualTo(View.GONE)
@@ -252,9 +265,8 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() {
        controllerSender.displayChip(state)

        val chipView = getChipView()
        assertThat(chipView.getAppIconView().drawable).isEqualTo(state.getAppIcon(context))
        assertThat(chipView.getAppIconView().contentDescription)
                .isEqualTo(state.getAppName(context))
        assertThat(chipView.getAppIconView().drawable).isEqualTo(fakeAppIconDrawable)
        assertThat(chipView.getAppIconView().contentDescription).isEqualTo(APP_NAME)
        assertThat(chipView.getChipText()).isEqualTo(state.getChipTextString(context))
        assertThat(chipView.getLoadingIconVisibility()).isEqualTo(View.GONE)
        assertThat(chipView.getFailureIcon().visibility).isEqualTo(View.GONE)
@@ -314,9 +326,8 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() {
        controllerSender.displayChip(state)

        val chipView = getChipView()
        assertThat(chipView.getAppIconView().drawable).isEqualTo(state.getAppIcon(context))
        assertThat(chipView.getAppIconView().contentDescription)
                .isEqualTo(state.getAppName(context))
        assertThat(chipView.getAppIconView().drawable).isEqualTo(fakeAppIconDrawable)
        assertThat(chipView.getAppIconView().contentDescription).isEqualTo(APP_NAME)
        assertThat(chipView.getChipText()).isEqualTo(state.getChipTextString(context))
        assertThat(chipView.getLoadingIconVisibility()).isEqualTo(View.GONE)
        assertThat(chipView.getFailureIcon().visibility).isEqualTo(View.GONE)
@@ -376,9 +387,8 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() {
        controllerSender.displayChip(state)

        val chipView = getChipView()
        assertThat(chipView.getAppIconView().drawable).isEqualTo(state.getAppIcon(context))
        assertThat(chipView.getAppIconView().contentDescription)
                .isEqualTo(state.getAppName(context))
        assertThat(chipView.getAppIconView().drawable).isEqualTo(fakeAppIconDrawable)
        assertThat(chipView.getAppIconView().contentDescription).isEqualTo(APP_NAME)
        assertThat(chipView.getChipText()).isEqualTo(state.getChipTextString(context))
        assertThat(chipView.getLoadingIconVisibility()).isEqualTo(View.GONE)
        assertThat(chipView.getUndoButton().visibility).isEqualTo(View.GONE)
@@ -451,15 +461,15 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() {

    /** Helper method providing default parameters to not clutter up the tests. */
    private fun almostCloseToStartCast() =
        AlmostCloseToStartCast(PACKAGE_NAME, DEVICE_NAME)
        AlmostCloseToStartCast(PACKAGE_NAME, OTHER_DEVICE_NAME)

    /** Helper method providing default parameters to not clutter up the tests. */
    private fun almostCloseToEndCast() =
        AlmostCloseToEndCast(PACKAGE_NAME, DEVICE_NAME)
        AlmostCloseToEndCast(PACKAGE_NAME, OTHER_DEVICE_NAME)

    /** Helper method providing default parameters to not clutter up the tests. */
    private fun transferToReceiverTriggered() =
        TransferToReceiverTriggered(PACKAGE_NAME, DEVICE_NAME)
        TransferToReceiverTriggered(PACKAGE_NAME, OTHER_DEVICE_NAME)

    /** Helper method providing default parameters to not clutter up the tests. */
    private fun transferToThisDeviceTriggered() =
@@ -468,23 +478,24 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() {
    /** Helper method providing default parameters to not clutter up the tests. */
    private fun transferToReceiverSucceeded(undoCallback: IUndoMediaTransferCallback? = null) =
        TransferToReceiverSucceeded(
            PACKAGE_NAME, DEVICE_NAME, undoCallback
            PACKAGE_NAME, OTHER_DEVICE_NAME, undoCallback
        )

    /** Helper method providing default parameters to not clutter up the tests. */
    private fun transferToThisDeviceSucceeded(undoCallback: IUndoMediaTransferCallback? = null) =
        TransferToThisDeviceSucceeded(
            PACKAGE_NAME, DEVICE_NAME, undoCallback
            PACKAGE_NAME, OTHER_DEVICE_NAME, undoCallback
        )

    /** Helper method providing default parameters to not clutter up the tests. */
    private fun transferFailed() = TransferFailed(PACKAGE_NAME)
}

private const val DEVICE_NAME = "My Tablet"
private const val APP_NAME = "Fake app name"
private const val OTHER_DEVICE_NAME = "My Tablet"
private const val PACKAGE_NAME = "com.android.systemui"

private val routeInfo = MediaRoute2Info.Builder("id", "Test Name")
private val routeInfo = MediaRoute2Info.Builder("id", OTHER_DEVICE_NAME)
    .addFeature("feature")
    .setPackageName(PACKAGE_NAME)
    .build()