Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c5a7d7e9 authored by Chris Göllner's avatar Chris Göllner
Browse files

Use display aware SystemBarUtilsState and ConfigurationState

Some places were using default display instances of these classes, which
were causing issues.

For example the status bar notification icons, had the wrong height on
a secondary display, as they were using dimensions from the default
display.

Test: atest SystemUITests
Bug: 419552860
Flag: com.android.systemui.shared.status_bar_connected_displays
Change-Id: Ie275070ec3a25e19a0b037aded7d5f6d7ff114dd
parent 44da68ab
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -61,7 +61,7 @@ constructor(
    private val iconBindingFailureTracker: StatusBarIconViewBindingFailureTracker,
    private val nicAodViewModel: NotificationIconContainerAlwaysOnDisplayViewModel,
    private val nicAodIconViewStore: AlwaysOnDisplayNotificationIconViewStore,
    private val systemBarUtilsState: SystemBarUtilsState,
    @ShadeDisplayAware private val systemBarUtilsState: SystemBarUtilsState,
    private val keyguardClockViewModel: KeyguardClockViewModel,
) {

+6 −0
Original line number Diff line number Diff line
@@ -16,10 +16,12 @@

package com.android.systemui.display.dagger

import com.android.systemui.common.ui.ConfigurationState
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 com.android.systemui.statusbar.domain.interactor.StatusBarIconRefreshInteractor
import com.android.systemui.statusbar.ui.SystemBarUtilsState
import dagger.BindsInstance
import dagger.Subcomponent
import javax.inject.Qualifier
@@ -49,6 +51,10 @@ interface SystemUIDisplaySubcomponent {

    @get:DisplayAware val lifecycleListeners: Set<LifecycleListener>

    @get:DisplayAware val systemBarUtilsState: SystemBarUtilsState

    @get:DisplayAware val configurationState: ConfigurationState

    @Subcomponent.Factory
    interface Factory {
        fun create(@BindsInstance @DisplayId displayId: Int): SystemUIDisplaySubcomponent
+1 −1
Original line number Diff line number Diff line
@@ -54,7 +54,7 @@ constructor(
    private val iconBindingFailureTracker: StatusBarIconViewBindingFailureTracker,
    private val nicAodViewModel: NotificationIconContainerAlwaysOnDisplayViewModel,
    private val nicAodIconViewStore: AlwaysOnDisplayNotificationIconViewStore,
    private val systemBarUtilsState: SystemBarUtilsState,
    @ShadeDisplayAware private val systemBarUtilsState: SystemBarUtilsState,
    private val rootViewModel: KeyguardRootViewModel,
    private val shadeModeInteractor: ShadeModeInteractor,
) : KeyguardSection() {
+12 −0
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ import com.android.systemui.statusbar.phone.ConfigurationForwarder
import com.android.systemui.statusbar.phone.domain.interactor.ShadeDarkIconInteractor
import com.android.systemui.statusbar.phone.domain.interactor.ShadeDarkIconInteractorImpl
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.statusbar.ui.SystemBarUtilsState
import com.android.systemui.utils.windowmanager.WindowManagerProvider
import com.android.window.flags.Flags
import dagger.Module
@@ -210,6 +211,17 @@ object ShadeDisplayAwareModule {
        }
    }

    @SysUISingleton
    @Provides
    @ShadeDisplayAware
    fun shadeDisplayAwareSystemBarUtilsState(
        @ShadeDisplayAware context: Context,
        @ShadeDisplayAware configurationController: ConfigurationController,
        factory: SystemBarUtilsState.Factory,
    ): SystemBarUtilsState {
        return factory.create(context, configurationController)
    }

    @SysUISingleton
    @Provides
    @ShadeDisplayAware
+27 −1
Original line number Diff line number Diff line
@@ -16,6 +16,9 @@

package com.android.systemui.statusbar.dagger

import android.content.Context
import com.android.systemui.common.ui.ConfigurationState
import com.android.systemui.common.ui.ConfigurationStateImpl
import com.android.systemui.display.dagger.SystemUIDisplaySubcomponent
import com.android.systemui.display.dagger.SystemUIDisplaySubcomponent.DisplayAware
import com.android.systemui.display.dagger.SystemUIDisplaySubcomponent.PerDisplaySingleton
@@ -23,6 +26,7 @@ import com.android.systemui.statusbar.data.repository.StatusBarConfigurationCont
import com.android.systemui.statusbar.data.repository.StatusBarConfigurationControllerStore
import com.android.systemui.statusbar.domain.interactor.StatusBarIconRefreshInteractor
import com.android.systemui.statusbar.domain.interactor.StatusBarIconRefreshInteractorImpl
import com.android.systemui.statusbar.ui.SystemBarUtilsState
import dagger.Binds
import dagger.Module
import dagger.Provides
@@ -53,11 +57,33 @@ interface StatusBarPerDisplayModule {
        @PerDisplaySingleton
        @DisplayAware
        fun provideStatusBarConfigurationController(
            @SystemUIDisplaySubcomponent.DisplayAware displayId: Int,
            @DisplayAware displayId: Int,
            configurationControllerStore: StatusBarConfigurationControllerStore,
        ): StatusBarConfigurationController {
            return configurationControllerStore.forDisplay(displayId)
                ?: error("No configuration controller for display $displayId")
        }

        @Provides
        @PerDisplaySingleton
        @DisplayAware
        fun systemBarUtilsState(
            @DisplayAware context: Context,
            @DisplayAware configurationController: StatusBarConfigurationController,
            factory: SystemBarUtilsState.Factory,
        ): SystemBarUtilsState {
            return factory.create(context, configurationController)
        }

        @Provides
        @PerDisplaySingleton
        @DisplayAware
        fun configurationState(
            configStateFactory: ConfigurationStateImpl.Factory,
            @DisplayAware configurationController: StatusBarConfigurationController,
            @DisplayAware context: Context,
        ): ConfigurationState {
            return configStateFactory.create(context, configurationController)
        }
    }
}
Loading