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

Commit edd059b3 authored by Christine Franks's avatar Christine Franks
Browse files

Catch if an invalid constant is sent

Bug: 227332691
Test: atest SystemUITests:com.android.systemui.media.taptotransfer.receiver

Change-Id: I4c9fc065c7a4c96bf51a2d14a1eb1c7abe543a9a
(cherry picked from commit ba7983e8)
Merged-In: I4c9fc065c7a4c96bf51a2d14a1eb1c7abe543a9a
parent c27b0bce
Loading
Loading
Loading
Loading
+13 −5
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.media.taptotransfer.receiver

import android.app.StatusBarManager
import android.util.Log
import com.android.internal.logging.UiEventLogger

/**
@@ -25,15 +26,15 @@ import com.android.internal.logging.UiEventLogger
 */
enum class ChipStateReceiver(
    @StatusBarManager.MediaTransferSenderState val stateInt: Int,
    val uiEvent: UiEventLogger.UiEventEnum,
    val uiEvent: UiEventLogger.UiEventEnum
) {
    CLOSE_TO_SENDER(
        StatusBarManager.MEDIA_TRANSFER_RECEIVER_STATE_CLOSE_TO_SENDER,
        MediaTttReceiverUiEvents.MEDIA_TTT_RECEIVER_CLOSE_TO_SENDER,
        MediaTttReceiverUiEvents.MEDIA_TTT_RECEIVER_CLOSE_TO_SENDER
    ),
    FAR_FROM_SENDER(
        StatusBarManager.MEDIA_TRANSFER_RECEIVER_STATE_FAR_FROM_SENDER,
        MediaTttReceiverUiEvents.MEDIA_TTT_RECEIVER_FAR_FROM_SENDER,
        MediaTttReceiverUiEvents.MEDIA_TTT_RECEIVER_FAR_FROM_SENDER
    );

    companion object {
@@ -43,8 +44,13 @@ enum class ChipStateReceiver(
         */
        fun getReceiverStateFromId(
            @StatusBarManager.MediaTransferReceiverState displayState: Int
        ) : ChipStateReceiver = values().first { it.stateInt == displayState }

        ): ChipStateReceiver? =
        try {
            values().first { it.stateInt == displayState }
        } catch (e: NoSuchElementException) {
            Log.e(TAG, "Could not find requested state $displayState", e)
            null
        }

        /**
         * Returns the state int from [StatusBarManager] associated with the given sender state
@@ -56,3 +62,5 @@ enum class ChipStateReceiver(
        fun getReceiverStateIdFromName(name: String): Int = valueOf(name).stateInt
    }
}

private const val TAG = "ChipStateReceiver"
+13 −1
Original line number Diff line number Diff line
@@ -102,7 +102,7 @@ class MediaTttChipControllerReceiverTest : SysuiTestCase() {
            TapGestureDetector(context),
            powerManager,
            Handler.getMain(),
            receiverUiEventLogger,
            receiverUiEventLogger
        )

        val callbackCaptor = ArgumentCaptor.forClass(CommandQueue.Callbacks::class.java)
@@ -206,6 +206,18 @@ class MediaTttChipControllerReceiverTest : SysuiTestCase() {
        assertThat(chipView.getAppIconView().measuredHeight).isEqualTo(expectedSize)
    }

    @Test
    fun commandQueueCallback_invalidStateParam_noChipShown() {
        commandQueueCallback.updateMediaTapToTransferReceiverDisplay(
            StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_TRANSFER_TO_THIS_DEVICE_SUCCEEDED,
            routeInfo,
            null,
            APP_NAME
        )

        verify(windowManager, never()).addView(any(), any())
    }

    private fun getChipView(): ViewGroup {
        val viewCaptor = ArgumentCaptor.forClass(View::class.java)
        verify(windowManager).addView(viewCaptor.capture(), any())