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

Commit 796ed183 authored by Nicolo' Mazzucato's avatar Nicolo' Mazzucato
Browse files

Use @ShadeDisplayAware ConfigurationInteractor in shade window

This makes all shade window calsses use the ShadeDisplayAware annotated ConfigurationInteractor. This ensures the config change related to the correct window is propagated.

When the flag is disabled, no new behaviour happens (as the old global ConfigurationInteractor is provided)

A linter will follow up to flag usages of the global one in potential shade classes.

Bug: 362719719
Bug: 374267505
Test: None
Flag: com.android.systemui.shade_window_goes_around
Change-Id: Ieafa8d18d48b953cec13bc95dfa05eee0abed040
parent cc609c85
Loading
Loading
Loading
Loading
+7 −10
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import com.android.systemui.biometrics.shared.model.SensorLocation
import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.shade.ShadeDisplayAware
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
@@ -42,7 +43,7 @@ constructor(
    @Application private val applicationScope: CoroutineScope,
    @Application private val context: Context,
    repository: FingerprintPropertyRepository,
    configurationInteractor: ConfigurationInteractor,
    @ShadeDisplayAware configurationInteractor: ConfigurationInteractor,
    displayStateInteractor: DisplayStateInteractor,
    udfpsOverlayInteractor: UdfpsOverlayInteractor,
) {
@@ -73,15 +74,12 @@ constructor(
     * - device's natural orientation
     */
    private val unscaledSensorLocation: Flow<SensorLocationInternal> =
        combine(
            repository.sensorLocations,
            uniqueDisplayId,
        ) { locations, displayId ->
        combine(repository.sensorLocations, uniqueDisplayId) { locations, displayId ->
            // Devices without multiple physical displays do not use the display id as the key;
            // instead, the key is an empty string.
            locations.getOrDefault(
                displayId,
                locations.getOrDefault("", SensorLocationInternal.DEFAULT)
                locations.getOrDefault("", SensorLocationInternal.DEFAULT),
            )
        }

@@ -92,16 +90,15 @@ constructor(
     * - device's natural orientation
     */
    val sensorLocation: Flow<SensorLocation> =
        combine(
        combine(unscaledSensorLocation, configurationInteractor.scaleForResolution) {
            unscaledSensorLocation,
            configurationInteractor.scaleForResolution,
        ) { unscaledSensorLocation, scale ->
            scale ->
            val sensorLocation =
                SensorLocation(
                    naturalCenterX = unscaledSensorLocation.sensorLocationX,
                    naturalCenterY = unscaledSensorLocation.sensorLocationY,
                    naturalRadius = unscaledSensorLocation.sensorRadius,
                    scale = scale
                    scale = scale,
                )
            sensorLocation
        }
+3 −2
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.bouncer.domain.interactor

import android.app.StatusBarManager.SESSION_KEYGUARD
import com.android.app.tracing.coroutines.asyncTraced as async
import com.android.compose.animation.scene.SceneKey
import com.android.internal.logging.UiEventLogger
import com.android.systemui.authentication.domain.interactor.AuthenticationInteractor
@@ -39,9 +40,9 @@ import com.android.systemui.power.domain.interactor.PowerInteractor
import com.android.systemui.scene.domain.interactor.SceneBackInteractor
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shade.ShadeDisplayAware
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import com.android.app.tracing.coroutines.asyncTraced as async
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.SharedFlow
@@ -65,7 +66,7 @@ constructor(
    private val uiEventLogger: UiEventLogger,
    private val sessionTracker: SessionTracker,
    sceneBackInteractor: SceneBackInteractor,
    private val configurationInteractor: ConfigurationInteractor,
    @ShadeDisplayAware private val configurationInteractor: ConfigurationInteractor,
) {
    private val _onIncorrectBouncerInput = MutableSharedFlow<Unit>()
    val onIncorrectBouncerInput: SharedFlow<Unit> = _onIncorrectBouncerInput
+4 −3
Original line number Diff line number Diff line
@@ -19,17 +19,18 @@ package com.android.systemui.keyboard.docking.ui.viewmodel
import android.content.Context
import android.view.Surface
import android.view.WindowManager
import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.settingslib.Utils
import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.keyboard.docking.domain.interactor.KeyboardDockingIndicationInteractor
import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.surfaceeffects.glowboxeffect.GlowBoxConfig
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
import com.android.app.tracing.coroutines.launchTraced as launch

@SysUISingleton
class KeyboardDockingIndicationViewModel
@@ -38,7 +39,7 @@ constructor(
    private val windowManager: WindowManager,
    private val context: Context,
    keyboardDockingIndicationInteractor: KeyboardDockingIndicationInteractor,
    configurationInteractor: ConfigurationInteractor,
    @ShadeDisplayAware configurationInteractor: ConfigurationInteractor,
    @Background private val backgroundScope: CoroutineScope,
) {

@@ -128,7 +129,7 @@ constructor(
            blurAmount = BLUR_AMOUNT,
            duration = DURATION,
            easeInDuration = EASE_DURATION,
            easeOutDuration = EASE_DURATION
            easeOutDuration = EASE_DURATION,
        )
    }

+5 −4
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.doze.util.BurnInHelperWrapper
import com.android.systemui.keyguard.shared.model.BurnInModel
import com.android.systemui.res.R
import com.android.systemui.shade.ShadeDisplayAware
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -47,7 +48,7 @@ constructor(
    private val context: Context,
    private val burnInHelperWrapper: BurnInHelperWrapper,
    @Application private val scope: CoroutineScope,
    private val configurationInteractor: ConfigurationInteractor,
    @ShadeDisplayAware private val configurationInteractor: ConfigurationInteractor,
    private val keyguardInteractor: KeyguardInteractor,
) {
    val deviceEntryIconXOffset: StateFlow<Int> =
@@ -62,7 +63,7 @@ constructor(
            .stateIn(
                scope,
                SharingStarted.WhileSubscribed(),
                burnInHelperWrapper.burnInProgressOffset()
                burnInHelperWrapper.burnInProgressOffset(),
            )

    /** Given the max x,y dimens, determine the current translation shifts. */
@@ -71,7 +72,7 @@ constructor(
                burnInOffset(xDimenResourceId, isXAxis = true),
                burnInOffset(yDimenResourceId, isXAxis = false).map {
                    it * 2 - context.resources.getDimensionPixelSize(yDimenResourceId)
                }
                },
            ) { translationX, translationY ->
                BurnInModel(translationX, translationY, burnInHelperWrapper.burnInScale())
            }
@@ -117,7 +118,7 @@ constructor(
    private fun calculateOffset(
        maxBurnInOffsetPixels: Int,
        isXAxis: Boolean,
        scale: Float = 1f
        scale: Float = 1f,
    ): Int {
        return (burnInHelperWrapper.burnInOffset(maxBurnInOffsetPixels, isXAxis) * scale).toInt()
    }
+3 −2
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@

package com.android.systemui.keyguard.domain.interactor

import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.systemui.CoreStartable
import com.android.systemui.biometrics.domain.interactor.FingerprintPropertyInteractor
import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
@@ -32,6 +33,7 @@ import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.Intra
import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.IntraBlueprintTransition.Type
import com.android.systemui.keyguard.ui.view.layout.sections.SmartspaceSection
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.shade.domain.interactor.ShadeInteractor
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
@@ -39,7 +41,6 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.map
import com.android.app.tracing.coroutines.launchTraced as launch

@SysUISingleton
class KeyguardBlueprintInteractor
@@ -48,7 +49,7 @@ constructor(
    private val keyguardBlueprintRepository: KeyguardBlueprintRepository,
    @Application private val applicationScope: CoroutineScope,
    shadeInteractor: ShadeInteractor,
    private val configurationInteractor: ConfigurationInteractor,
    @ShadeDisplayAware private val configurationInteractor: ConfigurationInteractor,
    private val fingerprintPropertyInteractor: FingerprintPropertyInteractor,
    private val smartspaceSection: SmartspaceSection,
) : CoreStartable {
Loading