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 Original line Diff line number Diff line
@@ -21,10 +21,9 @@ import android.graphics.Rect
import android.util.RotationUtils
import android.util.RotationUtils
import android.view.Display
import android.view.Display
import android.view.DisplayCutout
import android.view.DisplayCutout
import com.android.systemui.display.dagger.SystemUIDisplaySubcomponent.PerDisplaySingleton
import com.android.systemui.display.naturalBounds
import com.android.systemui.display.naturalBounds
import dagger.assisted.Assisted
import javax.inject.Inject
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject


interface SysUICutoutProvider {
interface SysUICutoutProvider {


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


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


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

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


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

    companion object {
    companion object {


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

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


package com.android.systemui.display.dagger
package com.android.systemui.display.dagger


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


    @get:DisplayAware val configurationState: ConfigurationState
    @get:DisplayAware val configurationState: ConfigurationState


    @get:DisplayAware val sysUICutoutProvider: SysUICutoutProvider

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


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

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


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


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


Loading