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

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

Make SysUICutoutProvider a @PerDisplaySingleton

Test: atest SystemUITests
Test: Build and run SystemUI
Fixes: 431942810
Flag: EXEMPT dagger change that can't be flagged
Change-Id: Ifc2ec8fa2dfd75f111dd3a9f27dcaeb234c3b3a0
parent 7c7f6d3a
Loading
Loading
Loading
Loading
+6 −14
Original line number Diff line number Diff line
@@ -21,10 +21,9 @@ import android.graphics.Rect
import android.util.RotationUtils
import android.view.Display
import android.view.DisplayCutout
import com.android.systemui.display.dagger.SystemUIDisplaySubcomponent.PerDisplaySingleton
import com.android.systemui.display.naturalBounds
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
import javax.inject.Inject

interface SysUICutoutProvider {

@@ -37,11 +36,12 @@ interface SysUICutoutProvider {
    fun cutoutInfoForCurrentDisplayAndRotation(): SysUICutoutInformation?
}

@PerDisplaySingleton
class SysUICutoutProviderImpl
@AssistedInject
@Inject
constructor(
    @Assisted private val context: Context,
    @Assisted private val cameraProtectionLoader: CameraProtectionLoader,
    private val context: Context,
    private val cameraProtectionLoader: CameraProtectionLoader,
) : SysUICutoutProvider {

    private val cameraProtectionList by lazy {
@@ -81,12 +81,4 @@ constructor(
        )
        return rotatedBoundsOut
    }

    @AssistedFactory
    interface Factory {
        fun create(
            context: Context,
            cameraProtectionLoader: CameraProtectionLoader,
        ): SysUICutoutProviderImpl
    }
}
+16 −0
Original line number Diff line number Diff line
@@ -19,6 +19,10 @@ package com.android.systemui.display.dagger
import android.content.Context
import android.view.Display
import com.android.app.displaylib.DisplayRepository
import com.android.systemui.CameraProtectionLoader
import com.android.systemui.CameraProtectionLoaderImpl
import com.android.systemui.SysUICutoutProvider
import com.android.systemui.SysUICutoutProviderImpl
import com.android.systemui.coroutines.newTracingContext
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.dagger.qualifiers.Background
@@ -69,8 +73,20 @@ interface PerDisplayCommonModule {
    @DisplayAware
    fun sysUiDarkIconDispatcher(impl: DarkIconDispatcherImpl): SysuiDarkIconDispatcher

    @Binds @DisplayAware fun sysUICutoutProvider(impl: SysUICutoutProviderImpl): SysUICutoutProvider

    companion object {

        @Provides
        @PerDisplaySingleton
        @DisplayAware
        fun cameraProtectionLoader(
            factory: CameraProtectionLoaderImpl.Factory,
            @DisplayAware context: Context,
        ): CameraProtectionLoader {
            return factory.create(context)
        }

        @Provides
        @PerDisplaySingleton
        fun provideDisplay(
+3 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.display.dagger

import com.android.systemui.SysUICutoutProvider
import com.android.systemui.common.ui.ConfigurationState
import com.android.systemui.display.dagger.SystemUIDisplaySubcomponent.PerDisplaySingleton
import com.android.systemui.display.data.repository.DisplayStateRepository
@@ -67,6 +68,8 @@ interface SystemUIDisplaySubcomponent {

    @get:DisplayAware val configurationState: ConfigurationState

    @get:DisplayAware val sysUICutoutProvider: SysUICutoutProvider

    @Subcomponent.Factory
    interface Factory {
        fun create(@BindsInstance @DisplayId displayId: Int): SystemUIDisplaySubcomponent
+9 −15
Original line number Diff line number Diff line
@@ -19,12 +19,11 @@ package com.android.systemui.statusbar.dagger
import android.content.Context
import android.view.Display
import android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR
import com.android.systemui.CameraProtectionLoader
import com.android.app.displaylib.PerDisplayRepository
import com.android.systemui.CoreStartable
import com.android.systemui.SysUICutoutProvider
import com.android.systemui.SysUICutoutProviderImpl
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.display.dagger.SystemUIDisplaySubcomponent
import com.android.systemui.display.data.repository.DisplayWindowPropertiesRepositoryImpl
import com.android.systemui.log.LogBuffer
import com.android.systemui.log.LogBufferFactory
@@ -179,25 +178,20 @@ interface StatusBarModule {
            return factory.create("StatusBarWindow", 120)
        }

        @Provides
        @SysUISingleton
        fun sysUiCutoutProvider(
            factory: SysUICutoutProviderImpl.Factory,
            context: Context,
            cameraProtectionLoader: CameraProtectionLoader,
        ): SysUICutoutProvider {
            return factory.create(context, cameraProtectionLoader)
        }

        @Provides
        @SysUISingleton
        fun contentInsetsProvider(
            factory: StatusBarContentInsetsProviderImpl.Factory,
            context: Context,
            configurationController: ConfigurationController,
            sysUICutoutProvider: SysUICutoutProvider,
            displaySubcomponentRepo: PerDisplayRepository<SystemUIDisplaySubcomponent>,
        ): StatusBarContentInsetsProvider {
            return factory.create(context, configurationController, sysUICutoutProvider)
            val displaySubcomponent = displaySubcomponentRepo[Display.DEFAULT_DISPLAY]!!
            return factory.create(
                context,
                configurationController,
                displaySubcomponent.sysUICutoutProvider,
            )
        }

        @Provides
+5 −10
Original line number Diff line number Diff line
@@ -17,11 +17,11 @@
package com.android.systemui.statusbar.data.repository

import android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR
import com.android.systemui.CameraProtectionLoaderImpl
import com.android.app.displaylib.PerDisplayRepository
import com.android.systemui.CoreStartable
import com.android.systemui.SysUICutoutProviderImpl
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.data.repository.DisplayRepository
import com.android.systemui.display.data.repository.DisplayWindowPropertiesRepository
import com.android.systemui.display.data.repository.PerDisplayStore
@@ -49,8 +49,7 @@ constructor(
    private val factory: StatusBarContentInsetsProviderImpl.Factory,
    private val displayWindowPropertiesRepository: DisplayWindowPropertiesRepository,
    private val statusBarConfigurationControllerStore: StatusBarConfigurationControllerStore,
    private val sysUICutoutProviderFactory: SysUICutoutProviderImpl.Factory,
    private val cameraProtectionLoaderFactory: CameraProtectionLoaderImpl.Factory,
    private val displaySubcomponentRepo: PerDisplayRepository<SystemUIDisplaySubcomponent>,
) :
    StatusBarContentInsetsProviderStore,
    StatusBarPerDisplayStoreImpl<StatusBarContentInsetsProvider>(
@@ -64,13 +63,9 @@ constructor(
        val context = displayWindowProperties.context
        val configurationController =
            statusBarConfigurationControllerStore.forDisplay(displayId) ?: return null
        val cameraProtectionLoader = cameraProtectionLoaderFactory.create(context)
        val displaySubcomponent = displaySubcomponentRepo[displayId] ?: return null
        return factory
            .create(
                context,
                configurationController,
                sysUICutoutProviderFactory.create(context, cameraProtectionLoader),
            )
            .create(context, configurationController, displaySubcomponent.sysUICutoutProvider)
            .also { it.start() }
    }

Loading