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