Merge "Revert "Add UiEventLogger to TemporaryView"" into udc-dev

This commit is contained in:
Les Lee
2023-05-19 03:23:17 +00:00
committed by Android (Google) Code Review
20 changed files with 35 additions and 327 deletions

View File

@@ -37,7 +37,6 @@ import android.view.View.ACCESSIBILITY_LIVE_REGION_NONE
import com.android.internal.widget.CachingIconView import com.android.internal.widget.CachingIconView
import com.android.systemui.R import com.android.systemui.R
import com.android.app.animation.Interpolators import com.android.app.animation.Interpolators
import com.android.internal.logging.InstanceId
import com.android.systemui.common.shared.model.ContentDescription import com.android.systemui.common.shared.model.ContentDescription
import com.android.systemui.common.ui.binder.TintedIconViewBinder import com.android.systemui.common.ui.binder.TintedIconViewBinder
import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.SysUISingleton
@@ -50,7 +49,6 @@ import com.android.systemui.statusbar.CommandQueue
import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.temporarydisplay.TemporaryViewDisplayController import com.android.systemui.temporarydisplay.TemporaryViewDisplayController
import com.android.systemui.temporarydisplay.TemporaryViewInfo import com.android.systemui.temporarydisplay.TemporaryViewInfo
import com.android.systemui.temporarydisplay.TemporaryViewUiEventLogger
import com.android.systemui.temporarydisplay.ViewPriority import com.android.systemui.temporarydisplay.ViewPriority
import com.android.systemui.util.animation.AnimationUtil.Companion.frames import com.android.systemui.util.animation.AnimationUtil.Companion.frames
import com.android.systemui.util.concurrency.DelayableExecutor import com.android.systemui.util.concurrency.DelayableExecutor
@@ -84,7 +82,6 @@ open class MediaTttChipControllerReceiver @Inject constructor(
wakeLockBuilder: WakeLock.Builder, wakeLockBuilder: WakeLock.Builder,
systemClock: SystemClock, systemClock: SystemClock,
private val rippleController: MediaTttReceiverRippleController, private val rippleController: MediaTttReceiverRippleController,
private val temporaryViewUiEventLogger: TemporaryViewUiEventLogger,
) : TemporaryViewDisplayController<ChipReceiverInfo, MediaTttReceiverLogger>( ) : TemporaryViewDisplayController<ChipReceiverInfo, MediaTttReceiverLogger>(
context, context,
logger, logger,
@@ -97,7 +94,6 @@ open class MediaTttChipControllerReceiver @Inject constructor(
R.layout.media_ttt_chip_receiver, R.layout.media_ttt_chip_receiver,
wakeLockBuilder, wakeLockBuilder,
systemClock, systemClock,
temporaryViewUiEventLogger,
) { ) {
@SuppressLint("WrongConstant") // We're allowed to use LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS @SuppressLint("WrongConstant") // We're allowed to use LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
override val windowLayoutParams = commonWindowLayoutParams.apply { override val windowLayoutParams = commonWindowLayoutParams.apply {
@@ -129,11 +125,6 @@ open class MediaTttChipControllerReceiver @Inject constructor(
} }
} }
// A map to store instance id per route info id.
private var instanceMap: MutableMap<String, InstanceId> = mutableMapOf()
private val displayListener = Listener { id, _ -> instanceMap.remove(id) }
private fun updateMediaTapToTransferReceiverDisplay( private fun updateMediaTapToTransferReceiverDisplay(
@StatusBarManager.MediaTransferReceiverState displayState: Int, @StatusBarManager.MediaTransferReceiverState displayState: Int,
routeInfo: MediaRoute2Info, routeInfo: MediaRoute2Info,
@@ -148,18 +139,12 @@ open class MediaTttChipControllerReceiver @Inject constructor(
logger.logStateChangeError(displayState) logger.logStateChangeError(displayState)
return return
} }
uiEventLogger.logReceiverStateChange(chipState)
val instanceId: InstanceId = instanceMap[routeInfo.id]
?: temporaryViewUiEventLogger.getNewInstanceId()
uiEventLogger.logReceiverStateChange(chipState, instanceId)
if (chipState != ChipStateReceiver.CLOSE_TO_SENDER) { if (chipState != ChipStateReceiver.CLOSE_TO_SENDER) {
removeView(routeInfo.id, removalReason = chipState.name) removeView(routeInfo.id, removalReason = chipState.name)
return return
} }
// Save instance id to use for logging view events.
instanceMap[routeInfo.id] = instanceId
if (appIcon == null) { if (appIcon == null) {
displayView( displayView(
ChipReceiverInfo( ChipReceiverInfo(
@@ -167,7 +152,6 @@ open class MediaTttChipControllerReceiver @Inject constructor(
appIconDrawableOverride = null, appIconDrawableOverride = null,
appName, appName,
id = routeInfo.id, id = routeInfo.id,
instanceId = instanceId,
) )
) )
return return
@@ -182,7 +166,6 @@ open class MediaTttChipControllerReceiver @Inject constructor(
drawable, drawable,
appName, appName,
id = routeInfo.id, id = routeInfo.id,
instanceId = instanceId,
) )
) )
}, },
@@ -197,7 +180,6 @@ open class MediaTttChipControllerReceiver @Inject constructor(
if (mediaTttFlags.isMediaTttEnabled()) { if (mediaTttFlags.isMediaTttEnabled()) {
commandQueue.addCallback(commandQueueCallbacks) commandQueue.addCallback(commandQueueCallbacks)
} }
registerListener(displayListener)
} }
override fun updateView(newInfo: ChipReceiverInfo, currentView: ViewGroup) { override fun updateView(newInfo: ChipReceiverInfo, currentView: ViewGroup) {
@@ -360,5 +342,4 @@ data class ChipReceiverInfo(
override val wakeReason: String = MediaTttUtils.WAKE_REASON_RECEIVER, override val wakeReason: String = MediaTttUtils.WAKE_REASON_RECEIVER,
override val id: String, override val id: String,
override val priority: ViewPriority = ViewPriority.NORMAL, override val priority: ViewPriority = ViewPriority.NORMAL,
override val instanceId: InstanceId,
) : TemporaryViewInfo() ) : TemporaryViewInfo()

View File

@@ -16,7 +16,6 @@
package com.android.systemui.media.taptotransfer.receiver package com.android.systemui.media.taptotransfer.receiver
import com.android.internal.logging.InstanceId
import com.android.internal.logging.UiEvent import com.android.internal.logging.UiEvent
import com.android.internal.logging.UiEventLogger import com.android.internal.logging.UiEventLogger
import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.SysUISingleton
@@ -26,8 +25,8 @@ import javax.inject.Inject
@SysUISingleton @SysUISingleton
class MediaTttReceiverUiEventLogger @Inject constructor(private val logger: UiEventLogger) { class MediaTttReceiverUiEventLogger @Inject constructor(private val logger: UiEventLogger) {
/** Logs that the receiver chip has changed states. */ /** Logs that the receiver chip has changed states. */
fun logReceiverStateChange(chipState: ChipStateReceiver, instanceId: InstanceId) { fun logReceiverStateChange(chipState: ChipStateReceiver) {
logger.log(chipState.uiEvent, instanceId) logger.log(chipState.uiEvent)
} }
} }

View File

@@ -20,7 +20,6 @@ import android.app.StatusBarManager
import android.content.Context import android.content.Context
import android.media.MediaRoute2Info import android.media.MediaRoute2Info
import android.view.View import android.view.View
import com.android.internal.logging.InstanceId
import com.android.internal.logging.UiEventLogger import com.android.internal.logging.UiEventLogger
import com.android.internal.statusbar.IUndoMediaTransferCallback import com.android.internal.statusbar.IUndoMediaTransferCallback
import com.android.systemui.CoreStartable import com.android.systemui.CoreStartable
@@ -60,8 +59,8 @@ constructor(
// Since the media transfer display is similar to a heads-up notification, use the same timeout. // Since the media transfer display is similar to a heads-up notification, use the same timeout.
private val defaultTimeout = context.resources.getInteger(R.integer.heads_up_notification_decay) private val defaultTimeout = context.resources.getInteger(R.integer.heads_up_notification_decay)
// A map to store instance id and current chip state per id. // A map to store current chip state per id.
private var stateMap: MutableMap<String, Pair<InstanceId, ChipStateSender>> = mutableMapOf() private var stateMap: MutableMap<String, ChipStateSender> = mutableMapOf()
private val commandQueueCallbacks = private val commandQueueCallbacks =
object : CommandQueue.Callbacks { object : CommandQueue.Callbacks {
@@ -99,10 +98,7 @@ constructor(
return return
} }
val currentStateForId: ChipStateSender? = stateMap[routeInfo.id]?.second val currentStateForId: ChipStateSender? = stateMap[routeInfo.id]
val instanceId: InstanceId =
stateMap[routeInfo.id]?.first
?: chipbarCoordinator.tempViewUiEventLogger.getNewInstanceId()
if (!ChipStateSender.isValidStateTransition(currentStateForId, chipState)) { if (!ChipStateSender.isValidStateTransition(currentStateForId, chipState)) {
// ChipStateSender.FAR_FROM_RECEIVER is the default state when there is no state. // ChipStateSender.FAR_FROM_RECEIVER is the default state when there is no state.
logger.logInvalidStateTransitionError( logger.logInvalidStateTransitionError(
@@ -111,7 +107,7 @@ constructor(
) )
return return
} }
uiEventLogger.logSenderStateChange(chipState, instanceId) uiEventLogger.logSenderStateChange(chipState)
if (chipState == ChipStateSender.FAR_FROM_RECEIVER) { if (chipState == ChipStateSender.FAR_FROM_RECEIVER) {
// Return early if we're not displaying a chip for this ID anyway // Return early if we're not displaying a chip for this ID anyway
@@ -135,7 +131,7 @@ constructor(
removeIdFromStore(routeInfo.id, reason = removalReason) removeIdFromStore(routeInfo.id, reason = removalReason)
chipbarCoordinator.removeView(routeInfo.id, removalReason) chipbarCoordinator.removeView(routeInfo.id, removalReason)
} else { } else {
stateMap[routeInfo.id] = Pair(instanceId, chipState) stateMap[routeInfo.id] = chipState
logger.logStateMap(stateMap) logger.logStateMap(stateMap)
chipbarCoordinator.registerListener(displayListener) chipbarCoordinator.registerListener(displayListener)
chipbarCoordinator.displayView( chipbarCoordinator.displayView(
@@ -145,7 +141,6 @@ constructor(
undoCallback, undoCallback,
context, context,
logger, logger,
instanceId,
) )
) )
} }
@@ -160,7 +155,6 @@ constructor(
undoCallback: IUndoMediaTransferCallback?, undoCallback: IUndoMediaTransferCallback?,
context: Context, context: Context,
logger: MediaTttSenderLogger, logger: MediaTttSenderLogger,
instanceId: InstanceId,
): ChipbarInfo { ): ChipbarInfo {
val packageName = routeInfo.clientPackageName val packageName = routeInfo.clientPackageName
val otherDeviceName = val otherDeviceName =
@@ -196,7 +190,6 @@ constructor(
chipStateSender.endItem.uiEventOnClick, chipStateSender.endItem.uiEventOnClick,
chipStateSender.endItem.newState, chipStateSender.endItem.newState,
routeInfo, routeInfo,
instanceId,
) )
} else { } else {
null null
@@ -210,7 +203,6 @@ constructor(
timeoutMs = timeout, timeoutMs = timeout,
id = routeInfo.id, id = routeInfo.id,
priority = ViewPriority.NORMAL, priority = ViewPriority.NORMAL,
instanceId = instanceId,
) )
} }
@@ -225,11 +217,10 @@ constructor(
uiEvent: UiEventLogger.UiEventEnum, uiEvent: UiEventLogger.UiEventEnum,
@StatusBarManager.MediaTransferSenderState newState: Int, @StatusBarManager.MediaTransferSenderState newState: Int,
routeInfo: MediaRoute2Info, routeInfo: MediaRoute2Info,
instanceId: InstanceId,
): ChipbarEndItem.Button { ): ChipbarEndItem.Button {
val onClickListener = val onClickListener =
View.OnClickListener { View.OnClickListener {
uiEventLogger.logUndoClicked(uiEvent, instanceId) uiEventLogger.logUndoClicked(uiEvent)
undoCallback.onUndoTriggered() undoCallback.onUndoTriggered()
// The external service should eventually send us a new TransferTriggered state, but // The external service should eventually send us a new TransferTriggered state, but

View File

@@ -17,7 +17,6 @@
package com.android.systemui.media.taptotransfer.sender package com.android.systemui.media.taptotransfer.sender
import android.app.StatusBarManager import android.app.StatusBarManager
import com.android.internal.logging.InstanceId
import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.log.LogBuffer import com.android.systemui.log.LogBuffer
import com.android.systemui.log.LogLevel import com.android.systemui.log.LogLevel
@@ -87,7 +86,7 @@ constructor(
} }
/** Logs the current contents of the state map. */ /** Logs the current contents of the state map. */
fun logStateMap(map: Map<String, Pair<InstanceId, ChipStateSender>>) { fun logStateMap(map: Map<String, ChipStateSender>) {
buffer.log( buffer.log(
TAG, TAG,
LogLevel.DEBUG, LogLevel.DEBUG,

View File

@@ -17,7 +17,6 @@
package com.android.systemui.media.taptotransfer.sender package com.android.systemui.media.taptotransfer.sender
import android.util.Log import android.util.Log
import com.android.internal.logging.InstanceId
import com.android.internal.logging.UiEvent import com.android.internal.logging.UiEvent
import com.android.internal.logging.UiEventLogger import com.android.internal.logging.UiEventLogger
import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.SysUISingleton
@@ -27,8 +26,8 @@ import javax.inject.Inject
@SysUISingleton @SysUISingleton
class MediaTttSenderUiEventLogger @Inject constructor(private val logger: UiEventLogger) { class MediaTttSenderUiEventLogger @Inject constructor(private val logger: UiEventLogger) {
/** Logs that the sender chip has changed states. */ /** Logs that the sender chip has changed states. */
fun logSenderStateChange(chipState: ChipStateSender, instanceId: InstanceId) { fun logSenderStateChange(chipState: ChipStateSender) {
logger.log(chipState.uiEvent, instanceId) logger.log(chipState.uiEvent)
} }
/** /**
@@ -36,11 +35,10 @@ class MediaTttSenderUiEventLogger @Inject constructor(private val logger: UiEven
* *
* @param undoUiEvent the uiEvent specific to which undo button was clicked. * @param undoUiEvent the uiEvent specific to which undo button was clicked.
*/ */
fun logUndoClicked(undoUiEvent: UiEventLogger.UiEventEnum, instanceId: InstanceId) { fun logUndoClicked(undoUiEvent: UiEventLogger.UiEventEnum) {
val isUndoEvent = val isUndoEvent =
undoUiEvent == undoUiEvent == MediaTttSenderUiEvents.MEDIA_TTT_SENDER_UNDO_TRANSFER_TO_RECEIVER_CLICKED
MediaTttSenderUiEvents.MEDIA_TTT_SENDER_UNDO_TRANSFER_TO_RECEIVER_CLICKED || || undoUiEvent ==
undoUiEvent ==
MediaTttSenderUiEvents.MEDIA_TTT_SENDER_UNDO_TRANSFER_TO_THIS_DEVICE_CLICKED MediaTttSenderUiEvents.MEDIA_TTT_SENDER_UNDO_TRANSFER_TO_THIS_DEVICE_CLICKED
if (!isUndoEvent) { if (!isUndoEvent) {
Log.w( Log.w(
@@ -49,7 +47,7 @@ class MediaTttSenderUiEventLogger @Inject constructor(private val logger: UiEven
) )
return return
} }
logger.log(undoUiEvent, instanceId) logger.log(undoUiEvent)
} }
} }

View File

@@ -79,7 +79,6 @@ abstract class TemporaryViewDisplayController<T : TemporaryViewInfo, U : Tempora
@LayoutRes private val viewLayoutRes: Int, @LayoutRes private val viewLayoutRes: Int,
private val wakeLockBuilder: WakeLock.Builder, private val wakeLockBuilder: WakeLock.Builder,
private val systemClock: SystemClock, private val systemClock: SystemClock,
internal val tempViewUiEventLogger: TemporaryViewUiEventLogger,
) : CoreStartable, Dumpable { ) : CoreStartable, Dumpable {
/** /**
* Window layout params that will be used as a starting point for the [windowLayoutParams] of * Window layout params that will be used as a starting point for the [windowLayoutParams] of
@@ -208,7 +207,6 @@ abstract class TemporaryViewDisplayController<T : TemporaryViewInfo, U : Tempora
private fun showNewView(newDisplayInfo: DisplayInfo, timeout: Int) { private fun showNewView(newDisplayInfo: DisplayInfo, timeout: Int) {
logger.logViewAddition(newDisplayInfo.info) logger.logViewAddition(newDisplayInfo.info)
tempViewUiEventLogger.logViewAdded(newDisplayInfo.info.instanceId)
createAndAcquireWakeLock(newDisplayInfo) createAndAcquireWakeLock(newDisplayInfo)
updateTimeout(newDisplayInfo, timeout) updateTimeout(newDisplayInfo, timeout)
inflateAndUpdateView(newDisplayInfo) inflateAndUpdateView(newDisplayInfo)

View File

@@ -16,8 +16,6 @@
package com.android.systemui.temporarydisplay package com.android.systemui.temporarydisplay
import com.android.internal.logging.InstanceId
/** /**
* A superclass view state used with [TemporaryViewDisplayController]. * A superclass view state used with [TemporaryViewDisplayController].
*/ */
@@ -47,9 +45,6 @@ abstract class TemporaryViewInfo {
/** The priority for this view. */ /** The priority for this view. */
abstract val priority: ViewPriority abstract val priority: ViewPriority
/** Instance ID for logging purposes */
abstract val instanceId: InstanceId?
} }
const val DEFAULT_TIMEOUT_MILLIS = 10000 const val DEFAULT_TIMEOUT_MILLIS = 10000

View File

@@ -1,56 +0,0 @@
/*
* Copyright (C) 2023 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.temporarydisplay
import com.android.internal.logging.InstanceId
import com.android.internal.logging.InstanceIdSequence
import com.android.internal.logging.UiEvent
import com.android.internal.logging.UiEventLogger
import com.android.systemui.dagger.SysUISingleton
import javax.inject.Inject
private const val INSTANCE_ID_MAX = 1 shl 20
/** A helper class to log events related to the temporary view */
@SysUISingleton
class TemporaryViewUiEventLogger @Inject constructor(val logger: UiEventLogger) {
private val instanceIdSequence = InstanceIdSequence(INSTANCE_ID_MAX)
/** Get a new instance ID for a new media control */
fun getNewInstanceId(): InstanceId {
return instanceIdSequence.newInstanceId()
}
/** Logs that view is added */
fun logViewAdded(instanceId: InstanceId?) {
logger.log(TemporaryViewUiEvent.TEMPORARY_VIEW_ADDED, instanceId)
}
/** Logs that view is manually dismissed by user */
fun logViewManuallyDismissed(instanceId: InstanceId?) {
logger.log(TemporaryViewUiEvent.TEMPORARY_VIEW_MANUALLY_DISMISSED, instanceId)
}
}
enum class TemporaryViewUiEvent(val metricId: Int) : UiEventLogger.UiEventEnum {
@UiEvent(doc = "The temporary view was added to window manager") TEMPORARY_VIEW_ADDED(1389),
@UiEvent(doc = "The temporary view was manually dismissed")
TEMPORARY_VIEW_MANUALLY_DISMISSED(1390);
override fun getId() = metricId
}

View File

@@ -52,7 +52,6 @@ import com.android.systemui.plugins.FalsingManager
import com.android.systemui.statusbar.VibratorHelper import com.android.systemui.statusbar.VibratorHelper
import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.temporarydisplay.TemporaryViewDisplayController import com.android.systemui.temporarydisplay.TemporaryViewDisplayController
import com.android.systemui.temporarydisplay.TemporaryViewUiEventLogger
import com.android.systemui.util.concurrency.DelayableExecutor import com.android.systemui.util.concurrency.DelayableExecutor
import com.android.systemui.util.time.SystemClock import com.android.systemui.util.time.SystemClock
import com.android.systemui.util.view.ViewUtil import com.android.systemui.util.view.ViewUtil
@@ -93,7 +92,6 @@ constructor(
private val vibratorHelper: VibratorHelper, private val vibratorHelper: VibratorHelper,
wakeLockBuilder: WakeLock.Builder, wakeLockBuilder: WakeLock.Builder,
systemClock: SystemClock, systemClock: SystemClock,
tempViewUiEventLogger: TemporaryViewUiEventLogger,
) : ) :
TemporaryViewDisplayController<ChipbarInfo, ChipbarLogger>( TemporaryViewDisplayController<ChipbarInfo, ChipbarLogger>(
context, context,
@@ -107,7 +105,6 @@ constructor(
R.layout.chipbar, R.layout.chipbar,
wakeLockBuilder, wakeLockBuilder,
systemClock, systemClock,
tempViewUiEventLogger,
) { ) {
private lateinit var parent: ChipbarRootView private lateinit var parent: ChipbarRootView
@@ -318,7 +315,6 @@ constructor(
) )
return return
} }
tempViewUiEventLogger.logViewManuallyDismissed(currentDisplayInfo.info.instanceId)
removeView(currentDisplayInfo.info.id, SWIPE_UP_GESTURE_REASON) removeView(currentDisplayInfo.info.id, SWIPE_UP_GESTURE_REASON)
updateGestureListening() updateGestureListening()
} }

View File

@@ -19,7 +19,6 @@ package com.android.systemui.temporarydisplay.chipbar
import android.os.VibrationEffect import android.os.VibrationEffect
import android.view.View import android.view.View
import androidx.annotation.AttrRes import androidx.annotation.AttrRes
import com.android.internal.logging.InstanceId
import com.android.systemui.R import com.android.systemui.R
import com.android.systemui.common.shared.model.Text import com.android.systemui.common.shared.model.Text
import com.android.systemui.common.shared.model.TintedIcon import com.android.systemui.common.shared.model.TintedIcon
@@ -48,7 +47,6 @@ data class ChipbarInfo(
override val timeoutMs: Int, override val timeoutMs: Int,
override val id: String, override val id: String,
override val priority: ViewPriority, override val priority: ViewPriority,
override val instanceId: InstanceId?,
) : TemporaryViewInfo() { ) : TemporaryViewInfo() {
companion object { companion object {
// LINT.IfChange // LINT.IfChange

View File

@@ -26,7 +26,6 @@ import com.android.systemui.dump.DumpManager
import com.android.systemui.media.taptotransfer.MediaTttFlags import com.android.systemui.media.taptotransfer.MediaTttFlags
import com.android.systemui.statusbar.CommandQueue import com.android.systemui.statusbar.CommandQueue
import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.temporarydisplay.TemporaryViewUiEventLogger
import com.android.systemui.util.concurrency.DelayableExecutor import com.android.systemui.util.concurrency.DelayableExecutor
import com.android.systemui.util.time.SystemClock import com.android.systemui.util.time.SystemClock
import com.android.systemui.util.view.ViewUtil import com.android.systemui.util.view.ViewUtil
@@ -49,7 +48,6 @@ class FakeMediaTttChipControllerReceiver(
wakeLockBuilder: WakeLock.Builder, wakeLockBuilder: WakeLock.Builder,
systemClock: SystemClock, systemClock: SystemClock,
rippleController: MediaTttReceiverRippleController, rippleController: MediaTttReceiverRippleController,
temporaryViewUiEventLogger: TemporaryViewUiEventLogger,
) : ) :
MediaTttChipControllerReceiver( MediaTttChipControllerReceiver(
commandQueue, commandQueue,
@@ -68,7 +66,6 @@ class FakeMediaTttChipControllerReceiver(
wakeLockBuilder, wakeLockBuilder,
systemClock, systemClock,
rippleController, rippleController,
temporaryViewUiEventLogger,
) { ) {
override fun animateViewOut(view: ViewGroup, removalReason: String?, onAnimationEnd: Runnable) { override fun animateViewOut(view: ViewGroup, removalReason: String?, onAnimationEnd: Runnable) {
// Just bypass the animation in tests // Just bypass the animation in tests

View File

@@ -31,7 +31,6 @@ import android.view.WindowManager
import android.view.accessibility.AccessibilityManager import android.view.accessibility.AccessibilityManager
import android.widget.ImageView import android.widget.ImageView
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.internal.logging.InstanceId
import com.android.internal.logging.testing.UiEventLoggerFake import com.android.internal.logging.testing.UiEventLoggerFake
import com.android.systemui.R import com.android.systemui.R
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
@@ -39,7 +38,6 @@ import com.android.systemui.dump.DumpManager
import com.android.systemui.media.taptotransfer.MediaTttFlags import com.android.systemui.media.taptotransfer.MediaTttFlags
import com.android.systemui.statusbar.CommandQueue import com.android.systemui.statusbar.CommandQueue
import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.temporarydisplay.TemporaryViewUiEventLogger
import com.android.systemui.util.concurrency.FakeExecutor import com.android.systemui.util.concurrency.FakeExecutor
import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.eq import com.android.systemui.util.mockito.eq
@@ -92,7 +90,6 @@ class MediaTttChipControllerReceiverTest : SysuiTestCase() {
private lateinit var fakeAppIconDrawable: Drawable private lateinit var fakeAppIconDrawable: Drawable
private lateinit var uiEventLoggerFake: UiEventLoggerFake private lateinit var uiEventLoggerFake: UiEventLoggerFake
private lateinit var receiverUiEventLogger: MediaTttReceiverUiEventLogger private lateinit var receiverUiEventLogger: MediaTttReceiverUiEventLogger
private lateinit var temporaryViewUiEventLogger: TemporaryViewUiEventLogger
private lateinit var fakeClock: FakeSystemClock private lateinit var fakeClock: FakeSystemClock
private lateinit var fakeExecutor: FakeExecutor private lateinit var fakeExecutor: FakeExecutor
private lateinit var fakeWakeLockBuilder: WakeLockFake.Builder private lateinit var fakeWakeLockBuilder: WakeLockFake.Builder
@@ -117,7 +114,6 @@ class MediaTttChipControllerReceiverTest : SysuiTestCase() {
uiEventLoggerFake = UiEventLoggerFake() uiEventLoggerFake = UiEventLoggerFake()
receiverUiEventLogger = MediaTttReceiverUiEventLogger(uiEventLoggerFake) receiverUiEventLogger = MediaTttReceiverUiEventLogger(uiEventLoggerFake)
temporaryViewUiEventLogger = TemporaryViewUiEventLogger(uiEventLoggerFake)
fakeWakeLock = WakeLockFake() fakeWakeLock = WakeLockFake()
fakeWakeLockBuilder = WakeLockFake.Builder(context) fakeWakeLockBuilder = WakeLockFake.Builder(context)
@@ -140,7 +136,6 @@ class MediaTttChipControllerReceiverTest : SysuiTestCase() {
fakeWakeLockBuilder, fakeWakeLockBuilder,
fakeClock, fakeClock,
rippleController, rippleController,
temporaryViewUiEventLogger,
) )
controllerReceiver.start() controllerReceiver.start()
@@ -171,7 +166,6 @@ class MediaTttChipControllerReceiverTest : SysuiTestCase() {
fakeWakeLockBuilder, fakeWakeLockBuilder,
fakeClock, fakeClock,
rippleController, rippleController,
temporaryViewUiEventLogger,
) )
controllerReceiver.start() controllerReceiver.start()
@@ -192,7 +186,6 @@ class MediaTttChipControllerReceiverTest : SysuiTestCase() {
assertThat(uiEventLoggerFake.eventId(0)).isEqualTo( assertThat(uiEventLoggerFake.eventId(0)).isEqualTo(
MediaTttReceiverUiEvents.MEDIA_TTT_RECEIVER_CLOSE_TO_SENDER.id MediaTttReceiverUiEvents.MEDIA_TTT_RECEIVER_CLOSE_TO_SENDER.id
) )
assertThat(uiEventLoggerFake.logs[0].instanceId).isNotNull()
} }
@Test @Test
@@ -208,7 +201,6 @@ class MediaTttChipControllerReceiverTest : SysuiTestCase() {
assertThat(uiEventLoggerFake.eventId(0)).isEqualTo( assertThat(uiEventLoggerFake.eventId(0)).isEqualTo(
MediaTttReceiverUiEvents.MEDIA_TTT_RECEIVER_FAR_FROM_SENDER.id MediaTttReceiverUiEvents.MEDIA_TTT_RECEIVER_FAR_FROM_SENDER.id
) )
assertThat(uiEventLoggerFake.logs[0].instanceId).isNotNull()
} }
@Test @Test
@@ -224,7 +216,6 @@ class MediaTttChipControllerReceiverTest : SysuiTestCase() {
assertThat(uiEventLoggerFake.eventId(0)).isEqualTo( assertThat(uiEventLoggerFake.eventId(0)).isEqualTo(
MediaTttReceiverUiEvents.MEDIA_TTT_RECEIVER_TRANSFER_TO_RECEIVER_SUCCEEDED.id MediaTttReceiverUiEvents.MEDIA_TTT_RECEIVER_TRANSFER_TO_RECEIVER_SUCCEEDED.id
) )
assertThat(uiEventLoggerFake.logs[0].instanceId).isNotNull()
} }
@Test @Test
@@ -240,7 +231,6 @@ class MediaTttChipControllerReceiverTest : SysuiTestCase() {
assertThat(uiEventLoggerFake.eventId(0)).isEqualTo( assertThat(uiEventLoggerFake.eventId(0)).isEqualTo(
MediaTttReceiverUiEvents.MEDIA_TTT_RECEIVER_TRANSFER_TO_RECEIVER_FAILED.id MediaTttReceiverUiEvents.MEDIA_TTT_RECEIVER_TRANSFER_TO_RECEIVER_FAILED.id
) )
assertThat(uiEventLoggerFake.logs[0].instanceId).isNotNull()
} }
@Test @Test
@@ -285,25 +275,6 @@ class MediaTttChipControllerReceiverTest : SysuiTestCase() {
verify(windowManager).removeView(viewCaptor.value) verify(windowManager).removeView(viewCaptor.value)
} }
@Test
fun commandQueueCallback_closeThenSucceeded_sameViewInstanceId() {
commandQueueCallback.updateMediaTapToTransferReceiverDisplay(
StatusBarManager.MEDIA_TRANSFER_RECEIVER_STATE_CLOSE_TO_SENDER,
routeInfo,
null,
null
)
commandQueueCallback.updateMediaTapToTransferReceiverDisplay(
StatusBarManager.MEDIA_TRANSFER_RECEIVER_STATE_TRANSFER_TO_RECEIVER_SUCCEEDED,
routeInfo,
null,
null
)
assertThat(uiEventLoggerFake[0].instanceId).isEqualTo(uiEventLoggerFake[1].instanceId)
}
@Test @Test
fun commandQueueCallback_closeThenFailed_chipShownThenHidden() { fun commandQueueCallback_closeThenFailed_chipShownThenHidden() {
commandQueueCallback.updateMediaTapToTransferReceiverDisplay( commandQueueCallback.updateMediaTapToTransferReceiverDisplay(
@@ -378,7 +349,6 @@ class MediaTttChipControllerReceiverTest : SysuiTestCase() {
appIconDrawableOverride = null, appIconDrawableOverride = null,
appNameOverride = null, appNameOverride = null,
id = "id", id = "id",
instanceId = InstanceId.fakeInstanceId(0),
) )
) )
@@ -401,7 +371,6 @@ class MediaTttChipControllerReceiverTest : SysuiTestCase() {
drawableOverride, drawableOverride,
appNameOverride = null, appNameOverride = null,
id = "id", id = "id",
instanceId = InstanceId.fakeInstanceId(0),
) )
) )
@@ -419,7 +388,6 @@ class MediaTttChipControllerReceiverTest : SysuiTestCase() {
appIconDrawableOverride = null, appIconDrawableOverride = null,
appNameOverride, appNameOverride,
id = "id", id = "id",
instanceId = InstanceId.fakeInstanceId(0),
) )
) )
@@ -474,13 +442,7 @@ class MediaTttChipControllerReceiverTest : SysuiTestCase() {
.addFeature("feature") .addFeature("feature")
.setClientPackageName(packageName) .setClientPackageName(packageName)
.build() .build()
return ChipReceiverInfo( return ChipReceiverInfo(routeInfo, null, null, id = "id")
routeInfo,
null,
null,
id = "id",
instanceId = InstanceId.fakeInstanceId(0),
)
} }
private fun ViewGroup.getAppIconView() = this.requireViewById<ImageView>(R.id.app_icon) private fun ViewGroup.getAppIconView() = this.requireViewById<ImageView>(R.id.app_icon)

