1 /*
2  * Copyright (C) 2020 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.broadcast
18 
19 import android.content.BroadcastReceiver
20 import android.content.IntentFilter
21 import android.os.Handler
22 import android.os.Looper
23 import android.os.UserHandle
24 import android.util.ArraySet
25 import android.util.Log
26 import com.android.systemui.SysuiTestableContext
27 import com.android.systemui.broadcast.logging.BroadcastDispatcherLogger
28 import com.android.systemui.dump.DumpManager
29 import com.android.systemui.settings.UserTracker
30 import java.util.concurrent.Executor
31 
32 class FakeBroadcastDispatcher(
33     context: SysuiTestableContext,
34     looper: Looper,
35     executor: Executor,
36     dumpManager: DumpManager,
37     logger: BroadcastDispatcherLogger,
38     userTracker: UserTracker
39 ) : BroadcastDispatcher(context, looper, executor, dumpManager, logger, userTracker) {
40 
41     private val registeredReceivers = ArraySet<BroadcastReceiver>()
42 
43     override fun registerReceiverWithHandler(
44         receiver: BroadcastReceiver,
45         filter: IntentFilter,
46         handler: Handler,
47         user: UserHandle
48     ) {
49         registeredReceivers.add(receiver)
50     }
51 
52     override fun registerReceiver(
53         receiver: BroadcastReceiver,
54         filter: IntentFilter,
55         executor: Executor?,
56         user: UserHandle?
57     ) {
58         registeredReceivers.add(receiver)
59     }
60 
61     override fun unregisterReceiver(receiver: BroadcastReceiver) {
62         registeredReceivers.remove(receiver)
63     }
64 
65     override fun unregisterReceiverForUser(receiver: BroadcastReceiver, user: UserHandle) {
66         registeredReceivers.remove(receiver)
67     }
68 
69     fun cleanUpReceivers(testName: String) {
70         registeredReceivers.forEach {
71             Log.i(testName, "Receiver not unregistered from dispatcher: $it")
72         }
73         registeredReceivers.clear()
74     }
75 }