summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractorTest.kt6
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/docking/ui/viewmodel/KeyboardDockingIndicationViewModelTest.kt6
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/adapter/QSSceneAdapterImplTest.kt14
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractorTest.kt12
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/unfold/DisplaySwitchLatencyTrackerTest.kt26
-rw-r--r--packages/SystemUI/src/com/android/systemui/common/ui/ConfigurationModule.kt (renamed from packages/SystemUI/src/com/android/systemui/common/ui/ConfigurationStateModule.kt)21
-rw-r--r--packages/SystemUI/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractor.kt85
-rw-r--r--packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/ui/adapter/QSSceneAdapter.kt7
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/ShadeDisplayAwareModule.kt16
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractorKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorFactory.kt4
12 files changed, 128 insertions, 75 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractorTest.kt
index 72e0726dedb0..5994afa948c7 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractorTest.kt
@@ -55,7 +55,7 @@ class ConfigurationInteractorTest : SysuiTestCase() {
testableResources.overrideConfiguration(configuration)
configurationRepository = FakeConfigurationRepository()
testScope = TestScope()
- underTest = ConfigurationInteractor(configurationRepository)
+ underTest = ConfigurationInteractorImpl(configurationRepository)
}
@Test
@@ -207,7 +207,7 @@ class ConfigurationInteractorTest : SysuiTestCase() {
updateDisplay(
width = DISPLAY_HEIGHT,
height = DISPLAY_WIDTH,
- rotation = Surface.ROTATION_90
+ rotation = Surface.ROTATION_90,
)
runCurrent()
@@ -217,7 +217,7 @@ class ConfigurationInteractorTest : SysuiTestCase() {
private fun updateDisplay(
width: Int = DISPLAY_WIDTH,
height: Int = DISPLAY_HEIGHT,
- @Surface.Rotation rotation: Int = Surface.ROTATION_0
+ @Surface.Rotation rotation: Int = Surface.ROTATION_0,
) {
configuration.windowConfiguration.maxBounds.set(Rect(0, 0, width, height))
configuration.windowConfiguration.displayRotation = rotation
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/docking/ui/viewmodel/KeyboardDockingIndicationViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/docking/ui/viewmodel/KeyboardDockingIndicationViewModelTest.kt
index 2735d2f03e6a..a0bef727e548 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/docking/ui/viewmodel/KeyboardDockingIndicationViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/docking/ui/viewmodel/KeyboardDockingIndicationViewModelTest.kt
@@ -24,7 +24,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.common.ui.data.repository.FakeConfigurationRepository
-import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractorImpl
import com.android.systemui.keyboard.data.repository.FakeKeyboardRepository
import com.android.systemui.keyboard.docking.domain.interactor.KeyboardDockingIndicationInteractor
import com.google.common.truth.Truth.assertThat
@@ -59,7 +59,7 @@ class KeyboardDockingIndicationViewModelTest : SysuiTestCase() {
val keyboardDockingIndicationInteractor =
KeyboardDockingIndicationInteractor(keyboardRepository)
- val configurationInteractor = ConfigurationInteractor(configurationRepository)
+ val configurationInteractor = ConfigurationInteractorImpl(configurationRepository)
underTest =
KeyboardDockingIndicationViewModel(
@@ -67,7 +67,7 @@ class KeyboardDockingIndicationViewModelTest : SysuiTestCase() {
context,
keyboardDockingIndicationInteractor,
configurationInteractor,
- testScope.backgroundScope
+ testScope.backgroundScope,
)
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/adapter/QSSceneAdapterImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/adapter/QSSceneAdapterImplTest.kt
index 22913f12330f..8769022f3aa8 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/adapter/QSSceneAdapterImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/adapter/QSSceneAdapterImplTest.kt
@@ -26,7 +26,7 @@ import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.biometrics.domain.interactor.displayStateInteractor
import com.android.systemui.common.ui.data.repository.FakeConfigurationRepository
-import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractorImpl
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.display.data.repository.displayStateRepository
import com.android.systemui.dump.DumpManager
@@ -101,7 +101,7 @@ class QSSceneAdapterImplTest : SysuiTestCase() {
private val fakeConfigurationRepository =
FakeConfigurationRepository().apply { onConfigurationChange(configuration) }
- private val configurationInteractor = ConfigurationInteractor(fakeConfigurationRepository)
+ private val configurationInteractor = ConfigurationInteractorImpl(fakeConfigurationRepository)
private val mockAsyncLayoutInflater =
mock<AsyncLayoutInflater>() {
@@ -151,10 +151,7 @@ class QSSceneAdapterImplTest : SysuiTestCase() {
inOrder.verify(qsImpl!!).onCreate(nullable())
inOrder
.verify(qsImpl!!)
- .onComponentCreated(
- eq(qsSceneComponentFactory.components[0]),
- any(),
- )
+ .onComponentCreated(eq(qsSceneComponentFactory.components[0]), any())
}
@Test
@@ -422,10 +419,7 @@ class QSSceneAdapterImplTest : SysuiTestCase() {
inOrder.verify(newQSImpl).onCreate(nullable())
inOrder
.verify(newQSImpl)
- .onComponentCreated(
- qsSceneComponentFactory.components[1],
- bundleArgCaptor.value,
- )
+ .onComponentCreated(qsSceneComponentFactory.components[1], bundleArgCaptor.value)
}
@Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractorTest.kt
index 476252737454..d665b3166986 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractorTest.kt
@@ -24,7 +24,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.common.ui.data.repository.ConfigurationRepositoryImpl
-import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractorImpl
import com.android.systemui.coroutines.collectValues
import com.android.systemui.power.data.repository.FakePowerRepository
import com.android.systemui.power.domain.interactor.PowerInteractor
@@ -75,9 +75,9 @@ open class HideNotificationsInteractorTest : SysuiTestCase() {
configurationController,
context,
testScope.backgroundScope,
- mock()
+ mock(),
)
- private val configurationInteractor = ConfigurationInteractor(configurationRepository)
+ private val configurationInteractor = ConfigurationInteractorImpl(configurationRepository)
private val unfoldTransitionRepository =
UnfoldTransitionRepositoryImpl(Optional.of(unfoldTransitionProgressProvider))
@@ -103,7 +103,7 @@ open class HideNotificationsInteractorTest : SysuiTestCase() {
unfoldTransitionInteractor,
configurationInteractor,
animationStatus,
- powerInteractor
+ powerInteractor,
)
}
@@ -140,7 +140,7 @@ open class HideNotificationsInteractorTest : SysuiTestCase() {
updateDisplay(
width = INITIAL_DISPLAY_HEIGHT,
height = INITIAL_DISPLAY_WIDTH,
- rotation = ROTATION_90
+ rotation = ROTATION_90,
)
runCurrent()
@@ -284,7 +284,7 @@ open class HideNotificationsInteractorTest : SysuiTestCase() {
private fun updateDisplay(
width: Int = INITIAL_DISPLAY_WIDTH,
height: Int = INITIAL_DISPLAY_HEIGHT,
- @Surface.Rotation rotation: Int = ROTATION_0
+ @Surface.Rotation rotation: Int = ROTATION_0,
) {
configuration.windowConfiguration.maxBounds.set(Rect(0, 0, width, height))
configuration.windowConfiguration.displayRotation = rotation
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/unfold/DisplaySwitchLatencyTrackerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/unfold/DisplaySwitchLatencyTrackerTest.kt
index f1015394d7b1..09be93de9f3e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/unfold/DisplaySwitchLatencyTrackerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/unfold/DisplaySwitchLatencyTrackerTest.kt
@@ -24,7 +24,7 @@ import androidx.test.filters.SmallTest
import com.android.internal.R
import com.android.systemui.SysuiTestCase
import com.android.systemui.common.ui.data.repository.ConfigurationRepositoryImpl
-import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractorImpl
import com.android.systemui.defaultDeviceState
import com.android.systemui.deviceStateManager
import com.android.systemui.display.data.repository.DeviceStateRepository
@@ -107,9 +107,9 @@ class DisplaySwitchLatencyTrackerTest : SysuiTestCase() {
configurationController,
context,
testScope.backgroundScope,
- mock()
+ mock(),
)
- private val configurationInteractor = ConfigurationInteractor(configurationRepository)
+ private val configurationInteractor = ConfigurationInteractorImpl(configurationRepository)
private val unfoldTransitionProgressProvider = FakeUnfoldTransitionProvider()
private val unfoldTransitionRepository =
UnfoldTransitionRepositoryImpl(Optional.of(unfoldTransitionProgressProvider))
@@ -145,7 +145,7 @@ class DisplaySwitchLatencyTrackerTest : SysuiTestCase() {
testScope.backgroundScope,
displaySwitchLatencyLogger,
systemClock,
- deviceStateManager
+ deviceStateManager,
)
}
@@ -174,7 +174,7 @@ class DisplaySwitchLatencyTrackerTest : SysuiTestCase() {
DisplaySwitchLatencyEvent(
latencyMs = 250,
fromFoldableDeviceState = FOLDABLE_DEVICE_STATE_CLOSED,
- toFoldableDeviceState = FOLDABLE_DEVICE_STATE_HALF_OPEN
+ toFoldableDeviceState = FOLDABLE_DEVICE_STATE_HALF_OPEN,
)
assertThat(loggedEvent).isEqualTo(expectedLoggedEvent)
}
@@ -200,7 +200,7 @@ class DisplaySwitchLatencyTrackerTest : SysuiTestCase() {
testScope.backgroundScope,
displaySwitchLatencyLogger,
systemClock,
- deviceStateManager
+ deviceStateManager,
)
areAnimationEnabled.emit(true)
@@ -226,7 +226,7 @@ class DisplaySwitchLatencyTrackerTest : SysuiTestCase() {
DisplaySwitchLatencyEvent(
latencyMs = 50,
fromFoldableDeviceState = FOLDABLE_DEVICE_STATE_CLOSED,
- toFoldableDeviceState = FOLDABLE_DEVICE_STATE_HALF_OPEN
+ toFoldableDeviceState = FOLDABLE_DEVICE_STATE_HALF_OPEN,
)
assertThat(loggedEvent).isEqualTo(expectedLoggedEvent)
}
@@ -259,7 +259,7 @@ class DisplaySwitchLatencyTrackerTest : SysuiTestCase() {
DisplaySwitchLatencyEvent(
latencyMs = 50,
fromFoldableDeviceState = FOLDABLE_DEVICE_STATE_CLOSED,
- toFoldableDeviceState = FOLDABLE_DEVICE_STATE_HALF_OPEN
+ toFoldableDeviceState = FOLDABLE_DEVICE_STATE_HALF_OPEN,
)
assertThat(loggedEvent).isEqualTo(expectedLoggedEvent)
}
@@ -289,7 +289,7 @@ class DisplaySwitchLatencyTrackerTest : SysuiTestCase() {
DisplaySwitchLatencyEvent(
latencyMs = 200,
fromFoldableDeviceState = FOLDABLE_DEVICE_STATE_HALF_OPEN,
- toFoldableDeviceState = FOLDABLE_DEVICE_STATE_CLOSED
+ toFoldableDeviceState = FOLDABLE_DEVICE_STATE_CLOSED,
)
assertThat(loggedEvent).isEqualTo(expectedLoggedEvent)
}
@@ -310,7 +310,7 @@ class DisplaySwitchLatencyTrackerTest : SysuiTestCase() {
lastWakefulnessEvent.emit(
WakefulnessModel(
internalWakefulnessState = WakefulnessState.ASLEEP,
- lastSleepReason = WakeSleepReason.FOLD
+ lastSleepReason = WakeSleepReason.FOLD,
)
)
screenPowerState.emit(ScreenPowerState.SCREEN_OFF)
@@ -326,7 +326,7 @@ class DisplaySwitchLatencyTrackerTest : SysuiTestCase() {
latencyMs = 200,
fromFoldableDeviceState = FOLDABLE_DEVICE_STATE_HALF_OPEN,
toFoldableDeviceState = FOLDABLE_DEVICE_STATE_CLOSED,
- toState = SysUiStatsLog.DISPLAY_SWITCH_LATENCY_TRACKED__TO_STATE__AOD
+ toState = SysUiStatsLog.DISPLAY_SWITCH_LATENCY_TRACKED__TO_STATE__AOD,
)
assertThat(loggedEvent).isEqualTo(expectedLoggedEvent)
}
@@ -372,7 +372,7 @@ class DisplaySwitchLatencyTrackerTest : SysuiTestCase() {
lastWakefulnessEvent.emit(
WakefulnessModel(
internalWakefulnessState = WakefulnessState.ASLEEP,
- lastSleepReason = WakeSleepReason.FOLD
+ lastSleepReason = WakeSleepReason.FOLD,
)
)
screenPowerState.emit(ScreenPowerState.SCREEN_OFF)
@@ -385,7 +385,7 @@ class DisplaySwitchLatencyTrackerTest : SysuiTestCase() {
latencyMs = 0,
fromFoldableDeviceState = FOLDABLE_DEVICE_STATE_HALF_OPEN,
toFoldableDeviceState = FOLDABLE_DEVICE_STATE_CLOSED,
- toState = SysUiStatsLog.DISPLAY_SWITCH_LATENCY_TRACKED__TO_STATE__SCREEN_OFF
+ toState = SysUiStatsLog.DISPLAY_SWITCH_LATENCY_TRACKED__TO_STATE__SCREEN_OFF,
)
assertThat(loggedEvent).isEqualTo(expectedLoggedEvent)
}
diff --git a/packages/SystemUI/src/com/android/systemui/common/ui/ConfigurationStateModule.kt b/packages/SystemUI/src/com/android/systemui/common/ui/ConfigurationModule.kt
index a3735f95cf74..7f50e4a06022 100644
--- a/packages/SystemUI/src/com/android/systemui/common/ui/ConfigurationStateModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/common/ui/ConfigurationModule.kt
@@ -17,6 +17,9 @@
package com.android.systemui.common.ui
import android.content.Context
+import com.android.systemui.common.ui.data.repository.ConfigurationRepository
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractorImpl
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.statusbar.policy.ConfigurationController
@@ -35,17 +38,24 @@ import javax.inject.Qualifier
@Qualifier @Retention(AnnotationRetention.RUNTIME) annotation class GlobalConfig
@Module
-interface ConfigurationStateModule {
+interface ConfigurationModule {
/**
* Deprecated: [ConfigurationState] should be injected only with the correct annotation. For
* now, without annotation the global config associated state is provided.
*/
@Binds
+ @Deprecated("Use the @GlobalConfig annotated one instead of this.")
fun provideGlobalConfigurationState(
@GlobalConfig configurationState: ConfigurationState
): ConfigurationState
+ @Binds
+ @Deprecated("Use the @GlobalConfig annotated one instead of this.")
+ fun provideDefaultConfigurationState(
+ @GlobalConfig configurationState: ConfigurationInteractor
+ ): ConfigurationInteractor
+
companion object {
@SysUISingleton
@Provides
@@ -57,5 +67,14 @@ interface ConfigurationStateModule {
): ConfigurationState {
return configStateFactory.create(context, configurationController)
}
+
+ @SysUISingleton
+ @Provides
+ @GlobalConfig
+ fun provideGlobalConfigurationInteractor(
+ configurationRepository: ConfigurationRepository
+ ): ConfigurationInteractor {
+ return ConfigurationInteractorImpl(configurationRepository)
+ }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractor.kt b/packages/SystemUI/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractor.kt
index eb423d69a4eb..97a23e1a5010 100644
--- a/packages/SystemUI/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractor.kt
@@ -21,8 +21,6 @@ import android.content.res.Configuration
import android.graphics.Rect
import android.view.Surface
import com.android.systemui.common.ui.data.repository.ConfigurationRepository
-import com.android.systemui.dagger.SysUISingleton
-import javax.inject.Inject
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
@@ -32,14 +30,52 @@ 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) {
+interface ConfigurationInteractor {
/**
* Returns screen size adjusted to rotation, so returned screen size is stable across all
* rotations
*/
- private val Configuration.naturalScreenBounds: Rect
+ val Configuration.naturalScreenBounds: Rect
+
+ /** Returns the unadjusted screen size. */
+ val maxBounds: Flow<Rect>
+
+ /**
+ * Returns screen size adjusted to rotation, so returned screen sizes are stable across all
+ * rotations, could be useful if you need to react to screen resize (e.g. fold/unfold on
+ * foldable devices)
+ */
+ val naturalMaxBounds: Flow<Rect>
+
+ /**
+ * The layout direction. Will be either `View#LAYOUT_DIRECTION_LTR` or
+ * `View#LAYOUT_DIRECTION_RTL`.
+ */
+ val layoutDirection: Flow<Int>
+
+ /** Emit an event on any config change */
+ val onAnyConfigurationChange: Flow<Unit>
+
+ /** Emits the new configuration on any configuration change */
+ val configurationValues: Flow<Configuration>
+
+ /** Emits the current resolution scaling factor */
+ val scaleForResolution: Flow<Float>
+
+ /** Given [resourceId], emit the dimension pixel size on config change */
+ fun dimensionPixelSize(resourceId: Int): Flow<Int>
+
+ /** Emits the dimensional pixel size of the given resource, inverting it for RTL if necessary */
+ fun directionalDimensionPixelSize(originLayoutDirection: Int, resourceId: Int): Flow<Int>
+
+ /** Given a set of [resourceId]s, emit Map<ResourceId, DimensionPixelSize> on config change */
+ fun dimensionPixelSize(resourceIds: Set<Int>): Flow<Map<Int, Int>>
+}
+
+class ConfigurationInteractorImpl(private val repository: ConfigurationRepository) :
+ ConfigurationInteractor {
+
+ override val Configuration.naturalScreenBounds: Rect
get() {
val rotation = windowConfiguration.displayRotation
val maxBounds = windowConfiguration.maxBounds
@@ -50,53 +86,40 @@ class ConfigurationInteractor @Inject constructor(private val repository: Config
}
}
- /** Returns the unadjusted screen size. */
- val maxBounds: Flow<Rect> =
+ override val maxBounds: Flow<Rect> =
repository.configurationValues
.map { Rect(it.windowConfiguration.maxBounds) }
.distinctUntilChanged()
- /**
- * Returns screen size adjusted to rotation, so returned screen sizes are stable across all
- * rotations, could be useful if you need to react to screen resize (e.g. fold/unfold on
- * foldable devices)
- */
- val naturalMaxBounds: Flow<Rect> =
+ override val naturalMaxBounds: Flow<Rect> =
repository.configurationValues.map { it.naturalScreenBounds }.distinctUntilChanged()
- /**
- * The layout direction. Will be either `View#LAYOUT_DIRECTION_LTR` or
- * `View#LAYOUT_DIRECTION_RTL`.
- */
- val layoutDirection: Flow<Int> =
+ override val layoutDirection: Flow<Int> =
repository.configurationValues.map { it.layoutDirection }.distinctUntilChanged()
- /** Given [resourceId], emit the dimension pixel size on config change */
- fun dimensionPixelSize(resourceId: Int): Flow<Int> {
+ override fun dimensionPixelSize(resourceId: Int): Flow<Int> {
return onAnyConfigurationChange.mapLatest { repository.getDimensionPixelSize(resourceId) }
}
- /** Emits the dimensional pixel size of the given resource, inverting it for RTL if necessary */
- fun directionalDimensionPixelSize(originLayoutDirection: Int, resourceId: Int): Flow<Int> {
+ override fun directionalDimensionPixelSize(
+ originLayoutDirection: Int,
+ resourceId: Int,
+ ): Flow<Int> {
return dimensionPixelSize(resourceId).combine(layoutDirection) { size, direction ->
if (originLayoutDirection == direction) size else -size
}
}
- /** Given a set of [resourceId]s, emit Map<ResourceId, DimensionPixelSize> on config change */
- fun dimensionPixelSize(resourceIds: Set<Int>): Flow<Map<Int, Int>> {
+ override fun dimensionPixelSize(resourceIds: Set<Int>): Flow<Map<Int, Int>> {
return onAnyConfigurationChange.mapLatest {
resourceIds.associateWith { repository.getDimensionPixelSize(it) }
}
}
- /** Emit an event on any config change */
- val onAnyConfigurationChange: Flow<Unit> =
+ override val onAnyConfigurationChange: Flow<Unit> =
repository.onAnyConfigurationChange.onStart { emit(Unit) }
- /** Emits the new configuration on any configuration change */
- val configurationValues: Flow<Configuration> = repository.configurationValues
+ override val configurationValues: Flow<Configuration> = repository.configurationValues
- /** Emits the current resolution scaling factor */
- val scaleForResolution: Flow<Float> = repository.scaleForResolution
+ override val scaleForResolution: Flow<Float> = repository.scaleForResolution
}
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
index 9138243c642c..4447dff7af00 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
@@ -48,7 +48,7 @@ import com.android.systemui.brightness.dagger.ScreenBrightnessModule;
import com.android.systemui.classifier.FalsingModule;
import com.android.systemui.clipboardoverlay.dagger.ClipboardOverlayModule;
import com.android.systemui.common.data.CommonDataLayerModule;
-import com.android.systemui.common.ui.ConfigurationStateModule;
+import com.android.systemui.common.ui.ConfigurationModule;
import com.android.systemui.common.ui.data.repository.ConfigurationRepositoryModule;
import com.android.systemui.common.usagestats.data.CommonUsageStatsDataLayerModule;
import com.android.systemui.communal.dagger.CommunalModule;
@@ -212,7 +212,7 @@ import javax.inject.Named;
ClockRegistryModule.class,
CommunalModule.class,
CommonDataLayerModule.class,
- ConfigurationStateModule.class,
+ ConfigurationModule.class,
ConfigurationRepositoryModule.class,
CommonUsageStatsDataLayerModule.class,
ConfigurationControllerModule.class,
diff --git a/packages/SystemUI/src/com/android/systemui/qs/ui/adapter/QSSceneAdapter.kt b/packages/SystemUI/src/com/android/systemui/qs/ui/adapter/QSSceneAdapter.kt
index e922e09c26ec..d4adcdd49f5c 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/ui/adapter/QSSceneAdapter.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/ui/adapter/QSSceneAdapter.kt
@@ -37,6 +37,7 @@ import com.android.systemui.qs.QSImpl
import com.android.systemui.qs.dagger.QSSceneComponent
import com.android.systemui.res.R
import com.android.systemui.settings.brightness.MirrorController
+import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.shade.domain.interactor.ShadeInteractor
import com.android.systemui.shade.shared.model.ShadeMode
import com.android.systemui.util.kotlin.sample
@@ -206,7 +207,7 @@ constructor(
dumpManager: DumpManager,
@Main private val mainDispatcher: CoroutineDispatcher,
@Application applicationScope: CoroutineScope,
- private val configurationInteractor: ConfigurationInteractor,
+ @ShadeDisplayAware private val configurationInteractor: ConfigurationInteractor,
private val asyncLayoutInflaterFactory: (Context) -> AsyncLayoutInflater,
) : QSContainerController, QSSceneAdapter, Dumpable {
@@ -219,7 +220,7 @@ constructor(
dumpManager: DumpManager,
@Main dispatcher: CoroutineDispatcher,
@Application scope: CoroutineScope,
- configurationInteractor: ConfigurationInteractor,
+ @ShadeDisplayAware configurationInteractor: ConfigurationInteractor,
) : this(
qsSceneComponentFactory,
qsImplProvider,
@@ -256,7 +257,7 @@ constructor(
.stateIn(
applicationScope,
SharingStarted.WhileSubscribed(),
- customizerState.value.isShowing
+ customizerState.value.isShowing,
)
override val customizerAnimationDuration: StateFlow<Int> =
customizerState
diff --git a/packages/SystemUI/src/com/android/systemui/shade/ShadeDisplayAwareModule.kt b/packages/SystemUI/src/com/android/systemui/shade/ShadeDisplayAwareModule.kt
index 6fb9b1fe8873..42d4effbac3a 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/ShadeDisplayAwareModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/ShadeDisplayAwareModule.kt
@@ -25,6 +25,8 @@ import com.android.systemui.common.ui.ConfigurationStateImpl
import com.android.systemui.common.ui.GlobalConfig
import com.android.systemui.common.ui.data.repository.ConfigurationRepository
import com.android.systemui.common.ui.data.repository.ConfigurationRepositoryImpl
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractorImpl
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.res.R
import com.android.systemui.shade.shared.flag.ShadeWindowGoesAround
@@ -133,4 +135,18 @@ object ShadeDisplayAwareModule {
globalConfigurationRepository
}
}
+
+ @SysUISingleton
+ @Provides
+ @ShadeDisplayAware
+ fun provideShadeAwareConfigurationInteractor(
+ @ShadeDisplayAware configurationRepository: ConfigurationRepository,
+ @GlobalConfig configurationInteractor: ConfigurationInteractor,
+ ): ConfigurationInteractor {
+ return if (ShadeWindowGoesAround.isEnabled) {
+ ConfigurationInteractorImpl(configurationRepository)
+ } else {
+ configurationInteractor
+ }
+ }
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractorKosmos.kt
index 7e0e5f39c708..f876003926a1 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractorKosmos.kt
@@ -20,4 +20,4 @@ import com.android.systemui.common.ui.data.repository.configurationRepository
import com.android.systemui.kosmos.Kosmos
var Kosmos.configurationInteractor: ConfigurationInteractor by
- Kosmos.Fixture { ConfigurationInteractor(configurationRepository) }
+ Kosmos.Fixture { ConfigurationInteractorImpl(configurationRepository) }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorFactory.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorFactory.kt
index 8c4ec4c2cb75..4a6e27331efc 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorFactory.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorFactory.kt
@@ -19,7 +19,7 @@ package com.android.systemui.keyguard.domain.interactor
import com.android.systemui.bouncer.data.repository.FakeKeyguardBouncerRepository
import com.android.systemui.common.ui.data.repository.FakeConfigurationRepository
-import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractorImpl
import com.android.systemui.flags.FakeFeatureFlags
import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
import com.android.systemui.keyguard.shared.model.KeyguardState
@@ -77,7 +77,7 @@ object KeyguardInteractorFactory {
repository = repository,
powerInteractor = powerInteractor,
bouncerRepository = bouncerRepository,
- configurationInteractor = ConfigurationInteractor(configurationRepository),
+ configurationInteractor = ConfigurationInteractorImpl(configurationRepository),
shadeRepository = shadeRepository,
keyguardTransitionInteractor = keyguardTransitionInteractor,
sceneInteractorProvider = { sceneInteractor },