View File

@@ -1,7 +1,6 @@
package com.android.systemui.media.taptotransfer.receiver package com.android.systemui.media.taptotransfer.receiver
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.internal.logging.InstanceId
import com.android.internal.logging.testing.UiEventLoggerFake import com.android.internal.logging.testing.UiEventLoggerFake
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
@@ -22,12 +21,10 @@ class MediaTttReceiverUiEventLoggerTest : SysuiTestCase() {
@Test @Test
fun logReceiverStateChange_eventAssociatedWithStateIsLogged() { fun logReceiverStateChange_eventAssociatedWithStateIsLogged() {
val state = ChipStateReceiver.CLOSE_TO_SENDER val state = ChipStateReceiver.CLOSE_TO_SENDER
val instanceId = InstanceId.fakeInstanceId(0)
logger.logReceiverStateChange(state, instanceId) logger.logReceiverStateChange(state)
assertThat(uiEventLoggerFake.numLogs()).isEqualTo(1) assertThat(uiEventLoggerFake.numLogs()).isEqualTo(1)
assertThat(uiEventLoggerFake.eventId(0)).isEqualTo(state.uiEvent.id) assertThat(uiEventLoggerFake.eventId(0)).isEqualTo(state.uiEvent.id)
assertThat(uiEventLoggerFake.logs[0].instanceId).isEqualTo(instanceId)
} }
} }

