Loading packages/SystemUI/src/com/android/systemui/biometrics/dagger/BiometricsModule.kt +11 −5 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ package com.android.systemui.biometrics.dagger import android.content.Context import android.content.res.Resources import android.view.Display import com.android.app.displaylib.PerDisplayRepository import com.android.internal.R import com.android.launcher3.icons.IconProvider import com.android.systemui.CoreStartable Loading @@ -41,8 +43,8 @@ import com.android.systemui.biometrics.udfps.OverlapDetector import com.android.systemui.biometrics.ui.binder.DeviceEntryUnlockTrackerViewBinder import com.android.systemui.biometrics.ui.binder.SideFpsOverlayViewBinder import com.android.systemui.dagger.SysUISingleton import com.android.systemui.display.dagger.SystemUIDisplaySubcomponent import com.android.systemui.display.data.repository.DisplayStateRepository import com.android.systemui.display.data.repository.DisplayStateRepositoryImpl import com.android.systemui.keyguard.ui.binder.AlternateBouncerViewBinder import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener import com.android.systemui.util.concurrency.ThreadFactory Loading Loading @@ -100,15 +102,19 @@ interface BiometricsModule { impl: FingerprintPropertyRepositoryImpl ): FingerprintPropertyRepository @Binds @SysUISingleton fun displayStateRepository(impl: DisplayStateRepositoryImpl): DisplayStateRepository @BindsOptionalOf fun authContextPlugins(): AuthContextPlugins @BindsOptionalOf fun deviceEntryUnlockTrackerViewBinder(): DeviceEntryUnlockTrackerViewBinder companion object { @Provides @SysUISingleton fun displayStateRepository( displayComponentRepo: PerDisplayRepository<SystemUIDisplaySubcomponent> ): DisplayStateRepository { return displayComponentRepo[Display.DEFAULT_DISPLAY]!!.displayStateRepository } /** Background [Executor] for HAL related operations. */ @Provides @SysUISingleton Loading packages/SystemUI/src/com/android/systemui/display/DisplayModule.kt +9 −5 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.systemui.display import android.hardware.display.DisplayManager import android.os.Handler import android.view.Display import android.view.IWindowManager import com.android.app.displaylib.DisplayLibBackground import com.android.app.displaylib.DisplayLibComponent Loading @@ -27,6 +28,7 @@ import com.android.app.displaylib.createDisplayLibComponent import com.android.systemui.CoreStartable import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.display.dagger.SystemUIDisplaySubcomponent import com.android.systemui.display.dagger.SystemUIDisplaySubcomponent.DisplayLib import com.android.systemui.display.data.repository.DeviceStateRepository import com.android.systemui.display.data.repository.DeviceStateRepositoryImpl Loading @@ -41,7 +43,6 @@ import com.android.systemui.display.data.repository.PerDisplayRepoDumpHelper import com.android.systemui.display.domain.interactor.ConnectedDisplayInteractor import com.android.systemui.display.domain.interactor.ConnectedDisplayInteractorImpl import com.android.systemui.display.domain.interactor.DisplayStateInteractor import com.android.systemui.display.domain.interactor.DisplayStateInteractorImpl import com.android.systemui.display.domain.interactor.DisplayWindowPropertiesInteractorModule import com.android.systemui.display.domain.interactor.RearDisplayStateInteractor import com.android.systemui.display.domain.interactor.RearDisplayStateInteractorImpl Loading Loading @@ -75,10 +76,6 @@ interface DisplayModule { deviceStateRepository: DeviceStateRepositoryImpl ): DeviceStateRepository @Binds @SysUISingleton fun bindsDisplayStateInteractor(impl: DisplayStateInteractorImpl): DisplayStateInteractor @Binds fun bindsFocusedDisplayRepository( focusedDisplayRepository: FocusedDisplayRepositoryImpl Loading @@ -102,6 +99,13 @@ interface DisplayModule { fun bindDisplayLibBackground(@Background bgScope: CoroutineScope): CoroutineScope companion object { @Provides fun displayStateInteractor( displayComponentRepo: PerDisplayRepository<SystemUIDisplaySubcomponent> ): DisplayStateInteractor { return displayComponentRepo[Display.DEFAULT_DISPLAY]!!.displayStateInteractor } @Provides @SysUISingleton @IntoMap Loading packages/SystemUI/src/com/android/systemui/display/dagger/PerDisplayCommonModule.kt +45 −23 Original line number Diff line number Diff line Loading @@ -25,6 +25,11 @@ import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.display.dagger.SystemUIDisplaySubcomponent.DisplayAware import com.android.systemui.display.dagger.SystemUIDisplaySubcomponent.DisplayId import com.android.systemui.display.dagger.SystemUIDisplaySubcomponent.PerDisplaySingleton import com.android.systemui.display.data.repository.DisplayStateRepository import com.android.systemui.display.data.repository.DisplayStateRepositoryImpl import com.android.systemui.display.domain.interactor.DisplayStateInteractor import com.android.systemui.display.domain.interactor.DisplayStateInteractorImpl import dagger.Binds import dagger.Module import dagger.Provides import kotlinx.coroutines.CoroutineDispatcher Loading @@ -32,11 +37,25 @@ import kotlinx.coroutines.CoroutineScope /** Module providing common dependencies for per-display singletons. */ @Module class PerDisplayCommonModule { interface PerDisplayCommonModule { @Binds @PerDisplaySingleton @DisplayAware fun displayStateRepository(impl: DisplayStateRepositoryImpl): DisplayStateRepository @Binds @PerDisplaySingleton @DisplayAware fun bindsDisplayStateInteractor(impl: DisplayStateInteractorImpl): DisplayStateInteractor companion object { @Provides @PerDisplaySingleton fun provideDisplay(@DisplayId displayId: Int, displayRepository: DisplayRepository): Display { fun provideDisplay( @DisplayId displayId: Int, displayRepository: DisplayRepository, ): Display { return displayRepository.getDisplay(displayId) ?: error("Couldn't get the display with id=$displayId") } Loading @@ -44,11 +63,13 @@ class PerDisplayCommonModule { @Provides @PerDisplaySingleton @DisplayAware fun provideDisplayContext( display: Display, @Application context: Context, ): Context { return context.createDisplayContext(display) fun provideDisplayContext(display: Display, @Application context: Context): Context { return if (display.displayId == Display.DEFAULT_DISPLAY) { // No need to create a new context, if we already have one. context } else { context.createDisplayContext(display) } } @Provides Loading @@ -63,3 +84,4 @@ class PerDisplayCommonModule { ) } } } packages/SystemUI/src/com/android/systemui/display/dagger/SystemUIDisplaySubcomponent.kt +6 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ package com.android.systemui.display.dagger import com.android.systemui.display.dagger.SystemUIDisplaySubcomponent.PerDisplaySingleton import com.android.systemui.display.data.repository.DisplayStateRepository import com.android.systemui.display.domain.interactor.DisplayStateInteractor import dagger.BindsInstance import dagger.Subcomponent import javax.inject.Qualifier Loading @@ -38,6 +40,10 @@ interface SystemUIDisplaySubcomponent { @get:DisplayAware val displayCoroutineScope: CoroutineScope @get:DisplayAware val displayStateRepository: DisplayStateRepository @get:DisplayAware val displayStateInteractor: DisplayStateInteractor @Subcomponent.Factory interface Factory { fun create(@BindsInstance @DisplayId displayId: Int): SystemUIDisplaySubcomponent Loading packages/SystemUI/src/com/android/systemui/display/data/repository/DisplayStateRepository.kt +11 −12 Original line number Diff line number Diff line Loading @@ -20,9 +20,8 @@ import android.content.Context import android.util.DisplayMetrics import android.util.Size import android.view.DisplayInfo import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.display.dagger.SystemUIDisplaySubcomponent.DisplayAware import com.android.systemui.display.dagger.SystemUIDisplaySubcomponent.PerDisplaySingleton import com.android.systemui.display.data.repository.DeviceStateRepository.DeviceState.REAR_DISPLAY import com.android.systemui.display.shared.model.DisplayRotation import com.android.systemui.display.shared.model.toDisplayRotation Loading Loading @@ -69,12 +68,12 @@ interface DisplayStateRepository { val isWideScreen: StateFlow<Boolean> } @SysUISingleton @PerDisplaySingleton class DisplayStateRepositoryImpl @Inject constructor( @Background backgroundScope: CoroutineScope, @Application val context: Context, @DisplayAware bgDisplayScope: CoroutineScope, @DisplayAware val context: Context, deviceStateRepository: DeviceStateRepository, displayRepository: DisplayRepository, ) : DisplayStateRepository { Loading @@ -84,13 +83,13 @@ constructor( override val isInRearDisplayMode: StateFlow<Boolean> = deviceStateRepository.state .map { it == REAR_DISPLAY } .stateIn(backgroundScope, started = SharingStarted.Eagerly, initialValue = false) .stateIn(bgDisplayScope, started = SharingStarted.Eagerly, initialValue = false) private val currentDisplayInfo: StateFlow<DisplayInfo> = displayRepository.displayChangeEvent .map { getDisplayInfo() } .stateIn( backgroundScope, bgDisplayScope, started = SharingStarted.Eagerly, initialValue = getDisplayInfo(), ) Loading @@ -99,7 +98,7 @@ constructor( currentDisplayInfo .map { rotationToDisplayRotation(it.rotation) } .stateIn( backgroundScope, bgDisplayScope, started = SharingStarted.WhileSubscribed(), initialValue = rotationToDisplayRotation(currentDisplayInfo.value.rotation), ) Loading @@ -108,7 +107,7 @@ constructor( currentDisplayInfo .map { Size(it.naturalWidth, it.naturalHeight) } .stateIn( backgroundScope, bgDisplayScope, started = SharingStarted.WhileSubscribed(), initialValue = Size( Loading @@ -124,12 +123,12 @@ constructor( val smallestWidth = min(it.logicalWidth, it.logicalHeight).toDpi() smallestWidth >= LARGE_SCREEN_MIN_DPS } .stateIn(backgroundScope, started = SharingStarted.Eagerly, initialValue = false) .stateIn(bgDisplayScope, started = SharingStarted.Eagerly, initialValue = false) override val isWideScreen: StateFlow<Boolean> = currentDisplayInfo .map { it.logicalWidth.toDpi() >= LARGE_SCREEN_MIN_DPS } .stateIn(backgroundScope, started = SharingStarted.Eagerly, initialValue = false) .stateIn(bgDisplayScope, started = SharingStarted.Eagerly, initialValue = false) private fun getDisplayInfo(): DisplayInfo { val cachedDisplayInfo = DisplayInfo() Loading Loading
packages/SystemUI/src/com/android/systemui/biometrics/dagger/BiometricsModule.kt +11 −5 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ package com.android.systemui.biometrics.dagger import android.content.Context import android.content.res.Resources import android.view.Display import com.android.app.displaylib.PerDisplayRepository import com.android.internal.R import com.android.launcher3.icons.IconProvider import com.android.systemui.CoreStartable Loading @@ -41,8 +43,8 @@ import com.android.systemui.biometrics.udfps.OverlapDetector import com.android.systemui.biometrics.ui.binder.DeviceEntryUnlockTrackerViewBinder import com.android.systemui.biometrics.ui.binder.SideFpsOverlayViewBinder import com.android.systemui.dagger.SysUISingleton import com.android.systemui.display.dagger.SystemUIDisplaySubcomponent import com.android.systemui.display.data.repository.DisplayStateRepository import com.android.systemui.display.data.repository.DisplayStateRepositoryImpl import com.android.systemui.keyguard.ui.binder.AlternateBouncerViewBinder import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener import com.android.systemui.util.concurrency.ThreadFactory Loading Loading @@ -100,15 +102,19 @@ interface BiometricsModule { impl: FingerprintPropertyRepositoryImpl ): FingerprintPropertyRepository @Binds @SysUISingleton fun displayStateRepository(impl: DisplayStateRepositoryImpl): DisplayStateRepository @BindsOptionalOf fun authContextPlugins(): AuthContextPlugins @BindsOptionalOf fun deviceEntryUnlockTrackerViewBinder(): DeviceEntryUnlockTrackerViewBinder companion object { @Provides @SysUISingleton fun displayStateRepository( displayComponentRepo: PerDisplayRepository<SystemUIDisplaySubcomponent> ): DisplayStateRepository { return displayComponentRepo[Display.DEFAULT_DISPLAY]!!.displayStateRepository } /** Background [Executor] for HAL related operations. */ @Provides @SysUISingleton Loading
packages/SystemUI/src/com/android/systemui/display/DisplayModule.kt +9 −5 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.systemui.display import android.hardware.display.DisplayManager import android.os.Handler import android.view.Display import android.view.IWindowManager import com.android.app.displaylib.DisplayLibBackground import com.android.app.displaylib.DisplayLibComponent Loading @@ -27,6 +28,7 @@ import com.android.app.displaylib.createDisplayLibComponent import com.android.systemui.CoreStartable import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.display.dagger.SystemUIDisplaySubcomponent import com.android.systemui.display.dagger.SystemUIDisplaySubcomponent.DisplayLib import com.android.systemui.display.data.repository.DeviceStateRepository import com.android.systemui.display.data.repository.DeviceStateRepositoryImpl Loading @@ -41,7 +43,6 @@ import com.android.systemui.display.data.repository.PerDisplayRepoDumpHelper import com.android.systemui.display.domain.interactor.ConnectedDisplayInteractor import com.android.systemui.display.domain.interactor.ConnectedDisplayInteractorImpl import com.android.systemui.display.domain.interactor.DisplayStateInteractor import com.android.systemui.display.domain.interactor.DisplayStateInteractorImpl import com.android.systemui.display.domain.interactor.DisplayWindowPropertiesInteractorModule import com.android.systemui.display.domain.interactor.RearDisplayStateInteractor import com.android.systemui.display.domain.interactor.RearDisplayStateInteractorImpl Loading Loading @@ -75,10 +76,6 @@ interface DisplayModule { deviceStateRepository: DeviceStateRepositoryImpl ): DeviceStateRepository @Binds @SysUISingleton fun bindsDisplayStateInteractor(impl: DisplayStateInteractorImpl): DisplayStateInteractor @Binds fun bindsFocusedDisplayRepository( focusedDisplayRepository: FocusedDisplayRepositoryImpl Loading @@ -102,6 +99,13 @@ interface DisplayModule { fun bindDisplayLibBackground(@Background bgScope: CoroutineScope): CoroutineScope companion object { @Provides fun displayStateInteractor( displayComponentRepo: PerDisplayRepository<SystemUIDisplaySubcomponent> ): DisplayStateInteractor { return displayComponentRepo[Display.DEFAULT_DISPLAY]!!.displayStateInteractor } @Provides @SysUISingleton @IntoMap Loading
packages/SystemUI/src/com/android/systemui/display/dagger/PerDisplayCommonModule.kt +45 −23 Original line number Diff line number Diff line Loading @@ -25,6 +25,11 @@ import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.display.dagger.SystemUIDisplaySubcomponent.DisplayAware import com.android.systemui.display.dagger.SystemUIDisplaySubcomponent.DisplayId import com.android.systemui.display.dagger.SystemUIDisplaySubcomponent.PerDisplaySingleton import com.android.systemui.display.data.repository.DisplayStateRepository import com.android.systemui.display.data.repository.DisplayStateRepositoryImpl import com.android.systemui.display.domain.interactor.DisplayStateInteractor import com.android.systemui.display.domain.interactor.DisplayStateInteractorImpl import dagger.Binds import dagger.Module import dagger.Provides import kotlinx.coroutines.CoroutineDispatcher Loading @@ -32,11 +37,25 @@ import kotlinx.coroutines.CoroutineScope /** Module providing common dependencies for per-display singletons. */ @Module class PerDisplayCommonModule { interface PerDisplayCommonModule { @Binds @PerDisplaySingleton @DisplayAware fun displayStateRepository(impl: DisplayStateRepositoryImpl): DisplayStateRepository @Binds @PerDisplaySingleton @DisplayAware fun bindsDisplayStateInteractor(impl: DisplayStateInteractorImpl): DisplayStateInteractor companion object { @Provides @PerDisplaySingleton fun provideDisplay(@DisplayId displayId: Int, displayRepository: DisplayRepository): Display { fun provideDisplay( @DisplayId displayId: Int, displayRepository: DisplayRepository, ): Display { return displayRepository.getDisplay(displayId) ?: error("Couldn't get the display with id=$displayId") } Loading @@ -44,11 +63,13 @@ class PerDisplayCommonModule { @Provides @PerDisplaySingleton @DisplayAware fun provideDisplayContext( display: Display, @Application context: Context, ): Context { return context.createDisplayContext(display) fun provideDisplayContext(display: Display, @Application context: Context): Context { return if (display.displayId == Display.DEFAULT_DISPLAY) { // No need to create a new context, if we already have one. context } else { context.createDisplayContext(display) } } @Provides Loading @@ -63,3 +84,4 @@ class PerDisplayCommonModule { ) } } }
packages/SystemUI/src/com/android/systemui/display/dagger/SystemUIDisplaySubcomponent.kt +6 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ package com.android.systemui.display.dagger import com.android.systemui.display.dagger.SystemUIDisplaySubcomponent.PerDisplaySingleton import com.android.systemui.display.data.repository.DisplayStateRepository import com.android.systemui.display.domain.interactor.DisplayStateInteractor import dagger.BindsInstance import dagger.Subcomponent import javax.inject.Qualifier Loading @@ -38,6 +40,10 @@ interface SystemUIDisplaySubcomponent { @get:DisplayAware val displayCoroutineScope: CoroutineScope @get:DisplayAware val displayStateRepository: DisplayStateRepository @get:DisplayAware val displayStateInteractor: DisplayStateInteractor @Subcomponent.Factory interface Factory { fun create(@BindsInstance @DisplayId displayId: Int): SystemUIDisplaySubcomponent Loading
packages/SystemUI/src/com/android/systemui/display/data/repository/DisplayStateRepository.kt +11 −12 Original line number Diff line number Diff line Loading @@ -20,9 +20,8 @@ import android.content.Context import android.util.DisplayMetrics import android.util.Size import android.view.DisplayInfo import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.display.dagger.SystemUIDisplaySubcomponent.DisplayAware import com.android.systemui.display.dagger.SystemUIDisplaySubcomponent.PerDisplaySingleton import com.android.systemui.display.data.repository.DeviceStateRepository.DeviceState.REAR_DISPLAY import com.android.systemui.display.shared.model.DisplayRotation import com.android.systemui.display.shared.model.toDisplayRotation Loading Loading @@ -69,12 +68,12 @@ interface DisplayStateRepository { val isWideScreen: StateFlow<Boolean> } @SysUISingleton @PerDisplaySingleton class DisplayStateRepositoryImpl @Inject constructor( @Background backgroundScope: CoroutineScope, @Application val context: Context, @DisplayAware bgDisplayScope: CoroutineScope, @DisplayAware val context: Context, deviceStateRepository: DeviceStateRepository, displayRepository: DisplayRepository, ) : DisplayStateRepository { Loading @@ -84,13 +83,13 @@ constructor( override val isInRearDisplayMode: StateFlow<Boolean> = deviceStateRepository.state .map { it == REAR_DISPLAY } .stateIn(backgroundScope, started = SharingStarted.Eagerly, initialValue = false) .stateIn(bgDisplayScope, started = SharingStarted.Eagerly, initialValue = false) private val currentDisplayInfo: StateFlow<DisplayInfo> = displayRepository.displayChangeEvent .map { getDisplayInfo() } .stateIn( backgroundScope, bgDisplayScope, started = SharingStarted.Eagerly, initialValue = getDisplayInfo(), ) Loading @@ -99,7 +98,7 @@ constructor( currentDisplayInfo .map { rotationToDisplayRotation(it.rotation) } .stateIn( backgroundScope, bgDisplayScope, started = SharingStarted.WhileSubscribed(), initialValue = rotationToDisplayRotation(currentDisplayInfo.value.rotation), ) Loading @@ -108,7 +107,7 @@ constructor( currentDisplayInfo .map { Size(it.naturalWidth, it.naturalHeight) } .stateIn( backgroundScope, bgDisplayScope, started = SharingStarted.WhileSubscribed(), initialValue = Size( Loading @@ -124,12 +123,12 @@ constructor( val smallestWidth = min(it.logicalWidth, it.logicalHeight).toDpi() smallestWidth >= LARGE_SCREEN_MIN_DPS } .stateIn(backgroundScope, started = SharingStarted.Eagerly, initialValue = false) .stateIn(bgDisplayScope, started = SharingStarted.Eagerly, initialValue = false) override val isWideScreen: StateFlow<Boolean> = currentDisplayInfo .map { it.logicalWidth.toDpi() >= LARGE_SCREEN_MIN_DPS } .stateIn(backgroundScope, started = SharingStarted.Eagerly, initialValue = false) .stateIn(bgDisplayScope, started = SharingStarted.Eagerly, initialValue = false) private fun getDisplayInfo(): DisplayInfo { val cachedDisplayInfo = DisplayInfo() Loading