Merge "[Media TTT] Add analytics logs for the sender chip." into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
d120ca75ca
@@ -21,6 +21,7 @@ import android.content.Context
|
|||||||
import android.media.MediaRoute2Info
|
import android.media.MediaRoute2Info
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.annotation.StringRes
|
import androidx.annotation.StringRes
|
||||||
|
import com.android.internal.logging.UiEventLogger
|
||||||
import com.android.internal.statusbar.IUndoMediaTransferCallback
|
import com.android.internal.statusbar.IUndoMediaTransferCallback
|
||||||
import com.android.systemui.R
|
import com.android.systemui.R
|
||||||
import com.android.systemui.media.taptotransfer.common.DEFAULT_TIMEOUT_MILLIS
|
import com.android.systemui.media.taptotransfer.common.DEFAULT_TIMEOUT_MILLIS
|
||||||
@@ -39,6 +40,7 @@ import com.android.systemui.media.taptotransfer.common.DEFAULT_TIMEOUT_MILLIS
|
|||||||
*/
|
*/
|
||||||
enum class ChipStateSender(
|
enum class ChipStateSender(
|
||||||
@StatusBarManager.MediaTransferSenderState val stateInt: Int,
|
@StatusBarManager.MediaTransferSenderState val stateInt: Int,
|
||||||
|
val uiEvent: UiEventLogger.UiEventEnum,
|
||||||
@StringRes val stringResId: Int?,
|
@StringRes val stringResId: Int?,
|
||||||
val isMidTransfer: Boolean = false,
|
val isMidTransfer: Boolean = false,
|
||||||
val isTransferFailure: Boolean = false,
|
val isTransferFailure: Boolean = false,
|
||||||
@@ -51,6 +53,7 @@ enum class ChipStateSender(
|
|||||||
*/
|
*/
|
||||||
ALMOST_CLOSE_TO_START_CAST(
|
ALMOST_CLOSE_TO_START_CAST(
|
||||||
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_ALMOST_CLOSE_TO_START_CAST,
|
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_ALMOST_CLOSE_TO_START_CAST,
|
||||||
|
MediaTttSenderUiEvents.MEDIA_TTT_SENDER_ALMOST_CLOSE_TO_START_CAST,
|
||||||
R.string.media_move_closer_to_start_cast,
|
R.string.media_move_closer_to_start_cast,
|
||||||
),
|
),
|
||||||
|
|
||||||
@@ -62,6 +65,7 @@ enum class ChipStateSender(
|
|||||||
*/
|
*/
|
||||||
ALMOST_CLOSE_TO_END_CAST(
|
ALMOST_CLOSE_TO_END_CAST(
|
||||||
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_ALMOST_CLOSE_TO_END_CAST,
|
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_ALMOST_CLOSE_TO_END_CAST,
|
||||||
|
MediaTttSenderUiEvents.MEDIA_TTT_SENDER_ALMOST_CLOSE_TO_END_CAST,
|
||||||
R.string.media_move_closer_to_end_cast,
|
R.string.media_move_closer_to_end_cast,
|
||||||
),
|
),
|
||||||
|
|
||||||
@@ -71,6 +75,7 @@ enum class ChipStateSender(
|
|||||||
*/
|
*/
|
||||||
TRANSFER_TO_RECEIVER_TRIGGERED(
|
TRANSFER_TO_RECEIVER_TRIGGERED(
|
||||||
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_TRANSFER_TO_RECEIVER_TRIGGERED,
|
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_TRANSFER_TO_RECEIVER_TRIGGERED,
|
||||||
|
MediaTttSenderUiEvents.MEDIA_TTT_SENDER_TRANSFER_TO_RECEIVER_TRIGGERED,
|
||||||
R.string.media_transfer_playing_different_device,
|
R.string.media_transfer_playing_different_device,
|
||||||
isMidTransfer = true,
|
isMidTransfer = true,
|
||||||
timeout = TRANSFER_TRIGGERED_TIMEOUT_MILLIS
|
timeout = TRANSFER_TRIGGERED_TIMEOUT_MILLIS
|
||||||
@@ -82,6 +87,7 @@ enum class ChipStateSender(
|
|||||||
*/
|
*/
|
||||||
TRANSFER_TO_THIS_DEVICE_TRIGGERED(
|
TRANSFER_TO_THIS_DEVICE_TRIGGERED(
|
||||||
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_TRANSFER_TO_THIS_DEVICE_TRIGGERED,
|
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_TRANSFER_TO_THIS_DEVICE_TRIGGERED,
|
||||||
|
MediaTttSenderUiEvents.MEDIA_TTT_SENDER_TRANSFER_TO_THIS_DEVICE_TRIGGERED,
|
||||||
R.string.media_transfer_playing_this_device,
|
R.string.media_transfer_playing_this_device,
|
||||||
isMidTransfer = true,
|
isMidTransfer = true,
|
||||||
timeout = TRANSFER_TRIGGERED_TIMEOUT_MILLIS
|
timeout = TRANSFER_TRIGGERED_TIMEOUT_MILLIS
|
||||||
@@ -92,17 +98,22 @@ enum class ChipStateSender(
|
|||||||
*/
|
*/
|
||||||
TRANSFER_TO_RECEIVER_SUCCEEDED(
|
TRANSFER_TO_RECEIVER_SUCCEEDED(
|
||||||
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_TRANSFER_TO_RECEIVER_SUCCEEDED,
|
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_TRANSFER_TO_RECEIVER_SUCCEEDED,
|
||||||
|
MediaTttSenderUiEvents.MEDIA_TTT_SENDER_TRANSFER_TO_RECEIVER_SUCCEEDED,
|
||||||
R.string.media_transfer_playing_different_device
|
R.string.media_transfer_playing_different_device
|
||||||
) {
|
) {
|
||||||
override fun undoClickListener(
|
override fun undoClickListener(
|
||||||
controllerSender: MediaTttChipControllerSender,
|
controllerSender: MediaTttChipControllerSender,
|
||||||
routeInfo: MediaRoute2Info,
|
routeInfo: MediaRoute2Info,
|
||||||
undoCallback: IUndoMediaTransferCallback?,
|
undoCallback: IUndoMediaTransferCallback?,
|
||||||
|
uiEventLogger: MediaTttSenderUiEventLogger
|
||||||
): View.OnClickListener? {
|
): View.OnClickListener? {
|
||||||
if (undoCallback == null) {
|
if (undoCallback == null) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
return View.OnClickListener {
|
return View.OnClickListener {
|
||||||
|
uiEventLogger.logUndoClicked(
|
||||||
|
MediaTttSenderUiEvents.MEDIA_TTT_SENDER_UNDO_TRANSFER_TO_RECEIVER_CLICKED
|
||||||
|
)
|
||||||
undoCallback.onUndoTriggered()
|
undoCallback.onUndoTriggered()
|
||||||
// The external service should eventually send us a TransferToThisDeviceTriggered
|
// The external service should eventually send us a TransferToThisDeviceTriggered
|
||||||
// state, but that may take too long to go through the binder and the user may be
|
// state, but that may take too long to go through the binder and the user may be
|
||||||
@@ -122,17 +133,22 @@ enum class ChipStateSender(
|
|||||||
*/
|
*/
|
||||||
TRANSFER_TO_THIS_DEVICE_SUCCEEDED(
|
TRANSFER_TO_THIS_DEVICE_SUCCEEDED(
|
||||||
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_TRANSFER_TO_THIS_DEVICE_SUCCEEDED,
|
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_TRANSFER_TO_THIS_DEVICE_SUCCEEDED,
|
||||||
|
MediaTttSenderUiEvents.MEDIA_TTT_SENDER_TRANSFER_TO_THIS_DEVICE_SUCCEEDED,
|
||||||
R.string.media_transfer_playing_this_device
|
R.string.media_transfer_playing_this_device
|
||||||
) {
|
) {
|
||||||
override fun undoClickListener(
|
override fun undoClickListener(
|
||||||
controllerSender: MediaTttChipControllerSender,
|
controllerSender: MediaTttChipControllerSender,
|
||||||
routeInfo: MediaRoute2Info,
|
routeInfo: MediaRoute2Info,
|
||||||
undoCallback: IUndoMediaTransferCallback?,
|
undoCallback: IUndoMediaTransferCallback?,
|
||||||
|
uiEventLogger: MediaTttSenderUiEventLogger
|
||||||
): View.OnClickListener? {
|
): View.OnClickListener? {
|
||||||
if (undoCallback == null) {
|
if (undoCallback == null) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
return View.OnClickListener {
|
return View.OnClickListener {
|
||||||
|
uiEventLogger.logUndoClicked(
|
||||||
|
MediaTttSenderUiEvents.MEDIA_TTT_SENDER_UNDO_TRANSFER_TO_THIS_DEVICE_CLICKED
|
||||||
|
)
|
||||||
undoCallback.onUndoTriggered()
|
undoCallback.onUndoTriggered()
|
||||||
// The external service should eventually send us a TransferToReceiverTriggered
|
// The external service should eventually send us a TransferToReceiverTriggered
|
||||||
// state, but that may take too long to go through the binder and the user may be
|
// state, but that may take too long to go through the binder and the user may be
|
||||||
@@ -150,6 +166,7 @@ enum class ChipStateSender(
|
|||||||
/** A state representing that a transfer to the receiver device has failed. */
|
/** A state representing that a transfer to the receiver device has failed. */
|
||||||
TRANSFER_TO_RECEIVER_FAILED(
|
TRANSFER_TO_RECEIVER_FAILED(
|
||||||
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_TRANSFER_TO_RECEIVER_FAILED,
|
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_TRANSFER_TO_RECEIVER_FAILED,
|
||||||
|
MediaTttSenderUiEvents.MEDIA_TTT_SENDER_TRANSFER_TO_RECEIVER_FAILED,
|
||||||
R.string.media_transfer_failed,
|
R.string.media_transfer_failed,
|
||||||
isTransferFailure = true
|
isTransferFailure = true
|
||||||
),
|
),
|
||||||
@@ -157,6 +174,7 @@ enum class ChipStateSender(
|
|||||||
/** A state representing that a transfer back to this device has failed. */
|
/** A state representing that a transfer back to this device has failed. */
|
||||||
TRANSFER_TO_THIS_DEVICE_FAILED(
|
TRANSFER_TO_THIS_DEVICE_FAILED(
|
||||||
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_TRANSFER_TO_THIS_DEVICE_FAILED,
|
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_TRANSFER_TO_THIS_DEVICE_FAILED,
|
||||||
|
MediaTttSenderUiEvents.MEDIA_TTT_SENDER_TRANSFER_TO_THIS_DEVICE_FAILED,
|
||||||
R.string.media_transfer_failed,
|
R.string.media_transfer_failed,
|
||||||
isTransferFailure = true
|
isTransferFailure = true
|
||||||
),
|
),
|
||||||
@@ -164,6 +182,7 @@ enum class ChipStateSender(
|
|||||||
/** A state representing that this device is far away from any receiver device. */
|
/** A state representing that this device is far away from any receiver device. */
|
||||||
FAR_FROM_RECEIVER(
|
FAR_FROM_RECEIVER(
|
||||||
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_FAR_FROM_RECEIVER,
|
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_FAR_FROM_RECEIVER,
|
||||||
|
MediaTttSenderUiEvents.MEDIA_TTT_SENDER_FAR_FROM_RECEIVER,
|
||||||
stringResId = null
|
stringResId = null
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -191,7 +210,8 @@ enum class ChipStateSender(
|
|||||||
open fun undoClickListener(
|
open fun undoClickListener(
|
||||||
controllerSender: MediaTttChipControllerSender,
|
controllerSender: MediaTttChipControllerSender,
|
||||||
routeInfo: MediaRoute2Info,
|
routeInfo: MediaRoute2Info,
|
||||||
undoCallback: IUndoMediaTransferCallback?
|
undoCallback: IUndoMediaTransferCallback?,
|
||||||
|
uiEventLogger: MediaTttSenderUiEventLogger
|
||||||
): View.OnClickListener? = null
|
): View.OnClickListener? = null
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ class MediaTttChipControllerSender @Inject constructor(
|
|||||||
viewUtil: ViewUtil,
|
viewUtil: ViewUtil,
|
||||||
@Main mainExecutor: DelayableExecutor,
|
@Main mainExecutor: DelayableExecutor,
|
||||||
tapGestureDetector: TapGestureDetector,
|
tapGestureDetector: TapGestureDetector,
|
||||||
|
private val uiEventLogger: MediaTttSenderUiEventLogger
|
||||||
) : MediaTttChipControllerCommon<ChipSenderInfo>(
|
) : MediaTttChipControllerCommon<ChipSenderInfo>(
|
||||||
context,
|
context,
|
||||||
logger,
|
logger,
|
||||||
@@ -91,6 +92,7 @@ class MediaTttChipControllerSender @Inject constructor(
|
|||||||
Log.e(SENDER_TAG, "Unhandled MediaTransferSenderState $displayState")
|
Log.e(SENDER_TAG, "Unhandled MediaTransferSenderState $displayState")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
uiEventLogger.logSenderStateChange(chipState)
|
||||||
|
|
||||||
if (chipState == ChipStateSender.FAR_FROM_RECEIVER) {
|
if (chipState == ChipStateSender.FAR_FROM_RECEIVER) {
|
||||||
removeChip(removalReason = ChipStateSender.FAR_FROM_RECEIVER::class.simpleName!!)
|
removeChip(removalReason = ChipStateSender.FAR_FROM_RECEIVER::class.simpleName!!)
|
||||||
@@ -123,7 +125,7 @@ class MediaTttChipControllerSender @Inject constructor(
|
|||||||
// Undo
|
// Undo
|
||||||
val undoView = currentChipView.requireViewById<View>(R.id.undo)
|
val undoView = currentChipView.requireViewById<View>(R.id.undo)
|
||||||
val undoClickListener = chipState.undoClickListener(
|
val undoClickListener = chipState.undoClickListener(
|
||||||
this, chipInfo.routeInfo, chipInfo.undoCallback
|
this, chipInfo.routeInfo, chipInfo.undoCallback, uiEventLogger
|
||||||
)
|
)
|
||||||
undoView.setOnClickListener(undoClickListener)
|
undoView.setOnClickListener(undoClickListener)
|
||||||
undoView.visibility = (undoClickListener != null).visibleIfTrue()
|
undoView.visibility = (undoClickListener != null).visibleIfTrue()
|
||||||
|
|||||||
@@ -0,0 +1,82 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2022 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.systemui.media.taptotransfer.sender
|
||||||
|
|
||||||
|
import android.util.Log
|
||||||
|
import com.android.internal.logging.UiEvent
|
||||||
|
import com.android.internal.logging.UiEventLogger
|
||||||
|
import com.android.systemui.dagger.SysUISingleton
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
/** A class for analytics logging for the media tap-to-transfer chip on the sender device. */
|
||||||
|
@SysUISingleton
|
||||||
|
class MediaTttSenderUiEventLogger @Inject constructor(private val logger: UiEventLogger) {
|
||||||
|
/** Logs that the sender chip has changed states. */
|
||||||
|
fun logSenderStateChange(chipState: ChipStateSender) {
|
||||||
|
logger.log(chipState.uiEvent)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logs that the undo button was clicked.
|
||||||
|
*
|
||||||
|
* @param undoUiEvent the uiEvent specific to which undo button was clicked.
|
||||||
|
*/
|
||||||
|
fun logUndoClicked(undoUiEvent: UiEventLogger.UiEventEnum) {
|
||||||
|
val isUndoEvent =
|
||||||
|
undoUiEvent == MediaTttSenderUiEvents.MEDIA_TTT_SENDER_UNDO_TRANSFER_TO_RECEIVER_CLICKED
|
||||||
|
|| undoUiEvent ==
|
||||||
|
MediaTttSenderUiEvents.MEDIA_TTT_SENDER_UNDO_TRANSFER_TO_THIS_DEVICE_CLICKED
|
||||||
|
if (!isUndoEvent) {
|
||||||
|
Log.w(
|
||||||
|
MediaTttSenderUiEventLogger::class.simpleName!!,
|
||||||
|
"Must pass an undo-specific UiEvent."
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
logger.log(undoUiEvent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
enum class MediaTttSenderUiEvents(val metricId: Int) : UiEventLogger.UiEventEnum {
|
||||||
|
@UiEvent(doc = "The undo button on the media ttt chip on the sender device was clicked " +
|
||||||
|
"to undo the transfer to the receiver device")
|
||||||
|
MEDIA_TTT_SENDER_UNDO_TRANSFER_TO_RECEIVER_CLICKED(971),
|
||||||
|
@UiEvent(doc = "The undo button on the media ttt chip on the sender device was clicked " +
|
||||||
|
"to undo the transfer back to this device")
|
||||||
|
MEDIA_TTT_SENDER_UNDO_TRANSFER_TO_THIS_DEVICE_CLICKED(972),
|
||||||
|
|
||||||
|
@UiEvent(doc = "See android.app.StatusBarManager.MEDIA_TRANSFER_SENDER_* docs")
|
||||||
|
MEDIA_TTT_SENDER_ALMOST_CLOSE_TO_START_CAST(973),
|
||||||
|
@UiEvent(doc = "See android.app.StatusBarManager.MEDIA_TRANSFER_SENDER_* docs")
|
||||||
|
MEDIA_TTT_SENDER_ALMOST_CLOSE_TO_END_CAST(974),
|
||||||
|
@UiEvent(doc = "See android.app.StatusBarManager.MEDIA_TRANSFER_SENDER_* docs")
|
||||||
|
MEDIA_TTT_SENDER_TRANSFER_TO_RECEIVER_TRIGGERED(975),
|
||||||
|
@UiEvent(doc = "See android.app.StatusBarManager.MEDIA_TRANSFER_SENDER_* docs")
|
||||||
|
MEDIA_TTT_SENDER_TRANSFER_TO_THIS_DEVICE_TRIGGERED(976),
|
||||||
|
@UiEvent(doc = "See android.app.StatusBarManager.MEDIA_TRANSFER_SENDER_* docs")
|
||||||
|
MEDIA_TTT_SENDER_TRANSFER_TO_RECEIVER_SUCCEEDED(977),
|
||||||
|
@UiEvent(doc = "See android.app.StatusBarManager.MEDIA_TRANSFER_SENDER_* docs")
|
||||||
|
MEDIA_TTT_SENDER_TRANSFER_TO_THIS_DEVICE_SUCCEEDED(978),
|
||||||
|
@UiEvent(doc = "See android.app.StatusBarManager.MEDIA_TRANSFER_SENDER_* docs")
|
||||||
|
MEDIA_TTT_SENDER_TRANSFER_TO_RECEIVER_FAILED(979),
|
||||||
|
@UiEvent(doc = "See android.app.StatusBarManager.MEDIA_TRANSFER_SENDER_* docs")
|
||||||
|
MEDIA_TTT_SENDER_TRANSFER_TO_THIS_DEVICE_FAILED(980),
|
||||||
|
@UiEvent(doc = "See android.app.StatusBarManager.MEDIA_TRANSFER_SENDER_* docs")
|
||||||
|
MEDIA_TTT_SENDER_FAR_FROM_RECEIVER(981);
|
||||||
|
|
||||||
|
override fun getId() = metricId
|
||||||
|
}
|
||||||
@@ -29,6 +29,7 @@ import android.widget.ImageView
|
|||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.test.filters.SmallTest
|
import androidx.test.filters.SmallTest
|
||||||
|
import com.android.internal.logging.testing.UiEventLoggerFake
|
||||||
import com.android.internal.statusbar.IUndoMediaTransferCallback
|
import com.android.internal.statusbar.IUndoMediaTransferCallback
|
||||||
import com.android.systemui.R
|
import com.android.systemui.R
|
||||||
import com.android.systemui.SysuiTestCase
|
import com.android.systemui.SysuiTestCase
|
||||||
@@ -74,6 +75,8 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() {
|
|||||||
private lateinit var fakeAppIconDrawable: Drawable
|
private lateinit var fakeAppIconDrawable: Drawable
|
||||||
private lateinit var fakeClock: FakeSystemClock
|
private lateinit var fakeClock: FakeSystemClock
|
||||||
private lateinit var fakeExecutor: FakeExecutor
|
private lateinit var fakeExecutor: FakeExecutor
|
||||||
|
private lateinit var uiEventLoggerFake: UiEventLoggerFake
|
||||||
|
private lateinit var senderUiEventLogger: MediaTttSenderUiEventLogger
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
@@ -89,6 +92,8 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() {
|
|||||||
|
|
||||||
fakeClock = FakeSystemClock()
|
fakeClock = FakeSystemClock()
|
||||||
fakeExecutor = FakeExecutor(fakeClock)
|
fakeExecutor = FakeExecutor(fakeClock)
|
||||||
|
uiEventLoggerFake = UiEventLoggerFake()
|
||||||
|
senderUiEventLogger = MediaTttSenderUiEventLogger(uiEventLoggerFake)
|
||||||
|
|
||||||
controllerSender = MediaTttChipControllerSender(
|
controllerSender = MediaTttChipControllerSender(
|
||||||
commandQueue,
|
commandQueue,
|
||||||
@@ -97,7 +102,8 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() {
|
|||||||
windowManager,
|
windowManager,
|
||||||
viewUtil,
|
viewUtil,
|
||||||
fakeExecutor,
|
fakeExecutor,
|
||||||
TapGestureDetector(context)
|
TapGestureDetector(context),
|
||||||
|
senderUiEventLogger
|
||||||
)
|
)
|
||||||
|
|
||||||
val callbackCaptor = ArgumentCaptor.forClass(CommandQueue.Callbacks::class.java)
|
val callbackCaptor = ArgumentCaptor.forClass(CommandQueue.Callbacks::class.java)
|
||||||
@@ -116,6 +122,9 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() {
|
|||||||
assertThat(getChipView().getChipText()).isEqualTo(
|
assertThat(getChipView().getChipText()).isEqualTo(
|
||||||
almostCloseToStartCast().state.getChipTextString(context, OTHER_DEVICE_NAME)
|
almostCloseToStartCast().state.getChipTextString(context, OTHER_DEVICE_NAME)
|
||||||
)
|
)
|
||||||
|
assertThat(uiEventLoggerFake.eventId(0)).isEqualTo(
|
||||||
|
MediaTttSenderUiEvents.MEDIA_TTT_SENDER_ALMOST_CLOSE_TO_START_CAST.id
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -129,6 +138,9 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() {
|
|||||||
assertThat(getChipView().getChipText()).isEqualTo(
|
assertThat(getChipView().getChipText()).isEqualTo(
|
||||||
almostCloseToEndCast().state.getChipTextString(context, OTHER_DEVICE_NAME)
|
almostCloseToEndCast().state.getChipTextString(context, OTHER_DEVICE_NAME)
|
||||||
)
|
)
|
||||||
|
assertThat(uiEventLoggerFake.eventId(0)).isEqualTo(
|
||||||
|
MediaTttSenderUiEvents.MEDIA_TTT_SENDER_ALMOST_CLOSE_TO_END_CAST.id
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -142,6 +154,9 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() {
|
|||||||
assertThat(getChipView().getChipText()).isEqualTo(
|
assertThat(getChipView().getChipText()).isEqualTo(
|
||||||
transferToReceiverTriggered().state.getChipTextString(context, OTHER_DEVICE_NAME)
|
transferToReceiverTriggered().state.getChipTextString(context, OTHER_DEVICE_NAME)
|
||||||
)
|
)
|
||||||
|
assertThat(uiEventLoggerFake.eventId(0)).isEqualTo(
|
||||||
|
MediaTttSenderUiEvents.MEDIA_TTT_SENDER_TRANSFER_TO_RECEIVER_TRIGGERED.id
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -155,6 +170,9 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() {
|
|||||||
assertThat(getChipView().getChipText()).isEqualTo(
|
assertThat(getChipView().getChipText()).isEqualTo(
|
||||||
transferToThisDeviceTriggered().state.getChipTextString(context, OTHER_DEVICE_NAME)
|
transferToThisDeviceTriggered().state.getChipTextString(context, OTHER_DEVICE_NAME)
|
||||||
)
|
)
|
||||||
|
assertThat(uiEventLoggerFake.eventId(0)).isEqualTo(
|
||||||
|
MediaTttSenderUiEvents.MEDIA_TTT_SENDER_TRANSFER_TO_THIS_DEVICE_TRIGGERED.id
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -168,6 +186,9 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() {
|
|||||||
assertThat(getChipView().getChipText()).isEqualTo(
|
assertThat(getChipView().getChipText()).isEqualTo(
|
||||||
transferToReceiverSucceeded().state.getChipTextString(context, OTHER_DEVICE_NAME)
|
transferToReceiverSucceeded().state.getChipTextString(context, OTHER_DEVICE_NAME)
|
||||||
)
|
)
|
||||||
|
assertThat(uiEventLoggerFake.eventId(0)).isEqualTo(
|
||||||
|
MediaTttSenderUiEvents.MEDIA_TTT_SENDER_TRANSFER_TO_RECEIVER_SUCCEEDED.id
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -181,6 +202,9 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() {
|
|||||||
assertThat(getChipView().getChipText()).isEqualTo(
|
assertThat(getChipView().getChipText()).isEqualTo(
|
||||||
transferToThisDeviceSucceeded().state.getChipTextString(context, OTHER_DEVICE_NAME)
|
transferToThisDeviceSucceeded().state.getChipTextString(context, OTHER_DEVICE_NAME)
|
||||||
)
|
)
|
||||||
|
assertThat(uiEventLoggerFake.eventId(0)).isEqualTo(
|
||||||
|
MediaTttSenderUiEvents.MEDIA_TTT_SENDER_TRANSFER_TO_THIS_DEVICE_SUCCEEDED.id
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -194,6 +218,9 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() {
|
|||||||
assertThat(getChipView().getChipText()).isEqualTo(
|
assertThat(getChipView().getChipText()).isEqualTo(
|
||||||
transferToReceiverFailed().state.getChipTextString(context, OTHER_DEVICE_NAME)
|
transferToReceiverFailed().state.getChipTextString(context, OTHER_DEVICE_NAME)
|
||||||
)
|
)
|
||||||
|
assertThat(uiEventLoggerFake.eventId(0)).isEqualTo(
|
||||||
|
MediaTttSenderUiEvents.MEDIA_TTT_SENDER_TRANSFER_TO_RECEIVER_FAILED.id
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -207,6 +234,9 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() {
|
|||||||
assertThat(getChipView().getChipText()).isEqualTo(
|
assertThat(getChipView().getChipText()).isEqualTo(
|
||||||
transferToThisDeviceFailed().state.getChipTextString(context, OTHER_DEVICE_NAME)
|
transferToThisDeviceFailed().state.getChipTextString(context, OTHER_DEVICE_NAME)
|
||||||
)
|
)
|
||||||
|
assertThat(uiEventLoggerFake.eventId(0)).isEqualTo(
|
||||||
|
MediaTttSenderUiEvents.MEDIA_TTT_SENDER_TRANSFER_TO_THIS_DEVICE_FAILED.id
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -218,6 +248,9 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() {
|
|||||||
)
|
)
|
||||||
|
|
||||||
verify(windowManager, never()).addView(any(), any())
|
verify(windowManager, never()).addView(any(), any())
|
||||||
|
assertThat(uiEventLoggerFake.eventId(0)).isEqualTo(
|
||||||
|
MediaTttSenderUiEvents.MEDIA_TTT_SENDER_FAR_FROM_RECEIVER.id
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -376,6 +409,9 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() {
|
|||||||
assertThat(getChipView().getChipText()).isEqualTo(
|
assertThat(getChipView().getChipText()).isEqualTo(
|
||||||
transferToThisDeviceTriggered().state.getChipTextString(context, OTHER_DEVICE_NAME)
|
transferToThisDeviceTriggered().state.getChipTextString(context, OTHER_DEVICE_NAME)
|
||||||
)
|
)
|
||||||
|
assertThat(uiEventLoggerFake.eventId(0)).isEqualTo(
|
||||||
|
MediaTttSenderUiEvents.MEDIA_TTT_SENDER_UNDO_TRANSFER_TO_RECEIVER_CLICKED.id
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -440,6 +476,9 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() {
|
|||||||
assertThat(getChipView().getChipText()).isEqualTo(
|
assertThat(getChipView().getChipText()).isEqualTo(
|
||||||
transferToReceiverTriggered().state.getChipTextString(context, OTHER_DEVICE_NAME)
|
transferToReceiverTriggered().state.getChipTextString(context, OTHER_DEVICE_NAME)
|
||||||
)
|
)
|
||||||
|
assertThat(uiEventLoggerFake.eventId(0)).isEqualTo(
|
||||||
|
MediaTttSenderUiEvents.MEDIA_TTT_SENDER_UNDO_TRANSFER_TO_THIS_DEVICE_CLICKED.id
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
package com.android.systemui.media.taptotransfer.sender
|
||||||
|
|
||||||
|
import androidx.test.filters.SmallTest
|
||||||
|
import com.android.internal.logging.testing.UiEventLoggerFake
|
||||||
|
import com.android.systemui.SysuiTestCase
|
||||||
|
import com.google.common.truth.Truth.assertThat
|
||||||
|
import org.junit.Before
|
||||||
|
import org.junit.Test
|
||||||
|
|
||||||
|
@SmallTest
|
||||||
|
class MediaTttSenderUiEventLoggerTest : SysuiTestCase() {
|
||||||
|
private lateinit var uiEventLoggerFake: UiEventLoggerFake
|
||||||
|
private lateinit var logger: MediaTttSenderUiEventLogger
|
||||||
|
|
||||||
|
@Before
|
||||||
|
fun setUp () {
|
||||||
|
uiEventLoggerFake = UiEventLoggerFake()
|
||||||
|
logger = MediaTttSenderUiEventLogger(uiEventLoggerFake)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun logSenderStateChange_eventAssociatedWithStateIsLogged() {
|
||||||
|
val state = ChipStateSender.ALMOST_CLOSE_TO_END_CAST
|
||||||
|
logger.logSenderStateChange(state)
|
||||||
|
|
||||||
|
assertThat(uiEventLoggerFake.numLogs()).isEqualTo(1)
|
||||||
|
assertThat(uiEventLoggerFake.eventId(0)).isEqualTo(state.uiEvent.id)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun logUndoClicked_undoEventLogged() {
|
||||||
|
val undoEvent = MediaTttSenderUiEvents.MEDIA_TTT_SENDER_UNDO_TRANSFER_TO_THIS_DEVICE_CLICKED
|
||||||
|
|
||||||
|
logger.logUndoClicked(undoEvent)
|
||||||
|
|
||||||
|
assertThat(uiEventLoggerFake.numLogs()).isEqualTo(1)
|
||||||
|
assertThat(uiEventLoggerFake.eventId(0)).isEqualTo(undoEvent.id)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun logUndoClicked_notUndoEvent_eventNotLogged() {
|
||||||
|
logger.logUndoClicked(MediaTttSenderUiEvents.MEDIA_TTT_SENDER_TRANSFER_TO_RECEIVER_FAILED)
|
||||||
|
|
||||||
|
assertThat(uiEventLoggerFake.numLogs()).isEqualTo(0)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user