View File

@@ -46,7 +46,6 @@ import com.android.systemui.statusbar.CommandQueue
import com.android.systemui.statusbar.VibratorHelper import com.android.systemui.statusbar.VibratorHelper
import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.temporarydisplay.TemporaryViewDisplayController import com.android.systemui.temporarydisplay.TemporaryViewDisplayController
import com.android.systemui.temporarydisplay.TemporaryViewUiEventLogger
import com.android.systemui.temporarydisplay.chipbar.ChipbarAnimator import com.android.systemui.temporarydisplay.chipbar.ChipbarAnimator
import com.android.systemui.temporarydisplay.chipbar.ChipbarCoordinator import com.android.systemui.temporarydisplay.chipbar.ChipbarCoordinator
import com.android.systemui.temporarydisplay.chipbar.ChipbarLogger import com.android.systemui.temporarydisplay.chipbar.ChipbarLogger
@@ -109,7 +108,6 @@ class MediaTttSenderCoordinatorTest : SysuiTestCase() {
private lateinit var fakeExecutor: FakeExecutor private lateinit var fakeExecutor: FakeExecutor
private lateinit var uiEventLoggerFake: UiEventLoggerFake private lateinit var uiEventLoggerFake: UiEventLoggerFake
private lateinit var uiEventLogger: MediaTttSenderUiEventLogger private lateinit var uiEventLogger: MediaTttSenderUiEventLogger
private lateinit var tempViewUiEventLogger: TemporaryViewUiEventLogger
private val defaultTimeout = context.resources.getInteger(R.integer.heads_up_notification_decay) private val defaultTimeout = context.resources.getInteger(R.integer.heads_up_notification_decay)
@Before @Before
@@ -139,7 +137,6 @@ class MediaTttSenderCoordinatorTest : SysuiTestCase() {
uiEventLoggerFake = UiEventLoggerFake() uiEventLoggerFake = UiEventLoggerFake()
uiEventLogger = MediaTttSenderUiEventLogger(uiEventLoggerFake) uiEventLogger = MediaTttSenderUiEventLogger(uiEventLoggerFake)
tempViewUiEventLogger = TemporaryViewUiEventLogger(uiEventLoggerFake)
chipbarCoordinator = chipbarCoordinator =
ChipbarCoordinator( ChipbarCoordinator(
@@ -159,7 +156,6 @@ class MediaTttSenderCoordinatorTest : SysuiTestCase() {
vibratorHelper, vibratorHelper,
fakeWakeLockBuilder, fakeWakeLockBuilder,
fakeClock, fakeClock,
tempViewUiEventLogger,
) )
chipbarCoordinator.start() chipbarCoordinator.start()
@@ -356,8 +352,8 @@ class MediaTttSenderCoordinatorTest : SysuiTestCase() {
.isEqualTo(ChipStateSender.TRANSFER_TO_RECEIVER_SUCCEEDED.getExpectedStateText()) .isEqualTo(ChipStateSender.TRANSFER_TO_RECEIVER_SUCCEEDED.getExpectedStateText())
assertThat(chipbarView.getLoadingIcon().visibility).isEqualTo(View.GONE) assertThat(chipbarView.getLoadingIcon().visibility).isEqualTo(View.GONE)
assertThat(chipbarView.getUndoButton().visibility).isEqualTo(View.GONE) assertThat(chipbarView.getUndoButton().visibility).isEqualTo(View.GONE)
// Event index 2 since initially displaying the triggered chip would also log two events. // Event index 1 since initially displaying the triggered chip would also log an event.
assertThat(uiEventLoggerFake.eventId(2)) assertThat(uiEventLoggerFake.eventId(1))
.isEqualTo(MediaTttSenderUiEvents.MEDIA_TTT_SENDER_TRANSFER_TO_RECEIVER_SUCCEEDED.id) .isEqualTo(MediaTttSenderUiEvents.MEDIA_TTT_SENDER_TRANSFER_TO_RECEIVER_SUCCEEDED.id)
verify(vibratorHelper, never()) verify(vibratorHelper, never())
.vibrate( .vibrate(
@@ -369,24 +365,6 @@ class MediaTttSenderCoordinatorTest : SysuiTestCase() {
) )
} }
@Test
fun commandQueueCallback_transferToReceiverSucceeded_sameViewInstanceId() {
displayReceiverTriggered()
reset(vibratorHelper)
commandQueueCallback.updateMediaTapToTransferSenderDisplay(
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_TRANSFER_TO_RECEIVER_SUCCEEDED,
routeInfo,
null
)
// Event index 2 since initially displaying the triggered chip would also log two events.
assertThat(uiEventLoggerFake.eventId(2))
.isEqualTo(MediaTttSenderUiEvents.MEDIA_TTT_SENDER_TRANSFER_TO_RECEIVER_SUCCEEDED.id)
verify(vibratorHelper, never()).vibrate(any<VibrationEffect>())
assertThat(uiEventLoggerFake.logs[0].instanceId)
.isEqualTo(uiEventLoggerFake.logs[2].instanceId)
}
@Test @Test
fun transferToReceiverSucceeded_nullUndoCallback_noUndo() { fun transferToReceiverSucceeded_nullUndoCallback_noUndo() {
displayReceiverTriggered() displayReceiverTriggered()
@@ -432,9 +410,9 @@ class MediaTttSenderCoordinatorTest : SysuiTestCase() {
getChipbarView().getUndoButton().performClick() getChipbarView().getUndoButton().performClick()
// Event index 3 since initially displaying the triggered and succeeded chip would also log // Event index 2 since initially displaying the triggered and succeeded chip would also log
// events. // events.
assertThat(uiEventLoggerFake.eventId(3)) assertThat(uiEventLoggerFake.eventId(2))
.isEqualTo(MediaTttSenderUiEvents.MEDIA_TTT_SENDER_UNDO_TRANSFER_TO_RECEIVER_CLICKED.id) .isEqualTo(MediaTttSenderUiEvents.MEDIA_TTT_SENDER_UNDO_TRANSFER_TO_RECEIVER_CLICKED.id)
assertThat(undoCallbackCalled).isTrue() assertThat(undoCallbackCalled).isTrue()
assertThat(getChipbarView().getChipText()) assertThat(getChipbarView().getChipText())
@@ -458,8 +436,8 @@ class MediaTttSenderCoordinatorTest : SysuiTestCase() {
.isEqualTo(ChipStateSender.TRANSFER_TO_THIS_DEVICE_SUCCEEDED.getExpectedStateText()) .isEqualTo(ChipStateSender.TRANSFER_TO_THIS_DEVICE_SUCCEEDED.getExpectedStateText())
assertThat(chipbarView.getLoadingIcon().visibility).isEqualTo(View.GONE) assertThat(chipbarView.getLoadingIcon().visibility).isEqualTo(View.GONE)
assertThat(chipbarView.getUndoButton().visibility).isEqualTo(View.GONE) assertThat(chipbarView.getUndoButton().visibility).isEqualTo(View.GONE)
// Event index 2 since initially displaying the triggered chip would also log two events. // Event index 1 since initially displaying the triggered chip would also log an event.
assertThat(uiEventLoggerFake.eventId(2)) assertThat(uiEventLoggerFake.eventId(1))
.isEqualTo(MediaTttSenderUiEvents.MEDIA_TTT_SENDER_TRANSFER_TO_THIS_DEVICE_SUCCEEDED.id) .isEqualTo(MediaTttSenderUiEvents.MEDIA_TTT_SENDER_TRANSFER_TO_THIS_DEVICE_SUCCEEDED.id)
verify(vibratorHelper, never()) verify(vibratorHelper, never())
.vibrate( .vibrate(
@@ -516,9 +494,9 @@ class MediaTttSenderCoordinatorTest : SysuiTestCase() {
getChipbarView().getUndoButton().performClick() getChipbarView().getUndoButton().performClick()
// Event index 3 since initially displaying the triggered and succeeded chip would also log // Event index 2 since initially displaying the triggered and succeeded chip would also log
// events. // events.
assertThat(uiEventLoggerFake.eventId(3)) assertThat(uiEventLoggerFake.eventId(2))
.isEqualTo( .isEqualTo(
MediaTttSenderUiEvents.MEDIA_TTT_SENDER_UNDO_TRANSFER_TO_THIS_DEVICE_CLICKED.id MediaTttSenderUiEvents.MEDIA_TTT_SENDER_UNDO_TRANSFER_TO_THIS_DEVICE_CLICKED.id
) )
@@ -545,8 +523,8 @@ class MediaTttSenderCoordinatorTest : SysuiTestCase() {
assertThat(chipbarView.getLoadingIcon().visibility).isEqualTo(View.GONE) assertThat(chipbarView.getLoadingIcon().visibility).isEqualTo(View.GONE)
assertThat(chipbarView.getUndoButton().visibility).isEqualTo(View.GONE) assertThat(chipbarView.getUndoButton().visibility).isEqualTo(View.GONE)
assertThat(chipbarView.getErrorIcon().visibility).isEqualTo(View.VISIBLE) assertThat(chipbarView.getErrorIcon().visibility).isEqualTo(View.VISIBLE)
// Event index 2 since initially displaying the triggered chip would also log two events. // Event index 1 since initially displaying the triggered chip would also log an event.
assertThat(uiEventLoggerFake.eventId(2)) assertThat(uiEventLoggerFake.eventId(1))
.isEqualTo(MediaTttSenderUiEvents.MEDIA_TTT_SENDER_TRANSFER_TO_RECEIVER_FAILED.id) .isEqualTo(MediaTttSenderUiEvents.MEDIA_TTT_SENDER_TRANSFER_TO_RECEIVER_FAILED.id)
verify(vibratorHelper) verify(vibratorHelper)
.vibrate( .vibrate(
@@ -581,7 +559,7 @@ class MediaTttSenderCoordinatorTest : SysuiTestCase() {
assertThat(chipbarView.getUndoButton().visibility).isEqualTo(View.GONE) assertThat(chipbarView.getUndoButton().visibility).isEqualTo(View.GONE)
assertThat(chipbarView.getErrorIcon().visibility).isEqualTo(View.VISIBLE) assertThat(chipbarView.getErrorIcon().visibility).isEqualTo(View.VISIBLE)
// Event index 1 since initially displaying the triggered chip would also log an event. // Event index 1 since initially displaying the triggered chip would also log an event.
assertThat(uiEventLoggerFake.eventId(2)) assertThat(uiEventLoggerFake.eventId(1))
.isEqualTo(MediaTttSenderUiEvents.MEDIA_TTT_SENDER_TRANSFER_TO_THIS_DEVICE_FAILED.id) .isEqualTo(MediaTttSenderUiEvents.MEDIA_TTT_SENDER_TRANSFER_TO_THIS_DEVICE_FAILED.id)
verify(vibratorHelper) verify(vibratorHelper)
.vibrate( .vibrate(
@@ -1104,7 +1082,6 @@ class MediaTttSenderCoordinatorTest : SysuiTestCase() {
@Test @Test
fun newState_viewListenerRegistered() { fun newState_viewListenerRegistered() {
val mockChipbarCoordinator = mock<ChipbarCoordinator>() val mockChipbarCoordinator = mock<ChipbarCoordinator>()
whenever(mockChipbarCoordinator.tempViewUiEventLogger).thenReturn(tempViewUiEventLogger)
underTest = underTest =
MediaTttSenderCoordinator( MediaTttSenderCoordinator(
mockChipbarCoordinator, mockChipbarCoordinator,
@@ -1132,7 +1109,6 @@ class MediaTttSenderCoordinatorTest : SysuiTestCase() {
@Test @Test
fun onInfoPermanentlyRemoved_viewListenerUnregistered() { fun onInfoPermanentlyRemoved_viewListenerUnregistered() {
val mockChipbarCoordinator = mock<ChipbarCoordinator>() val mockChipbarCoordinator = mock<ChipbarCoordinator>()
whenever(mockChipbarCoordinator.tempViewUiEventLogger).thenReturn(tempViewUiEventLogger)
underTest = underTest =
MediaTttSenderCoordinator( MediaTttSenderCoordinator(
mockChipbarCoordinator, mockChipbarCoordinator,
@@ -1166,7 +1142,6 @@ class MediaTttSenderCoordinatorTest : SysuiTestCase() {
@Test @Test
fun onInfoPermanentlyRemoved_wrongId_viewListenerNotUnregistered() { fun onInfoPermanentlyRemoved_wrongId_viewListenerNotUnregistered() {
val mockChipbarCoordinator = mock<ChipbarCoordinator>() val mockChipbarCoordinator = mock<ChipbarCoordinator>()
whenever(mockChipbarCoordinator.tempViewUiEventLogger).thenReturn(tempViewUiEventLogger)
underTest = underTest =
MediaTttSenderCoordinator( MediaTttSenderCoordinator(
mockChipbarCoordinator, mockChipbarCoordinator,
@@ -1199,7 +1174,6 @@ class MediaTttSenderCoordinatorTest : SysuiTestCase() {
@Test @Test
fun farFromReceiverState_viewListenerUnregistered() { fun farFromReceiverState_viewListenerUnregistered() {
val mockChipbarCoordinator = mock<ChipbarCoordinator>() val mockChipbarCoordinator = mock<ChipbarCoordinator>()
whenever(mockChipbarCoordinator.tempViewUiEventLogger).thenReturn(tempViewUiEventLogger)
underTest = underTest =
MediaTttSenderCoordinator( MediaTttSenderCoordinator(
mockChipbarCoordinator, mockChipbarCoordinator,
@@ -1236,7 +1210,6 @@ class MediaTttSenderCoordinatorTest : SysuiTestCase() {
@Test @Test
fun statesWithDifferentIds_onInfoPermanentlyRemovedForOneId_viewListenerNotUnregistered() { fun statesWithDifferentIds_onInfoPermanentlyRemovedForOneId_viewListenerNotUnregistered() {
val mockChipbarCoordinator = mock<ChipbarCoordinator>() val mockChipbarCoordinator = mock<ChipbarCoordinator>()
whenever(mockChipbarCoordinator.tempViewUiEventLogger).thenReturn(tempViewUiEventLogger)
underTest = underTest =
MediaTttSenderCoordinator( MediaTttSenderCoordinator(
mockChipbarCoordinator, mockChipbarCoordinator,

View File

@@ -17,7 +17,6 @@
package com.android.systemui.media.taptotransfer.sender package com.android.systemui.media.taptotransfer.sender
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.internal.logging.InstanceId
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
import com.android.systemui.dump.DumpManager import com.android.systemui.dump.DumpManager
import com.android.systemui.log.LogBuffer import com.android.systemui.log.LogBuffer
@@ -92,16 +91,8 @@ class MediaTttSenderLoggerTest : SysuiTestCase() {
fun logStateMap_bufferHasInfo() { fun logStateMap_bufferHasInfo() {
val map = val map =
mapOf( mapOf(
"123" to "123" to ChipStateSender.ALMOST_CLOSE_TO_START_CAST,
Pair( "456" to ChipStateSender.TRANSFER_TO_THIS_DEVICE_TRIGGERED,
InstanceId.fakeInstanceId(100),
ChipStateSender.ALMOST_CLOSE_TO_START_CAST
),
"456" to
Pair(
InstanceId.fakeInstanceId(200),
ChipStateSender.TRANSFER_TO_THIS_DEVICE_TRIGGERED
),
) )
logger.logStateMap(map) logger.logStateMap(map)

View File

@@ -1,7 +1,6 @@
package com.android.systemui.media.taptotransfer.sender package com.android.systemui.media.taptotransfer.sender
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.internal.logging.InstanceId
import com.android.internal.logging.testing.UiEventLoggerFake import com.android.internal.logging.testing.UiEventLoggerFake
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
@@ -22,32 +21,26 @@ class MediaTttSenderUiEventLoggerTest : SysuiTestCase() {
@Test @Test
fun logSenderStateChange_eventAssociatedWithStateIsLogged() { fun logSenderStateChange_eventAssociatedWithStateIsLogged() {
val state = ChipStateSender.ALMOST_CLOSE_TO_END_CAST val state = ChipStateSender.ALMOST_CLOSE_TO_END_CAST
logger.logSenderStateChange(state, instanceId) logger.logSenderStateChange(state)
assertThat(uiEventLoggerFake.numLogs()).isEqualTo(1) assertThat(uiEventLoggerFake.numLogs()).isEqualTo(1)
assertThat(uiEventLoggerFake.eventId(0)).isEqualTo(state.uiEvent.id) assertThat(uiEventLoggerFake.eventId(0)).isEqualTo(state.uiEvent.id)
assertThat(uiEventLoggerFake.get(0).instanceId).isEqualTo(instanceId)
} }
@Test @Test
fun logUndoClicked_undoEventLogged() { fun logUndoClicked_undoEventLogged() {
val undoEvent = MediaTttSenderUiEvents.MEDIA_TTT_SENDER_UNDO_TRANSFER_TO_THIS_DEVICE_CLICKED val undoEvent = MediaTttSenderUiEvents.MEDIA_TTT_SENDER_UNDO_TRANSFER_TO_THIS_DEVICE_CLICKED
logger.logUndoClicked(undoEvent, instanceId) logger.logUndoClicked(undoEvent)
assertThat(uiEventLoggerFake.numLogs()).isEqualTo(1) assertThat(uiEventLoggerFake.numLogs()).isEqualTo(1)
assertThat(uiEventLoggerFake.eventId(0)).isEqualTo(undoEvent.id) assertThat(uiEventLoggerFake.eventId(0)).isEqualTo(undoEvent.id)
assertThat(uiEventLoggerFake.get(0).instanceId).isEqualTo(instanceId)
} }
@Test @Test
fun logUndoClicked_notUndoEvent_eventNotLogged() { fun logUndoClicked_notUndoEvent_eventNotLogged() {
val state = MediaTttSenderUiEvents.MEDIA_TTT_SENDER_TRANSFER_TO_RECEIVER_FAILED logger.logUndoClicked(MediaTttSenderUiEvents.MEDIA_TTT_SENDER_TRANSFER_TO_RECEIVER_FAILED)
logger.logUndoClicked(state, instanceId)
assertThat(uiEventLoggerFake.numLogs()).isEqualTo(0) assertThat(uiEventLoggerFake.numLogs()).isEqualTo(0)
} }
} }
private val instanceId = InstanceId.fakeInstanceId(0)

View File

@@ -24,8 +24,6 @@ import android.view.ViewGroup
import android.view.WindowManager import android.view.WindowManager
import android.view.accessibility.AccessibilityManager import android.view.accessibility.AccessibilityManager
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.internal.logging.InstanceId
import com.android.internal.logging.testing.UiEventLoggerFake
import com.android.systemui.R import com.android.systemui.R
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.dagger.qualifiers.Main
@@ -62,9 +60,6 @@ class TemporaryViewDisplayControllerTest : SysuiTestCase() {
private lateinit var fakeWakeLockBuilder: WakeLockFake.Builder private lateinit var fakeWakeLockBuilder: WakeLockFake.Builder
private lateinit var fakeWakeLock: WakeLockFake private lateinit var fakeWakeLock: WakeLockFake
private lateinit var fakeUiEventLogger: UiEventLoggerFake
private lateinit var uiEventLogger: TemporaryViewUiEventLogger
@Mock @Mock
private lateinit var logger: TemporaryViewLogger<ViewInfo> private lateinit var logger: TemporaryViewLogger<ViewInfo>
@Mock @Mock
@@ -92,9 +87,6 @@ class TemporaryViewDisplayControllerTest : SysuiTestCase() {
fakeWakeLockBuilder = WakeLockFake.Builder(context) fakeWakeLockBuilder = WakeLockFake.Builder(context)
fakeWakeLockBuilder.setWakeLock(fakeWakeLock) fakeWakeLockBuilder.setWakeLock(fakeWakeLock)
fakeUiEventLogger = UiEventLoggerFake()
uiEventLogger = TemporaryViewUiEventLogger(fakeUiEventLogger)
underTest = TestController( underTest = TestController(
context, context,
logger, logger,
@@ -106,7 +98,6 @@ class TemporaryViewDisplayControllerTest : SysuiTestCase() {
powerManager, powerManager,
fakeWakeLockBuilder, fakeWakeLockBuilder,
fakeClock, fakeClock,
uiEventLogger,
) )
underTest.start() underTest.start()
} }
@@ -135,8 +126,6 @@ class TemporaryViewDisplayControllerTest : SysuiTestCase() {
underTest.displayView(info) underTest.displayView(info)
verify(logger).logViewAddition(info) verify(logger).logViewAddition(info)
assertThat(fakeUiEventLogger.eventId(0))
.isEqualTo(TemporaryViewUiEvent.TEMPORARY_VIEW_ADDED.id)
} }
@Test @Test
@@ -1040,9 +1029,6 @@ class TemporaryViewDisplayControllerTest : SysuiTestCase() {
verify(logger).logViewRemoval(DEFAULT_ID, reason) verify(logger).logViewRemoval(DEFAULT_ID, reason)
verify(configurationController).removeCallback(any()) verify(configurationController).removeCallback(any())
assertThat(listener.permanentlyRemovedIds).containsExactly(DEFAULT_ID) assertThat(listener.permanentlyRemovedIds).containsExactly(DEFAULT_ID)
assertThat(fakeUiEventLogger.logs.size).isEqualTo(1)
assertThat(fakeUiEventLogger.eventId(0))
.isEqualTo(TemporaryViewUiEvent.TEMPORARY_VIEW_ADDED.id)
} }
@Test @Test
@@ -1147,7 +1133,6 @@ class TemporaryViewDisplayControllerTest : SysuiTestCase() {
powerManager: PowerManager, powerManager: PowerManager,
wakeLockBuilder: WakeLock.Builder, wakeLockBuilder: WakeLock.Builder,
systemClock: SystemClock, systemClock: SystemClock,
uiEventLogger: TemporaryViewUiEventLogger,
) : TemporaryViewDisplayController<ViewInfo, TemporaryViewLogger<ViewInfo>>( ) : TemporaryViewDisplayController<ViewInfo, TemporaryViewLogger<ViewInfo>>(
context, context,
logger, logger,
@@ -1160,7 +1145,6 @@ class TemporaryViewDisplayControllerTest : SysuiTestCase() {
R.layout.chipbar, R.layout.chipbar,
wakeLockBuilder, wakeLockBuilder,
systemClock, systemClock,
uiEventLogger,
) { ) {
var mostRecentViewInfo: ViewInfo? = null var mostRecentViewInfo: ViewInfo? = null
@@ -1184,7 +1168,6 @@ class TemporaryViewDisplayControllerTest : SysuiTestCase() {
override val timeoutMs: Int = TIMEOUT_MS.toInt(), override val timeoutMs: Int = TIMEOUT_MS.toInt(),
override val id: String = DEFAULT_ID, override val id: String = DEFAULT_ID,
override val priority: ViewPriority = ViewPriority.NORMAL, override val priority: ViewPriority = ViewPriority.NORMAL,
override val instanceId: InstanceId = InstanceId.fakeInstanceId(0),
) : TemporaryViewInfo() ) : TemporaryViewInfo()
inner class Listener : TemporaryViewDisplayController.Listener { inner class Listener : TemporaryViewDisplayController.Listener {

View File

@@ -17,7 +17,6 @@
package com.android.systemui.temporarydisplay package com.android.systemui.temporarydisplay
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.internal.logging.InstanceId
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
import com.android.systemui.dump.DumpManager import com.android.systemui.dump.DumpManager
import com.android.systemui.log.LogBuffer import com.android.systemui.log.LogBuffer
@@ -51,7 +50,6 @@ class TemporaryViewLoggerTest : SysuiTestCase() {
override val priority: ViewPriority = ViewPriority.CRITICAL override val priority: ViewPriority = ViewPriority.CRITICAL
override val windowTitle: String = "Test Window Title" override val windowTitle: String = "Test Window Title"
override val wakeReason: String = "wake reason" override val wakeReason: String = "wake reason"
override val instanceId: InstanceId = InstanceId.fakeInstanceId(0)
} }
logger.logViewAddition(info) logger.logViewAddition(info)

View File

@@ -1,69 +0,0 @@
/*
* Copyright (C) 2023 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.temporarydisplay
import androidx.test.filters.SmallTest
import com.android.internal.logging.InstanceId
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 TemporaryViewUiEventLoggerTest : SysuiTestCase() {
private lateinit var uiEventLoggerFake: UiEventLoggerFake
private lateinit var logger: TemporaryViewUiEventLogger
@Before
fun setup() {
uiEventLoggerFake = UiEventLoggerFake()
logger = TemporaryViewUiEventLogger(uiEventLoggerFake)
}
@Test
fun testViewAdded() {
logger.logViewAdded(InstanceId.fakeInstanceId(123))
assertThat(uiEventLoggerFake.numLogs()).isEqualTo(1)
assertThat(uiEventLoggerFake.eventId(0))
.isEqualTo(TemporaryViewUiEvent.TEMPORARY_VIEW_ADDED.id)
}
@Test
fun testMultipleViewsAdded_differentInstanceIds() {
logger.logViewAdded(logger.getNewInstanceId())
logger.logViewAdded(logger.getNewInstanceId())
assertThat(uiEventLoggerFake.numLogs()).isEqualTo(2)
assertThat(uiEventLoggerFake.eventId(0))
.isEqualTo(TemporaryViewUiEvent.TEMPORARY_VIEW_ADDED.id)
assertThat(uiEventLoggerFake.eventId(1))
.isEqualTo(TemporaryViewUiEvent.TEMPORARY_VIEW_ADDED.id)
assertThat(uiEventLoggerFake.logs[0].instanceId.id)
.isNotEqualTo(uiEventLoggerFake.logs[1].instanceId.id)
}
@Test
fun testViewManuallyDismissed() {
logger.logViewManuallyDismissed(InstanceId.fakeInstanceId(123))
assertThat(uiEventLoggerFake.numLogs()).isEqualTo(1)
assertThat(uiEventLoggerFake.eventId(0))
.isEqualTo(TemporaryViewUiEvent.TEMPORARY_VIEW_MANUALLY_DISMISSED.id)
}
}

View File

@@ -30,7 +30,6 @@ import android.widget.ImageView
import android.widget.TextView import android.widget.TextView
import androidx.core.animation.doOnCancel import androidx.core.animation.doOnCancel
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.internal.logging.InstanceId
import com.android.internal.logging.testing.UiEventLoggerFake import com.android.internal.logging.testing.UiEventLoggerFake
import com.android.systemui.R import com.android.systemui.R
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
@@ -44,8 +43,6 @@ import com.android.systemui.dump.DumpManager
import com.android.systemui.plugins.FalsingManager import com.android.systemui.plugins.FalsingManager
import com.android.systemui.statusbar.VibratorHelper import com.android.systemui.statusbar.VibratorHelper
import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.temporarydisplay.TemporaryViewUiEvent
import com.android.systemui.temporarydisplay.TemporaryViewUiEventLogger
import com.android.systemui.temporarydisplay.ViewPriority import com.android.systemui.temporarydisplay.ViewPriority
import com.android.systemui.util.concurrency.FakeExecutor import com.android.systemui.util.concurrency.FakeExecutor
import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.any
@@ -90,7 +87,6 @@ class ChipbarCoordinatorTest : SysuiTestCase() {
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 uiEventLoggerFake: UiEventLoggerFake
private lateinit var uiEventLogger: TemporaryViewUiEventLogger
@Before @Before
fun setUp() { fun setUp() {
@@ -105,7 +101,6 @@ class ChipbarCoordinatorTest : SysuiTestCase() {
fakeWakeLockBuilder.setWakeLock(fakeWakeLock) fakeWakeLockBuilder.setWakeLock(fakeWakeLock)
uiEventLoggerFake = UiEventLoggerFake() uiEventLoggerFake = UiEventLoggerFake()
uiEventLogger = TemporaryViewUiEventLogger(uiEventLoggerFake)
chipbarAnimator = TestChipbarAnimator() chipbarAnimator = TestChipbarAnimator()
underTest = underTest =
@@ -126,7 +121,6 @@ class ChipbarCoordinatorTest : SysuiTestCase() {
vibratorHelper, vibratorHelper,
fakeWakeLockBuilder, fakeWakeLockBuilder,
fakeClock, fakeClock,
uiEventLogger,
) )
underTest.start() underTest.start()
} }
@@ -638,7 +632,7 @@ class ChipbarCoordinatorTest : SysuiTestCase() {
} }
@Test @Test
fun swipeToDismiss_swipeOccurs_viewDismissed_manuallyDismissedLogged() { fun swipeToDismiss_swipeOccurs_viewDismissed() {
underTest.displayView( underTest.displayView(
createChipbarInfo( createChipbarInfo(
Icon.Resource(R.drawable.ic_cake, contentDescription = null), Icon.Resource(R.drawable.ic_cake, contentDescription = null),
@@ -655,9 +649,6 @@ class ChipbarCoordinatorTest : SysuiTestCase() {
callbackCaptor.value.invoke(MotionEvent.obtain(0L, 0L, 0, 0f, 0f, 0)) callbackCaptor.value.invoke(MotionEvent.obtain(0L, 0L, 0, 0f, 0f, 0))
verify(windowManager).removeView(view) verify(windowManager).removeView(view)
assertThat(uiEventLoggerFake.numLogs()).isEqualTo(2)
assertThat(uiEventLoggerFake.eventId(1))
.isEqualTo(TemporaryViewUiEvent.TEMPORARY_VIEW_MANUALLY_DISMISSED.id)
} }
@Test @Test
@@ -674,11 +665,6 @@ class ChipbarCoordinatorTest : SysuiTestCase() {
val callbackCaptor = argumentCaptor<(MotionEvent) -> Unit>() val callbackCaptor = argumentCaptor<(MotionEvent) -> Unit>()
verify(swipeGestureHandler).addOnGestureDetectedCallback(any(), capture(callbackCaptor)) verify(swipeGestureHandler).addOnGestureDetectedCallback(any(), capture(callbackCaptor))
// only one log for view addition
assertThat(uiEventLoggerFake.numLogs()).isEqualTo(1)
assertThat(uiEventLoggerFake.eventId(0))
.isEqualTo(TemporaryViewUiEvent.TEMPORARY_VIEW_ADDED.id)
// WHEN the view is updated to not allow swipe-to-dismiss // WHEN the view is updated to not allow swipe-to-dismiss
underTest.displayView( underTest.displayView(
createChipbarInfo( createChipbarInfo(
@@ -697,7 +683,6 @@ class ChipbarCoordinatorTest : SysuiTestCase() {
// THEN it is ignored and view isn't removed // THEN it is ignored and view isn't removed
verify(windowManager, never()).removeView(view) verify(windowManager, never()).removeView(view)
assertThat(uiEventLoggerFake.numLogs()).isEqualTo(1)
} }
private fun createChipbarInfo( private fun createChipbarInfo(
@@ -718,7 +703,6 @@ class ChipbarCoordinatorTest : SysuiTestCase() {
timeoutMs = TIMEOUT, timeoutMs = TIMEOUT,
id = DEVICE_ID, id = DEVICE_ID,
priority = ViewPriority.NORMAL, priority = ViewPriority.NORMAL,
instanceId = InstanceId.fakeInstanceId(0),
) )
} }