diff options
13 files changed, 211 insertions, 10 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java index 956c0f51cda0..f2a544ece2cb 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java @@ -79,6 +79,7 @@ import com.android.systemui.SystemUIApplication; import com.android.systemui.dagger.qualifiers.Application; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.flags.FeatureFlags; +import com.android.systemui.keyguard.domain.interactor.KeyguardEnabledInteractor; import com.android.systemui.keyguard.ui.binder.KeyguardSurfaceBehindParamsApplier; import com.android.systemui.keyguard.ui.binder.KeyguardSurfaceBehindViewBinder; import com.android.systemui.keyguard.ui.binder.WindowManagerLockscreenVisibilityViewBinder; @@ -311,6 +312,7 @@ public class KeyguardService extends Service { } private final WindowManagerOcclusionManager mWmOcclusionManager; + private final KeyguardEnabledInteractor mKeyguardEnabledInteractor; private final Lazy<FoldGracePeriodProvider> mFoldGracePeriodProvider = new Lazy<>() { @Override @@ -335,7 +337,8 @@ public class KeyguardService extends Service { PowerInteractor powerInteractor, WindowManagerOcclusionManager windowManagerOcclusionManager, Lazy<SceneInteractor> sceneInteractorLazy, - @Main Executor mainExecutor) { + @Main Executor mainExecutor, + KeyguardEnabledInteractor keyguardEnabledInteractor) { super(); mKeyguardViewMediator = keyguardViewMediator; mKeyguardLifecyclesDispatcher = keyguardLifecyclesDispatcher; @@ -360,6 +363,7 @@ public class KeyguardService extends Service { } mWmOcclusionManager = windowManagerOcclusionManager; + mKeyguardEnabledInteractor = keyguardEnabledInteractor; } @Override @@ -598,6 +602,7 @@ public class KeyguardService extends Service { public void setKeyguardEnabled(boolean enabled) { trace("setKeyguardEnabled enabled" + enabled); checkPermission(); + mKeyguardEnabledInteractor.notifyKeyguardEnabled(enabled); mKeyguardViewMediator.setKeyguardEnabled(enabled); } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepository.kt b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepository.kt index 8a53dd18541c..a2bbcadbf8c7 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepository.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepository.kt @@ -109,6 +109,19 @@ interface KeyguardRepository { ) val isKeyguardGoingAway: Flow<Boolean> + /** + * Whether the keyguard is enabled, per [KeyguardService]. If the keyguard is not enabled, the + * lockscreen cannot be shown and the device will go from AOD/DOZING directly to GONE. + * + * Keyguard can be disabled by selecting Security: "None" in settings, or by apps that hold + * permission to do so (such as Phone). + * + * If the keyguard is disabled while we're locked, we will transition to GONE unless we're in + * lockdown mode. If the keyguard is re-enabled, we'll transition back to LOCKSCREEN if we were + * locked when it was disabled. + */ + val isKeyguardEnabled: StateFlow<Boolean> + /** Is the always-on display available to be used? */ val isAodAvailable: StateFlow<Boolean> @@ -269,6 +282,9 @@ interface KeyguardRepository { "'keyguardDoneAnimationsFinished' is when the GONE transition is finished." ) fun keyguardDoneAnimationsFinished() + + /** Sets whether the keyguard is enabled (see [isKeyguardEnabled]). */ + fun setKeyguardEnabled(enabled: Boolean) } /** Encapsulates application state for the keyguard. */ @@ -439,6 +455,9 @@ constructor( awaitClose { keyguardStateController.removeCallback(callback) } } + private val _isKeyguardEnabled = MutableStateFlow(true) + override val isKeyguardEnabled: StateFlow<Boolean> = _isKeyguardEnabled.asStateFlow() + private val _isDozing = MutableStateFlow(statusBarStateController.isDozing) override val isDozing: StateFlow<Boolean> = _isDozing.asStateFlow() @@ -664,6 +683,10 @@ constructor( _clockShouldBeCentered.value = shouldBeCentered } + override fun setKeyguardEnabled(enabled: Boolean) { + _isKeyguardEnabled.value = enabled + } + private fun statusBarStateIntToObject(value: Int): StatusBarState { return when (value) { 0 -> StatusBarState.SHADE diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractor.kt index a306954b7d8f..01109af79c1d 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractor.kt @@ -22,6 +22,7 @@ import com.android.app.tracing.coroutines.launch import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dagger.qualifiers.Main +import com.android.systemui.deviceentry.data.repository.DeviceEntryRepository import com.android.systemui.keyguard.KeyguardWmStateRefactor import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepository import com.android.systemui.keyguard.shared.model.BiometricUnlockMode.Companion.isWakeAndUnlock @@ -50,6 +51,7 @@ constructor( private val keyguardInteractor: KeyguardInteractor, powerInteractor: PowerInteractor, keyguardOcclusionInteractor: KeyguardOcclusionInteractor, + val deviceEntryRepository: DeviceEntryRepository, ) : TransitionInteractor( fromState = KeyguardState.AOD, @@ -125,7 +127,12 @@ constructor( val shouldTransitionToOccluded = !KeyguardWmStateRefactor.isEnabled && isKeyguardOccludedLegacy - if (canDismissLockscreen) { + val shouldTransitionToGone = + (!KeyguardWmStateRefactor.isEnabled && canDismissLockscreen) || + (KeyguardWmStateRefactor.isEnabled && + !deviceEntryRepository.isLockscreenEnabled()) + + if (shouldTransitionToGone) { startTransitionTo( toState = KeyguardState.GONE, ) diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractor.kt index 115fc3610ac8..7d3de306d621 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractor.kt @@ -22,6 +22,7 @@ import com.android.systemui.communal.domain.interactor.CommunalInteractor import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dagger.qualifiers.Main +import com.android.systemui.deviceentry.data.repository.DeviceEntryRepository import com.android.systemui.keyguard.KeyguardWmStateRefactor import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepository import com.android.systemui.keyguard.shared.model.BiometricUnlockMode.Companion.isWakeAndUnlock @@ -50,6 +51,7 @@ constructor( powerInteractor: PowerInteractor, private val communalInteractor: CommunalInteractor, keyguardOcclusionInteractor: KeyguardOcclusionInteractor, + val deviceEntryRepository: DeviceEntryRepository, ) : TransitionInteractor( fromState = KeyguardState.DOZING, @@ -99,7 +101,9 @@ constructor( canTransitionToGoneOnWake, primaryBouncerShowing) -> startTransitionTo( - if (isWakeAndUnlock(biometricUnlockState.mode)) { + if (!deviceEntryRepository.isLockscreenEnabled()) { + KeyguardState.GONE + } else if (isWakeAndUnlock(biometricUnlockState.mode)) { KeyguardState.GONE } else if (canTransitionToGoneOnWake) { KeyguardState.GONE @@ -145,7 +149,12 @@ constructor( !isWakeAndUnlock(biometricUnlockState.mode) ) { startTransitionTo( - if (canDismissLockscreen) { + if (!KeyguardWmStateRefactor.isEnabled && canDismissLockscreen) { + KeyguardState.GONE + } else if ( + KeyguardWmStateRefactor.isEnabled && + !deviceEntryRepository.isLockscreenEnabled() + ) { KeyguardState.GONE } else if (primaryBouncerShowing) { KeyguardState.PRIMARY_BOUNCER @@ -153,7 +162,8 @@ constructor( KeyguardState.GLANCEABLE_HUB } else { KeyguardState.LOCKSCREEN - } + }, + ownerReason = "waking from dozing" ) } } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractor.kt index 2b3732f75812..8ca29c80c2e9 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractor.kt @@ -25,6 +25,7 @@ import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.keyguard.KeyguardWmStateRefactor import com.android.systemui.keyguard.data.repository.BiometricSettingsRepository +import com.android.systemui.keyguard.data.repository.KeyguardRepository import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepository import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.keyguard.shared.model.TransitionModeOnCanceled @@ -36,6 +37,7 @@ import kotlin.time.Duration.Companion.milliseconds import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.filter import kotlinx.coroutines.launch @SysUISingleton @@ -52,6 +54,8 @@ constructor( private val communalInteractor: CommunalInteractor, keyguardOcclusionInteractor: KeyguardOcclusionInteractor, private val biometricSettingsRepository: BiometricSettingsRepository, + private val keyguardRepository: KeyguardRepository, + private val keyguardEnabledInteractor: KeyguardEnabledInteractor, ) : TransitionInteractor( fromState = KeyguardState.GONE, @@ -93,6 +97,21 @@ constructor( startTransitionTo(to, ownerReason = "User initiated lockdown") } } + + scope.launch { + keyguardRepository.isKeyguardEnabled + .filterRelevantKeyguardStateAnd { enabled -> enabled } + .sample(keyguardEnabledInteractor.showKeyguardWhenReenabled) + .filter { reshow -> reshow } + .collect { + startTransitionTo( + KeyguardState.LOCKSCREEN, + ownerReason = + "Keyguard was re-enabled, and we weren't GONE when it " + + "was originally disabled" + ) + } + } } else { scope.launch("$TAG#listenForGoneToLockscreenOrHub") { keyguardInteractor.isKeyguardShowing diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardEnabledInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardEnabledInteractor.kt new file mode 100644 index 000000000000..8dede01cd20b --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardEnabledInteractor.kt @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.keyguard.domain.interactor + +import com.android.systemui.dagger.SysUISingleton +import com.android.systemui.dagger.qualifiers.Application +import com.android.systemui.keyguard.data.repository.BiometricSettingsRepository +import com.android.systemui.keyguard.data.repository.KeyguardRepository +import com.android.systemui.keyguard.shared.model.KeyguardState +import com.android.systemui.util.kotlin.Utils.Companion.sample as sampleCombine +import javax.inject.Inject +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.launch + +/** + * Logic around the keyguard being enabled/disabled, per [KeyguardService]. If the keyguard is not + * enabled, the lockscreen cannot be shown and the device will go from AOD/DOZING directly to GONE. + * + * Keyguard can be disabled by selecting Security: "None" in settings, or by apps that hold + * permission to do so (such as Phone). Some CTS tests also disable keyguard in onCreate or onStart + * rather than simply dismissing the keyguard or setting up the device to have Security: None, for + * reasons unknown. + */ +@SysUISingleton +class KeyguardEnabledInteractor +@Inject +constructor( + @Application scope: CoroutineScope, + val repository: KeyguardRepository, + val biometricSettingsRepository: BiometricSettingsRepository, + transitionInteractor: KeyguardTransitionInteractor, +) { + + init { + /** + * Whenever keyguard is disabled, transition to GONE unless we're in lockdown or already + * GONE. + */ + scope.launch { + repository.isKeyguardEnabled + .filter { enabled -> !enabled } + .sampleCombine( + biometricSettingsRepository.isCurrentUserInLockdown, + transitionInteractor.currentTransitionInfoInternal, + ) + .collect { (_, inLockdown, currentTransitionInfo) -> + if (currentTransitionInfo.to != KeyguardState.GONE && !inLockdown) { + transitionInteractor.startDismissKeyguardTransition("keyguard disabled") + } + } + } + } + + /** + * Whether we need to show the keyguard when the keyguard is re-enabled, since we hid it when it + * became disabled. + */ + val showKeyguardWhenReenabled: Flow<Boolean> = + repository.isKeyguardEnabled + // Whenever the keyguard is disabled... + .filter { enabled -> !enabled } + .sampleCombine( + transitionInteractor.currentTransitionInfoInternal, + biometricSettingsRepository.isCurrentUserInLockdown + ) + .map { (_, transitionInfo, inLockdown) -> + // ...we hide the keyguard, if it's showing and we're not in lockdown. In that case, + // we want to remember that and re-show it when keyguard is enabled again. + transitionInfo.to != KeyguardState.GONE && !inLockdown + } + + fun notifyKeyguardEnabled(enabled: Boolean) { + repository.setKeyguardEnabled(enabled) + } +} diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/WindowManagerLockscreenVisibilityInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/WindowManagerLockscreenVisibilityInteractor.kt index 8ba09bd2e766..fb65a6dacbe3 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/WindowManagerLockscreenVisibilityInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/WindowManagerLockscreenVisibilityInteractor.kt @@ -176,7 +176,8 @@ constructor( if (!returningToGoneAfterCancellation) { // By default, apply the lockscreen visibility of the current state. - KeyguardState.lockscreenVisibleInState(currentState) + deviceEntryInteractor.get().isLockscreenEnabled() && + KeyguardState.lockscreenVisibleInState(currentState) } else { // If we're transitioning to GONE after a prior canceled transition from // GONE, then this is the camera launch transition from an asleep state back diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt index fa3fe5c80adb..e02fb29d1070 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt @@ -30,6 +30,7 @@ import com.android.systemui.bouncer.data.repository.fakeKeyguardBouncerRepositor import com.android.systemui.communal.domain.interactor.communalInteractor import com.android.systemui.communal.domain.interactor.setCommunalAvailable import com.android.systemui.communal.shared.model.CommunalScenes +import com.android.systemui.deviceentry.data.repository.fakeDeviceEntryRepository import com.android.systemui.dock.fakeDockManager import com.android.systemui.flags.BrokenWithSceneContainer import com.android.systemui.flags.DisableSceneContainer @@ -511,7 +512,6 @@ class KeyguardTransitionScenariosTest(flags: FlagsParameterization?) : SysuiTest .startedTransition( to = KeyguardState.LOCKSCREEN, from = KeyguardState.DOZING, - ownerName = "FromDozingTransitionInteractor", animatorAssertion = { it.isNotNull() } ) @@ -600,7 +600,6 @@ class KeyguardTransitionScenariosTest(flags: FlagsParameterization?) : SysuiTest .startedTransition( to = KeyguardState.PRIMARY_BOUNCER, from = KeyguardState.DOZING, - ownerName = "FromDozingTransitionInteractor", animatorAssertion = { it.isNotNull() } ) @@ -618,6 +617,7 @@ class KeyguardTransitionScenariosTest(flags: FlagsParameterization?) : SysuiTest // WHEN the device wakes up without a keyguard keyguardRepository.setKeyguardShowing(false) keyguardRepository.setKeyguardDismissible(true) + kosmos.fakeDeviceEntryRepository.setLockscreenEnabled(false) powerInteractor.setAwakeForTest() advanceTimeBy(60L) @@ -625,7 +625,6 @@ class KeyguardTransitionScenariosTest(flags: FlagsParameterization?) : SysuiTest .startedTransition( to = KeyguardState.GONE, from = KeyguardState.DOZING, - ownerName = "FromDozingTransitionInteractor", animatorAssertion = { it.isNotNull() } ) @@ -683,7 +682,6 @@ class KeyguardTransitionScenariosTest(flags: FlagsParameterization?) : SysuiTest .startedTransition( to = KeyguardState.GLANCEABLE_HUB, from = KeyguardState.DOZING, - ownerName = FromDozingTransitionInteractor::class.simpleName, animatorAssertion = { it.isNotNull() } ) diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardRepository.kt index 96a40494b11a..1a45c4298691 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardRepository.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardRepository.kt @@ -125,6 +125,9 @@ class FakeKeyguardRepository @Inject constructor() : KeyguardRepository { private val _isEncryptedOrLockdown = MutableStateFlow(true) override val isEncryptedOrLockdown: Flow<Boolean> = _isEncryptedOrLockdown + private val _isKeyguardEnabled = MutableStateFlow(true) + override val isKeyguardEnabled: StateFlow<Boolean> = _isKeyguardEnabled.asStateFlow() + override val topClippingBounds = MutableStateFlow<Int?>(null) override fun setQuickSettingsVisible(isVisible: Boolean) { @@ -184,6 +187,10 @@ class FakeKeyguardRepository @Inject constructor() : KeyguardRepository { _clockShouldBeCentered.value = shouldBeCentered } + override fun setKeyguardEnabled(enabled: Boolean) { + _isKeyguardEnabled.value = enabled + } + fun dozeTimeTick(millis: Long) { _dozeTimeTick.value = millis } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractorKosmos.kt index bbe37c18dd08..42af25ed51a7 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractorKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractorKosmos.kt @@ -16,6 +16,7 @@ package com.android.systemui.keyguard.domain.interactor +import com.android.systemui.deviceentry.data.repository.deviceEntryRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.applicationCoroutineScope @@ -34,5 +35,6 @@ val Kosmos.fromAodTransitionInteractor by keyguardInteractor = keyguardInteractor, powerInteractor = powerInteractor, keyguardOcclusionInteractor = keyguardOcclusionInteractor, + deviceEntryRepository = deviceEntryRepository, ) } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractorKosmos.kt index 23dcd965c028..edf77a007efd 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractorKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractorKosmos.kt @@ -17,6 +17,7 @@ package com.android.systemui.keyguard.domain.interactor import com.android.systemui.communal.domain.interactor.communalInteractor +import com.android.systemui.deviceentry.data.repository.deviceEntryRepository import com.android.systemui.keyguard.data.repository.keyguardTransitionRepository import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.applicationCoroutineScope @@ -36,5 +37,6 @@ var Kosmos.fromDozingTransitionInteractor by communalInteractor = communalInteractor, powerInteractor = powerInteractor, keyguardOcclusionInteractor = keyguardOcclusionInteractor, + deviceEntryRepository = deviceEntryRepository, ) } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractorKosmos.kt index 604d9e435e8e..4039ee6ea904 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractorKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractorKosmos.kt @@ -19,6 +19,7 @@ package com.android.systemui.keyguard.domain.interactor import com.android.systemui.communal.domain.interactor.communalInteractor import com.android.systemui.keyguard.data.repository.biometricSettingsRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository +import com.android.systemui.keyguard.data.repository.keyguardRepository import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.applicationCoroutineScope import com.android.systemui.kosmos.testDispatcher @@ -38,5 +39,7 @@ val Kosmos.fromGoneTransitionInteractor by communalInteractor = communalInteractor, keyguardOcclusionInteractor = keyguardOcclusionInteractor, biometricSettingsRepository = biometricSettingsRepository, + keyguardRepository = keyguardRepository, + keyguardEnabledInteractor = keyguardEnabledInteractor, ) } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardEnabledInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardEnabledInteractorKosmos.kt new file mode 100644 index 000000000000..0667a6b9536a --- /dev/null +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardEnabledInteractorKosmos.kt @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.keyguard.domain.interactor + +import com.android.systemui.keyguard.data.repository.biometricSettingsRepository +import com.android.systemui.keyguard.data.repository.keyguardRepository +import com.android.systemui.kosmos.Kosmos +import com.android.systemui.kosmos.applicationCoroutineScope + +val Kosmos.keyguardEnabledInteractor by + Kosmos.Fixture { + KeyguardEnabledInteractor( + applicationCoroutineScope, + keyguardRepository, + biometricSettingsRepository, + keyguardTransitionInteractor, + ) + } |