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

Commit ed12246c authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Make ConfigurationRepository and ConfigurationState display aware" into main

parents 9ed8c2c1 35dbd954
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ import com.android.systemui.notifications.ui.composable.ConstrainedNotificationS
import com.android.systemui.notifications.ui.composable.SnoozeableHeadsUpNotificationSpace
import com.android.systemui.res.R
import com.android.systemui.shade.LargeScreenHeaderHelper
import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.statusbar.notification.icon.ui.viewbinder.AlwaysOnDisplayNotificationIconViewStore
import com.android.systemui.statusbar.notification.icon.ui.viewbinder.NotificationIconContainerViewBinder
import com.android.systemui.statusbar.notification.icon.ui.viewbinder.StatusBarIconViewBindingFailureTracker
@@ -84,7 +85,7 @@ constructor(
    stackScrollLayout: NotificationStackScrollLayout,
    sharedNotificationContainerBinder: SharedNotificationContainerBinder,
    private val keyguardRootViewModel: KeyguardRootViewModel,
    private val configurationState: ConfigurationState,
    @ShadeDisplayAware private val configurationState: ConfigurationState,
    private val iconBindingFailureTracker: StatusBarIconViewBindingFailureTracker,
    private val nicAodViewModel: NotificationIconContainerAlwaysOnDisplayViewModel,
    private val nicAodIconViewStore: AlwaysOnDisplayNotificationIconViewStore,
+0 −5
Original line number Diff line number Diff line
@@ -25,11 +25,6 @@ import dagger.Module

@Module
abstract class CommonDataLayerModule {
    @Binds
    abstract fun bindConfigurationRepository(
        impl: ConfigurationRepositoryImpl
    ): ConfigurationRepository

    @Binds
    abstract fun bindPackageChangeRepository(
        impl: PackageChangeRepositoryImpl
+2 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.common.ui

import android.content.Context
import com.android.systemui.common.ui.data.repository.ConfigurationRepositoryModule
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.statusbar.policy.ConfigurationController
@@ -28,7 +29,7 @@ import javax.inject.Qualifier
/**
 * Annotates elements that provide information from the global configuration.
 *
 * The global configuration is the one associted with the main display. Secondary displays will
 * The global configuration is the one associated with the main display. Secondary displays will
 * apply override to the global configuration. Elements annotated with this shouldn't be used for
 * secondary displays.
 */
+83 −53
Original line number Diff line number Diff line
@@ -23,13 +23,17 @@ import android.view.DisplayInfo
import androidx.annotation.DimenRes
import com.android.systemui.common.coroutine.ChannelExt.trySendWithFailureLogging
import com.android.systemui.common.coroutine.ConflatedCallbackFlow.conflatedCallbackFlow
import com.android.systemui.common.ui.GlobalConfig
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.util.wrapper.DisplayUtilsWrapper
import dagger.Binds
import dagger.Module
import javax.inject.Inject
import dagger.Provides
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.channels.awaitClose
@@ -57,19 +61,17 @@ interface ConfigurationRepository {
    fun getDimensionPixelSize(id: Int): Int
}

@SysUISingleton
class ConfigurationRepositoryImpl
@Inject
@AssistedInject
constructor(
    private val configurationController: ConfigurationController,
    private val context: Context,
    @Assisted private val configurationController: ConfigurationController,
    @Assisted private val context: Context,
    @Application private val scope: CoroutineScope,
    private val displayUtils: DisplayUtilsWrapper,
) : ConfigurationRepository {
    private val displayInfo = MutableStateFlow(DisplayInfo())

    override val onAnyConfigurationChange: Flow<Unit> =
        conflatedCallbackFlow {
    override val onAnyConfigurationChange: Flow<Unit> = conflatedCallbackFlow {
        val callback =
            object : ConfigurationController.ConfigurationListener {
                override fun onUiModeChanged() {
@@ -92,8 +94,7 @@ constructor(
        awaitClose { configurationController.removeCallback(callback) }
    }

    override val onConfigurationChange: Flow<Unit> =
        conflatedCallbackFlow {
    override val onConfigurationChange: Flow<Unit> = conflatedCallbackFlow {
        val callback =
            object : ConfigurationController.ConfigurationListener {
                override fun onConfigChanged(newConfig: Configuration) {
@@ -104,8 +105,7 @@ constructor(
        awaitClose { configurationController.removeCallback(callback) }
    }

    override val configurationValues: Flow<Configuration> =
            conflatedCallbackFlow {
    override val configurationValues: Flow<Configuration> = conflatedCallbackFlow {
        val callback =
            object : ConfigurationController.ConfigurationListener {
                override fun onConfigChanged(newConfig: Configuration) {
@@ -134,8 +134,7 @@ constructor(
                    maxDisplayMode.physicalWidth,
                    maxDisplayMode.physicalHeight,
                    displayInfo.value.naturalWidth,
                    displayInfo.value.naturalHeight
                )
                    displayInfo.value.naturalHeight)
            return if (scaleFactor == Float.POSITIVE_INFINITY) 1f else scaleFactor
        }
        return 1f
@@ -144,9 +143,40 @@ constructor(
    override fun getDimensionPixelSize(@DimenRes id: Int): Int {
        return context.resources.getDimensionPixelSize(id)
    }

    @AssistedFactory
    interface Factory {
        fun create(
            context: Context,
            configurationController: ConfigurationController
        ): ConfigurationRepositoryImpl
    }
}

@Module
interface ConfigurationRepositoryModule {
    @Binds fun bindImpl(impl: ConfigurationRepositoryImpl): ConfigurationRepository
abstract class ConfigurationRepositoryModule {

    /**
     * For compatibility reasons. Ideally, only the an annotated [ConfigurationRepository] should be
     * injected.
     */
    @Binds
    @Deprecated("Use the ConfigurationRepository annotated with @GlobalConfig instead.")
    @SysUISingleton
    abstract fun provideDefaultConfigRepository(
        @GlobalConfig configurationRepository: ConfigurationRepository
    ): ConfigurationRepository

    companion object {
        @Provides
        @GlobalConfig
        @SysUISingleton
        fun provideGlobalConfigRepository(
            context: Context,
            @GlobalConfig configurationController: ConfigurationController,
            factory: ConfigurationRepositoryImpl.Factory
        ): ConfigurationRepository {
            return factory.create(context, configurationController)
        }
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import kotlinx.coroutines.flow.mapLatest
import kotlinx.coroutines.flow.onStart

/** Business logic related to configuration changes. */
// TODO: b/374267505 - Create a @ShadeDisplayWindow annotated version of this.
@SysUISingleton
class ConfigurationInteractor @Inject constructor(private val repository: ConfigurationRepository) {
    /**
Loading