1 /*
2  * Copyright (C) 2022 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.systemui.media.taptotransfer.sender
18 
19 import android.util.Log
20 import com.android.internal.logging.InstanceId
21 import com.android.internal.logging.UiEvent
22 import com.android.internal.logging.UiEventLogger
23 import com.android.systemui.dagger.SysUISingleton
24 import javax.inject.Inject
25 
26 /** A class for analytics logging for the media tap-to-transfer chip on the sender device. */
27 @SysUISingleton
28 class MediaTttSenderUiEventLogger @Inject constructor(private val logger: UiEventLogger) {
29     /** Logs that the sender chip has changed states. */
30     fun logSenderStateChange(chipState: ChipStateSender, instanceId: InstanceId) {
31         logger.log(chipState.uiEvent, instanceId)
32     }
33 
34     /**
35      * Logs that the undo button was clicked.
36      *
37      * @param undoUiEvent the uiEvent specific to which undo button was clicked.
38      */
39     fun logUndoClicked(undoUiEvent: UiEventLogger.UiEventEnum, instanceId: InstanceId) {
40         val isUndoEvent =
41             undoUiEvent ==
42                     MediaTttSenderUiEvents.MEDIA_TTT_SENDER_UNDO_TRANSFER_TO_RECEIVER_CLICKED ||
43                     undoUiEvent ==
44                     MediaTttSenderUiEvents.MEDIA_TTT_SENDER_UNDO_TRANSFER_TO_THIS_DEVICE_CLICKED
45         if (!isUndoEvent) {
46             Log.w(
47                 MediaTttSenderUiEventLogger::class.simpleName!!,
48             "Must pass an undo-specific UiEvent."
49             )
50             return
51         }
52         logger.log(undoUiEvent, instanceId)
53     }
54 }
55 
56 enum class MediaTttSenderUiEvents(val metricId: Int) : UiEventLogger.UiEventEnum {
57     @UiEvent(doc = "The undo button on the media ttt chip on the sender device was clicked " +
58             "to undo the transfer to the receiver device")
59     MEDIA_TTT_SENDER_UNDO_TRANSFER_TO_RECEIVER_CLICKED(971),
60     @UiEvent(doc = "The undo button on the media ttt chip on the sender device was clicked " +
61             "to undo the transfer back to this device")
62     MEDIA_TTT_SENDER_UNDO_TRANSFER_TO_THIS_DEVICE_CLICKED(972),
63 
64     @UiEvent(doc = "See android.app.StatusBarManager.MEDIA_TRANSFER_SENDER_* docs")
65     MEDIA_TTT_SENDER_ALMOST_CLOSE_TO_START_CAST(973),
66     @UiEvent(doc = "See android.app.StatusBarManager.MEDIA_TRANSFER_SENDER_* docs")
67     MEDIA_TTT_SENDER_ALMOST_CLOSE_TO_END_CAST(974),
68     @UiEvent(doc = "See android.app.StatusBarManager.MEDIA_TRANSFER_SENDER_* docs")
69     MEDIA_TTT_SENDER_TRANSFER_TO_RECEIVER_TRIGGERED(975),
70     @UiEvent(doc = "See android.app.StatusBarManager.MEDIA_TRANSFER_SENDER_* docs")
71     MEDIA_TTT_SENDER_TRANSFER_TO_THIS_DEVICE_TRIGGERED(976),
72     @UiEvent(doc = "See android.app.StatusBarManager.MEDIA_TRANSFER_SENDER_* docs")
73     MEDIA_TTT_SENDER_TRANSFER_TO_RECEIVER_SUCCEEDED(977),
74     @UiEvent(doc = "See android.app.StatusBarManager.MEDIA_TRANSFER_SENDER_* docs")
75     MEDIA_TTT_SENDER_TRANSFER_TO_THIS_DEVICE_SUCCEEDED(978),
76     @UiEvent(doc = "See android.app.StatusBarManager.MEDIA_TRANSFER_SENDER_* docs")
77     MEDIA_TTT_SENDER_TRANSFER_TO_RECEIVER_FAILED(979),
78     @UiEvent(doc = "See android.app.StatusBarManager.MEDIA_TRANSFER_SENDER_* docs")
79     MEDIA_TTT_SENDER_TRANSFER_TO_THIS_DEVICE_FAILED(980),
80     @UiEvent(doc = "See android.app.StatusBarManager.MEDIA_TRANSFER_SENDER_* docs")
81     MEDIA_TTT_SENDER_FAR_FROM_RECEIVER(981);
82 
83     override fun getId() = metricId
84 }
85