diff options
11 files changed, 93 insertions, 64 deletions
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/PasswordBouncer.kt b/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/PasswordBouncer.kt index df22a7023ebf..53e437a2944f 100644 --- a/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/PasswordBouncer.kt +++ b/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/PasswordBouncer.kt @@ -66,7 +66,7 @@ internal fun PasswordBouncer( LaunchedEffect(Unit) { // When the UI comes up, request focus on the TextField to bring up the software keyboard. focusRequester.requestFocus() - // Also, report that the UI is shown to let the view-model runs some logic. + // Also, report that the UI is shown to let the view-model run some logic. viewModel.onShown() } diff --git a/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/BouncerInteractor.kt b/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/BouncerInteractor.kt index ff36839460be..138a76ccc07e 100644 --- a/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/BouncerInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/BouncerInteractor.kt @@ -26,6 +26,7 @@ import com.android.systemui.classifier.FalsingClassifier import com.android.systemui.classifier.domain.interactor.FalsingInteractor import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application +import com.android.systemui.power.domain.interactor.PowerInteractor import com.android.systemui.res.R import com.android.systemui.scene.shared.flag.SceneContainerFlags import com.android.systemui.util.kotlin.pairwise @@ -52,6 +53,7 @@ constructor( private val authenticationInteractor: AuthenticationInteractor, flags: SceneContainerFlags, private val falsingInteractor: FalsingInteractor, + private val powerInteractor: PowerInteractor, ) { /** The user-facing message to show in the bouncer. */ @@ -128,6 +130,7 @@ constructor( * user's pocket or by the user's face while holding their device up to their ear. */ fun onIntentionalUserInput() { + powerInteractor.onUserTouch() falsingInteractor.updateFalseConfidence(FalsingClassifier.Result.passed(0.6)) } diff --git a/packages/SystemUI/src/com/android/systemui/power/domain/interactor/PowerInteractor.kt b/packages/SystemUI/src/com/android/systemui/power/domain/interactor/PowerInteractor.kt index dbd62fe16309..d9e3e55c1ad3 100644 --- a/packages/SystemUI/src/com/android/systemui/power/domain/interactor/PowerInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/power/domain/interactor/PowerInteractor.kt @@ -27,10 +27,10 @@ import com.android.systemui.power.shared.model.ScreenPowerState import com.android.systemui.power.shared.model.WakeSleepReason import com.android.systemui.power.shared.model.WakefulnessState import com.android.systemui.statusbar.phone.ScreenOffAnimationController +import javax.inject.Inject import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.map -import javax.inject.Inject /** Hosts business logic for interacting with the power system. */ @SysUISingleton @@ -59,18 +59,28 @@ constructor( * Whether we're awake (screen is on and responding to user touch) or asleep (screen is off, or * on AOD). */ - val isAwake = repository.wakefulness + val isAwake = + repository.wakefulness .map { it.isAwake() } .distinctUntilChanged(checkEquivalentUnlessEmitDuplicatesUnderTest) - /** - * Helper flow in case "isAsleep" reads better than "!isAwake". - */ + /** Helper flow in case "isAsleep" reads better than "!isAwake". */ val isAsleep = isAwake.map { !it } val screenPowerState = repository.screenPowerState /** + * Notifies the power interactor that a user touch happened. + * + * @param noChangeLights If true, does not cause the keyboard backlight to turn on because of + * this event. This is set when the power key is pressed. We want the device to stay on while + * the button is down, but we're about to turn off the screen so we don't want the keyboard + * backlight to turn on again. Otherwise the lights flash on and then off and it looks weird. + */ + fun onUserTouch(noChangeLights: Boolean = false) = + repository.userTouch(noChangeLights = noChangeLights) + + /** * Wakes up the device if the device was dozing. * * @param why a string explaining why we're waking the device for debugging purposes. Should be @@ -92,9 +102,7 @@ constructor( */ fun wakeUpForFullScreenIntent() { if (repository.wakefulness.value.isAsleep() || statusBarStateController.isDozing) { - repository.wakeUp( - why = FSI_WAKE_WHY, - wakeReason = PowerManager.WAKE_REASON_APPLICATION) + repository.wakeUp(why = FSI_WAKE_WHY, wakeReason = PowerManager.WAKE_REASON_APPLICATION) } } @@ -120,8 +128,8 @@ constructor( * directly. */ fun onStartedWakingUp( - @PowerManager.WakeReason reason: Int, - powerButtonLaunchGestureTriggeredOnWakeUp: Boolean, + @PowerManager.WakeReason reason: Int, + powerButtonLaunchGestureTriggeredOnWakeUp: Boolean, ) { // If the launch gesture was previously detected, either via onCameraLaunchGestureDetected // or onFinishedGoingToSleep(), carry that state forward. It will be reset by the next @@ -210,14 +218,14 @@ constructor( * reset that flag and then return false. */ private val checkEquivalentUnlessEmitDuplicatesUnderTest: (Boolean, Boolean) -> Boolean = - { old, new -> - if (emitDuplicateWakefulnessValue) { - emitDuplicateWakefulnessValue = false - false - } else { - old == new - } + { old, new -> + if (emitDuplicateWakefulnessValue) { + emitDuplicateWakefulnessValue = false + false + } else { + old == new } + } /** * Helper method for tests to simulate the device waking up. @@ -232,14 +240,14 @@ constructor( */ @JvmOverloads fun PowerInteractor.setAwakeForTest( - @PowerManager.WakeReason reason: Int = PowerManager.WAKE_REASON_UNKNOWN, - forceEmit: Boolean = false + @PowerManager.WakeReason reason: Int = PowerManager.WAKE_REASON_UNKNOWN, + forceEmit: Boolean = false ) { emitDuplicateWakefulnessValue = forceEmit this.onStartedWakingUp( - reason = reason, - powerButtonLaunchGestureTriggeredOnWakeUp = false, + reason = reason, + powerButtonLaunchGestureTriggeredOnWakeUp = false, ) this.onFinishedWakingUp() } @@ -258,15 +266,14 @@ constructor( */ @JvmOverloads fun PowerInteractor.setAsleepForTest( - @PowerManager.GoToSleepReason sleepReason: Int = - PowerManager.GO_TO_SLEEP_REASON_MIN, - forceEmit: Boolean = false, + @PowerManager.GoToSleepReason sleepReason: Int = PowerManager.GO_TO_SLEEP_REASON_MIN, + forceEmit: Boolean = false, ) { emitDuplicateWakefulnessValue = forceEmit this.onStartedGoingToSleep(reason = sleepReason) this.onFinishedGoingToSleep( - powerButtonLaunchGestureTriggeredDuringSleep = false, + powerButtonLaunchGestureTriggeredDuringSleep = false, ) } } diff --git a/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneInteractor.kt b/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneInteractor.kt index b1440031a2a0..0abde4d5c3f4 100644 --- a/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneInteractor.kt @@ -18,7 +18,7 @@ package com.android.systemui.scene.domain.interactor import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application -import com.android.systemui.power.data.repository.PowerRepository +import com.android.systemui.power.domain.interactor.PowerInteractor import com.android.systemui.scene.data.repository.SceneContainerRepository import com.android.systemui.scene.shared.logger.SceneLogger import com.android.systemui.scene.shared.model.ObservableTransitionState @@ -48,7 +48,7 @@ class SceneInteractor constructor( @Application private val applicationScope: CoroutineScope, private val repository: SceneContainerRepository, - private val powerRepository: PowerRepository, + private val powerInteractor: PowerInteractor, private val logger: SceneLogger, ) { @@ -202,7 +202,7 @@ constructor( /** Handles a user input event. */ fun onUserInput() { - powerRepository.userTouch() + powerInteractor.onUserTouch() } /** diff --git a/packages/SystemUI/tests/src/com/android/systemui/bouncer/domain/interactor/BouncerInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/bouncer/domain/interactor/BouncerInteractorTest.kt index 6ead0e9dc1f7..296f96691447 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/bouncer/domain/interactor/BouncerInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/bouncer/domain/interactor/BouncerInteractorTest.kt @@ -291,6 +291,14 @@ class BouncerInteractorTest : SysuiTestCase() { assertThat(imeHiddenEvent).isNotNull() } + @Test + fun intentionalUserInputEvent_registersTouchEvent() = + testScope.runTest { + assertThat(utils.powerRepository.userTouchRegistered).isFalse() + underTest.onIntentionalUserInput() + assertThat(utils.powerRepository.userTouchRegistered).isTrue() + } + private fun assertTryAgainMessage( message: String?, time: Int, diff --git a/packages/SystemUI/tests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt index 3f032a45df41..7f4bbbe36768 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt @@ -341,6 +341,7 @@ class SceneInteractorTest : SysuiTestCase() { @Test fun userInput() = testScope.runTest { + assertThat(utils.powerRepository.userTouchRegistered).isFalse() underTest.onUserInput() assertThat(utils.powerRepository.userTouchRegistered).isTrue() } diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java index e6cd17f448b9..6aaa0a135b66 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java @@ -51,7 +51,6 @@ import com.android.keyguard.KeyguardSecurityModel; import com.android.systemui.SysuiTestCase; import com.android.systemui.biometrics.AuthController; import com.android.systemui.bouncer.data.repository.FakeKeyguardBouncerRepository; -import com.android.systemui.classifier.FalsingCollectorFake; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.common.ui.data.repository.FakeConfigurationRepository; import com.android.systemui.dump.DumpManager; @@ -68,7 +67,6 @@ import com.android.systemui.keyguard.domain.interactor.InWindowLauncherUnlockAni import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor; import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor; import com.android.systemui.plugins.statusbar.StatusBarStateController; -import com.android.systemui.power.data.repository.FakePowerRepository; import com.android.systemui.power.domain.interactor.PowerInteractor; import com.android.systemui.res.R; import com.android.systemui.scene.FakeWindowRootViewComponent; @@ -128,22 +126,22 @@ public class NotificationShadeWindowControllerImplTest extends SysuiTestCase { @Mock private KeyguardViewMediator mKeyguardViewMediator; @Mock private KeyguardBypassController mKeyguardBypassController; @Mock private SysuiColorExtractor mColorExtractor; - @Mock ColorExtractor.GradientColors mGradientColors; + @Mock private ColorExtractor.GradientColors mGradientColors; @Mock private DumpManager mDumpManager; @Mock private KeyguardSecurityModel mKeyguardSecurityModel; @Mock private KeyguardStateController mKeyguardStateController; @Mock private ScreenOffAnimationController mScreenOffAnimationController; @Mock private AuthController mAuthController; - @Mock private ShadeExpansionStateManager mShadeExpansionStateManager; @Mock private ShadeWindowLogger mShadeWindowLogger; @Mock private SelectedUserInteractor mSelectedUserInteractor; @Mock private UserTracker mUserTracker; @Captor private ArgumentCaptor<WindowManager.LayoutParams> mLayoutParameters; @Captor private ArgumentCaptor<StatusBarStateController.StateListener> mStateListener; + private final Executor mMainExecutor = MoreExecutors.directExecutor(); private final Executor mBackgroundExecutor = MoreExecutors.directExecutor(); - private SceneTestUtils mUtils = new SceneTestUtils(this); - private TestScope mTestScope = mUtils.getTestScope(); + private final SceneTestUtils mUtils = new SceneTestUtils(this); + private final TestScope mTestScope = mUtils.getTestScope(); private ShadeInteractor mShadeInteractor; private NotificationShadeWindowControllerImpl mNotificationShadeWindowController; @@ -167,11 +165,10 @@ public class NotificationShadeWindowControllerImplTest extends SysuiTestCase { FakeKeyguardRepository keyguardRepository = new FakeKeyguardRepository(); FakeFeatureFlagsClassic featureFlags = new FakeFeatureFlagsClassic(); FakeShadeRepository shadeRepository = new FakeShadeRepository(); - FakePowerRepository powerRepository = new FakePowerRepository(); - PowerInteractor powerInteractor = new PowerInteractor( - powerRepository, - new FalsingCollectorFake(), + PowerInteractor powerInteractor = mUtils.powerInteractor( + mUtils.getPowerRepository(), + mUtils.falsingCollector(), mScreenOffAnimationController, mStatusBarStateController); @@ -180,7 +177,7 @@ public class NotificationShadeWindowControllerImplTest extends SysuiTestCase { new SceneContainerRepository( mTestScope.getBackgroundScope(), mUtils.fakeSceneContainerConfig()), - powerRepository, + powerInteractor, mock(SceneLogger.class)); FakeConfigurationRepository configurationRepository = new FakeConfigurationRepository(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerBaseTest.java index d050c856c2e6..ff110c5437a2 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerBaseTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerBaseTest.java @@ -37,7 +37,6 @@ import com.android.keyguard.KeyguardStatusView; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.SysuiTestCase; import com.android.systemui.bouncer.data.repository.FakeKeyguardBouncerRepository; -import com.android.systemui.classifier.FalsingCollectorFake; import com.android.systemui.common.ui.data.repository.FakeConfigurationRepository; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.FakeFeatureFlagsClassic; @@ -58,7 +57,6 @@ import com.android.systemui.media.controls.pipeline.MediaDataManager; import com.android.systemui.media.controls.ui.MediaHierarchyManager; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.plugins.qs.QS; -import com.android.systemui.power.data.repository.FakePowerRepository; import com.android.systemui.power.domain.interactor.PowerInteractor; import com.android.systemui.qs.QSFragmentLegacy; import com.android.systemui.res.R; @@ -169,6 +167,7 @@ public class QuickSettingsControllerBaseTest extends SysuiTestCase { @Mock protected CastController mCastController; @Mock protected UserSwitcherInteractor mUserSwitcherInteractor; @Mock protected SelectedUserInteractor mSelectedUserInteractor; + protected FakeDisableFlagsRepository mDisableFlagsRepository = new FakeDisableFlagsRepository(); protected FakeKeyguardRepository mKeyguardRepository = new FakeKeyguardRepository(); @@ -198,12 +197,11 @@ public class QuickSettingsControllerBaseTest extends SysuiTestCase { new FakeDeviceProvisioningRepository(); deviceProvisioningRepository.setDeviceProvisioned(true); FakeFeatureFlagsClassic featureFlags = new FakeFeatureFlagsClassic(); - FakePowerRepository powerRepository = new FakePowerRepository(); FakeConfigurationRepository configurationRepository = new FakeConfigurationRepository(); - PowerInteractor powerInteractor = new PowerInteractor( - powerRepository, - new FalsingCollectorFake(), + PowerInteractor powerInteractor = mUtils.powerInteractor( + mUtils.getPowerRepository(), + mUtils.falsingCollector(), mock(ScreenOffAnimationController.class), mStatusBarStateController); @@ -212,7 +210,7 @@ public class QuickSettingsControllerBaseTest extends SysuiTestCase { new SceneContainerRepository( mTestScope.getBackgroundScope(), mUtils.fakeSceneContainerConfig()), - powerRepository, + powerInteractor, mock(SceneLogger.class)); FakeSceneContainerFlags sceneContainerFlags = new FakeSceneContainerFlags(); @@ -251,7 +249,7 @@ public class QuickSettingsControllerBaseTest extends SysuiTestCase { new InWindowLauncherUnlockAnimationRepository(), mTestScope.getBackgroundScope(), keyguardTransitionInteractor, - () -> new FakeKeyguardSurfaceBehindRepository(), + FakeKeyguardSurfaceBehindRepository::new, mock(ActivityManagerWrapper.class) ) ); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java index 1e3197730626..d1423e10ce79 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java @@ -163,7 +163,6 @@ public class StatusBarNotificationActivityStarterTest extends SysuiTestCase { @Mock private InteractionJankMonitor mJankMonitor; private FakePowerRepository mPowerRepository; - private PowerInteractor mPowerInteractor; @Mock private UserTracker mUserTracker; private final FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock()); @@ -214,7 +213,7 @@ public class StatusBarNotificationActivityStarterTest extends SysuiTestCase { UserHandle.of(ActivityManager.getCurrentUser())); mPowerRepository = new FakePowerRepository(); - mPowerInteractor = PowerInteractorFactory.create( + PowerInteractor mPowerInteractor = PowerInteractorFactory.create( mPowerRepository, new FalsingCollectorFake(), mScreenOffAnimationController, diff --git a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java index a5806001dd43..102c3fc76a61 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java @@ -93,7 +93,6 @@ import com.android.launcher3.icons.BubbleIconFactory; import com.android.systemui.SysuiTestCase; import com.android.systemui.biometrics.AuthController; import com.android.systemui.bouncer.data.repository.FakeKeyguardBouncerRepository; -import com.android.systemui.classifier.FalsingCollectorFake; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.common.ui.data.repository.FakeConfigurationRepository; import com.android.systemui.dump.DumpManager; @@ -112,7 +111,6 @@ import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor; import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor; import com.android.systemui.model.SysUiState; import com.android.systemui.plugins.statusbar.StatusBarStateController; -import com.android.systemui.power.data.repository.FakePowerRepository; import com.android.systemui.power.domain.interactor.PowerInteractor; import com.android.systemui.scene.FakeWindowRootViewComponent; import com.android.systemui.scene.SceneTestUtils; @@ -125,7 +123,6 @@ import com.android.systemui.settings.UserTracker; import com.android.systemui.shade.NotificationShadeWindowControllerImpl; import com.android.systemui.shade.NotificationShadeWindowView; import com.android.systemui.shade.ShadeController; -import com.android.systemui.shade.ShadeExpansionStateManager; import com.android.systemui.shade.ShadeWindowLogger; import com.android.systemui.shade.data.repository.FakeShadeRepository; import com.android.systemui.shade.domain.interactor.ShadeInteractor; @@ -249,8 +246,6 @@ public class BubblesTest extends SysuiTestCase { private NotificationShadeWindowView mNotificationShadeWindowView; @Mock private AuthController mAuthController; - @Mock - private ShadeExpansionStateManager mShadeExpansionStateManager; private SysUiState mSysUiState; private boolean mSysUiStateBubblesExpanded; @@ -340,8 +335,8 @@ public class BubblesTest extends SysuiTestCase { @Mock private Icon mAppBubbleIcon; - private SceneTestUtils mUtils = new SceneTestUtils(this); - private TestScope mTestScope = mUtils.getTestScope(); + private final SceneTestUtils mUtils = new SceneTestUtils(this); + private final TestScope mTestScope = mUtils.getTestScope(); private ShadeInteractor mShadeInteractor; private ShellTaskOrganizer mShellTaskOrganizer; private TaskViewTransitions mTaskViewTransitions; @@ -352,7 +347,7 @@ public class BubblesTest extends SysuiTestCase { private TestableLooper mTestableLooper; - private FakeDisplayTracker mDisplayTracker = new FakeDisplayTracker(mContext); + private final FakeDisplayTracker mDisplayTracker = new FakeDisplayTracker(mContext); private final FakeFeatureFlags mFeatureFlags = new FakeFeatureFlags(); private UserHandle mUser0; @@ -388,12 +383,11 @@ public class BubblesTest extends SysuiTestCase { FakeKeyguardRepository keyguardRepository = new FakeKeyguardRepository(); FakeFeatureFlagsClassic featureFlags = new FakeFeatureFlagsClassic(); FakeShadeRepository shadeRepository = new FakeShadeRepository(); - FakePowerRepository powerRepository = new FakePowerRepository(); FakeConfigurationRepository configurationRepository = new FakeConfigurationRepository(); PowerInteractor powerInteractor = new PowerInteractor( - powerRepository, - new FalsingCollectorFake(), + mUtils.getPowerRepository(), + mUtils.falsingCollector(), mock(ScreenOffAnimationController.class), mStatusBarStateController); @@ -402,7 +396,7 @@ public class BubblesTest extends SysuiTestCase { new SceneContainerRepository( mTestScope.getBackgroundScope(), mUtils.fakeSceneContainerConfig()), - powerRepository, + powerInteractor, mock(SceneLogger.class)); FakeSceneContainerFlags sceneContainerFlags = new FakeSceneContainerFlags(); @@ -441,7 +435,7 @@ public class BubblesTest extends SysuiTestCase { new InWindowLauncherUnlockAnimationRepository(), mTestScope.getBackgroundScope(), keyguardTransitionInteractor, - () -> new FakeKeyguardSurfaceBehindRepository(), + FakeKeyguardSurfaceBehindRepository::new, mock(ActivityManagerWrapper.class) ) ); diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/SceneTestUtils.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/SceneTestUtils.kt index 72cc08f03dac..c8869aaa018f 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/SceneTestUtils.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/SceneTestUtils.kt @@ -61,7 +61,10 @@ import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.testDispatcher import com.android.systemui.kosmos.testScope +import com.android.systemui.plugins.statusbar.StatusBarStateController import com.android.systemui.power.data.repository.FakePowerRepository +import com.android.systemui.power.data.repository.PowerRepository +import com.android.systemui.power.domain.interactor.PowerInteractor import com.android.systemui.power.domain.interactor.PowerInteractorFactory import com.android.systemui.scene.data.repository.SceneContainerRepository import com.android.systemui.scene.domain.interactor.SceneInteractor @@ -69,6 +72,7 @@ import com.android.systemui.scene.shared.flag.FakeSceneContainerFlags import com.android.systemui.scene.shared.model.SceneContainerConfig import com.android.systemui.scene.shared.model.SceneKey import com.android.systemui.shade.data.repository.FakeShadeRepository +import com.android.systemui.statusbar.phone.ScreenOffAnimationController import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionsRepository import com.android.systemui.telephony.data.repository.FakeTelephonyRepository import com.android.systemui.telephony.data.repository.TelephonyRepository @@ -137,6 +141,7 @@ class SceneTestUtils( private val falsingCollectorFake: FalsingCollector by lazy { FalsingCollectorFake() } private var falsingInteractor: FalsingInteractor? = null + private var powerInteractor: PowerInteractor? = null fun fakeSceneContainerRepository( containerConfig: SceneContainerConfig = fakeSceneContainerConfig(), @@ -159,7 +164,7 @@ class SceneTestUtils( return SceneInteractor( applicationScope = applicationScope(), repository = repository, - powerRepository = powerRepository, + powerInteractor = powerInteractor(), logger = mock(), ) } @@ -227,6 +232,7 @@ class SceneTestUtils( authenticationInteractor = authenticationInteractor, flags = sceneContainerFlags, falsingInteractor = falsingInteractor(), + powerInteractor = powerInteractor() ) } @@ -264,6 +270,22 @@ class SceneTestUtils( return falsingCollectorFake } + fun powerInteractor( + repository: PowerRepository = powerRepository, + falsingCollector: FalsingCollector = falsingCollector(), + screenOffAnimationController: ScreenOffAnimationController = mock(), + statusBarStateController: StatusBarStateController = mock(), + ): PowerInteractor { + return powerInteractor + ?: PowerInteractor( + repository = repository, + falsingCollector = falsingCollector, + screenOffAnimationController = screenOffAnimationController, + statusBarStateController = statusBarStateController, + ) + .also { powerInteractor = it } + } + private fun applicationScope(): CoroutineScope { return testScope.backgroundScope } |