1 package com.android.systemui.statusbar.policy
2 
3 import android.content.res.Configuration
4 import com.android.systemui.dagger.SysUISingleton
5 import com.android.systemui.statusbar.data.repository.StatusBarConfigurationController
6 import dagger.Binds
7 import dagger.Module
8 import javax.inject.Inject
9 
10 /** Fake implementation of [ConfigurationController] for tests. */
11 @SysUISingleton
12 class FakeConfigurationController @Inject constructor() :
13     ConfigurationController, StatusBarConfigurationController {
14 
15     private var listeners = mutableListOf<ConfigurationController.ConfigurationListener>()
16     private var isRtl = false
17 
addCallbacknull18     override fun addCallback(listener: ConfigurationController.ConfigurationListener) {
19         listeners += listener
20     }
21 
removeCallbacknull22     override fun removeCallback(listener: ConfigurationController.ConfigurationListener) {
23         listeners -= listener
24     }
25 
onConfigurationChangednull26     override fun onConfigurationChanged(newConfiguration: Configuration) {
27         listeners.forEach { it.onConfigChanged(newConfiguration) }
28     }
29 
notifyThemeChangednull30     override fun notifyThemeChanged() {
31         listeners.forEach { it.onThemeChanged() }
32     }
33 
notifyDensityOrFontScaleChangednull34     fun notifyDensityOrFontScaleChanged() {
35         listeners.forEach { it.onDensityOrFontScaleChanged() }
36     }
37 
notifyConfigurationChangednull38     fun notifyConfigurationChanged() {
39         onConfigurationChanged(newConfiguration = Configuration())
40     }
41 
notifyLayoutDirectionChangednull42     fun notifyLayoutDirectionChanged(isRtl: Boolean) {
43         this.isRtl = isRtl
44         listeners.forEach { it.onLayoutDirectionChanged(isRtl) }
45     }
46 
isLayoutRtlnull47     override fun isLayoutRtl(): Boolean = isRtl
48 
49     override fun getNightModeName(): String = "undefined"
50 }
51 
52 @Module
53 interface FakeConfigurationControllerModule {
54     @Binds fun bindFake(fake: FakeConfigurationController): ConfigurationController
55 }
56