1 /*
2  * Copyright (C) 2023 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.statusbar.notification
18 
19 import com.android.systemui.dagger.SysUISingleton
20 import com.android.systemui.log.LogBuffer
21 import com.android.systemui.log.core.LogLevel.DEBUG
22 import com.android.systemui.log.dagger.NotificationRemoteInputLog
23 import javax.inject.Inject
24 
25 /** Logger class for [RemoteInputController]. */
26 @SysUISingleton
27 class RemoteInputControllerLogger
28 @Inject
29 constructor(@NotificationRemoteInputLog private val logBuffer: LogBuffer) {
30 
31     /** logs addRemoteInput invocation of [RemoteInputController] */
32     fun logAddRemoteInput(
33         entryKey: String,
34         isRemoteInputAlreadyActive: Boolean,
35         isRemoteInputFound: Boolean
36     ) =
37         logBuffer.log(
38             TAG,
39             DEBUG,
40             {
41                 str1 = entryKey
42                 bool1 = isRemoteInputAlreadyActive
43                 bool2 = isRemoteInputFound
44             },
45             { "addRemoteInput entry: $str1, isAlreadyActive: $bool1, isFound:$bool2" }
46         )
47 
48     /** logs removeRemoteInput invocation of [RemoteInputController] */
49     @JvmOverloads
50     fun logRemoveRemoteInput(
51         entryKey: String,
52         remoteEditImeVisible: Boolean,
53         remoteEditImeAnimatingAway: Boolean,
54         isRemoteInputActive: Boolean? = null
55     ) =
56         logBuffer.log(
57             TAG,
58             DEBUG,
59             {
60                 str1 = entryKey
61                 bool1 = remoteEditImeVisible
62                 bool2 = remoteEditImeAnimatingAway
63                 str2 = isRemoteInputActive?.toString() ?: "N/A"
64             },
65             {
66                 "removeRemoteInput entry: $str1, remoteEditImeVisible: $bool1" +
67                     ", remoteEditImeAnimatingAway: $bool2, isActive: $str2"
68             }
69         )
70 
71     private companion object {
72         private const val TAG = "RemoteInputControllerLog"
73     }
74 }
75