From edd059b30219a17eb5b6391914e10bae1e0ed41d Mon Sep 17 00:00:00 2001 From: Christine Franks Date: Tue, 29 Mar 2022 08:57:57 -0700 Subject: [PATCH] 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 ba7983e8302de1c34a1e99a1ec8977319cf78ca2) Merged-In: I4c9fc065c7a4c96bf51a2d14a1eb1c7abe543a9a --- .../receiver/ChipStateReceiver.kt | 18 +++++++++++++----- .../MediaTttChipControllerReceiverTest.kt | 14 +++++++++++++- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/ChipStateReceiver.kt b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/ChipStateReceiver.kt index a0e803f6bb8dc..40ea1e6e87df4 100644 --- a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/ChipStateReceiver.kt +++ b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/ChipStateReceiver.kt @@ -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" diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/receiver/MediaTttChipControllerReceiverTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/receiver/MediaTttChipControllerReceiverTest.kt index 067607f9b8aed..9edc4f4c71c33 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/receiver/MediaTttChipControllerReceiverTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/receiver/MediaTttChipControllerReceiverTest.kt @@ -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())