diff options
| author | 2024-03-13 21:15:20 +0000 | |
|---|---|---|
| committer | 2024-03-14 12:32:47 +0000 | |
| commit | 9c6110ae94537e7af18fb24c2554e778ea74878c (patch) | |
| tree | 2f177a83b6cfeda9141725b47ba0d848ee124a8c | |
| parent | e4fdb75f3f16e7c5757760a7446e30c82bc57c67 (diff) | |
Fix swipe up to unlock, then swipe down
This results in a transition to GONE, but if the user
swipes back down it can be reversed back to LOCKSCREEN.
The KeyguardWmStateRefactor fixes this whole path, so
this should be a very temporary patch until that code
is active.
Fixes: 328590903
Test: manual - swipe up to unlock, but then back
Flag: ACONFIG com.android.systemui.migrate_clocks_to_blueprint
TEAMFOOD
Change-Id: I3522a10221576b6c466fd0e3eb402798c103fa06
13 files changed, 38 insertions, 8 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt index 24c651f3c702..a9541d962639 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt @@ -61,6 +61,7 @@ class KeyguardInteractorTest : SysuiTestCase() { private val testScope = kosmos.testScope private val repository by lazy { kosmos.fakeKeyguardRepository } private val sceneInteractor by lazy { kosmos.sceneInteractor } + private val fromGoneTransitionInteractor by lazy { kosmos.fromGoneTransitionInteractor } private val commandQueue by lazy { FakeCommandQueue() } private val bouncerRepository = FakeKeyguardBouncerRepository() private val shadeRepository = FakeShadeRepository() @@ -79,6 +80,7 @@ class KeyguardInteractorTest : SysuiTestCase() { shadeRepository = shadeRepository, keyguardTransitionInteractor = kosmos.keyguardTransitionInteractor, sceneInteractorProvider = { sceneInteractor }, + fromGoneTransitionInteractor = { fromGoneTransitionInteractor }, ) } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java index 43a8b40a3150..3b34750756b4 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java @@ -40,6 +40,7 @@ import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STR import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN; import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_FOR_UNATTENDED_UPDATE; import static com.android.systemui.DejankUtils.whitelistIpcs; +import static com.android.systemui.Flags.migrateClocksToBlueprint; import static com.android.systemui.Flags.notifyPowerManagerUserActivityBackground; import static com.android.systemui.Flags.refactorGetCurrentUser; import static com.android.systemui.keyguard.ui.viewmodel.LockscreenToDreamingTransitionViewModel.DREAMING_ANIMATION_DURATION_MS; @@ -3401,6 +3402,11 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, mSurfaceBehindRemoteAnimationFinishedCallback = null; } } + + // Ensure that keyguard becomes visible if the going away animation is canceled + if (showKeyguard && !KeyguardWmStateRefactor.isEnabled() && migrateClocksToBlueprint()) { + mKeyguardInteractor.showKeyguard(); + } } private void adjustStatusBarLocked() { 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 d5a9bd19d766..4a3232e755bd 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 @@ -71,6 +71,10 @@ constructor( listenForGoneToDreamingLockscreenHosted() } + fun showKeyguard() { + scope.launch { startTransitionTo(KeyguardState.LOCKSCREEN) } + } + // Primarily for when the user chooses to lock down the device private fun listenForGoneToLockscreenOrHub() { if (KeyguardWmStateRefactor.isEnabled) { diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt index 773497383f0b..283f1601846b 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt @@ -83,6 +83,7 @@ constructor( shadeRepository: ShadeRepository, keyguardTransitionInteractor: KeyguardTransitionInteractor, sceneInteractorProvider: Provider<SceneInteractor>, + private val fromGoneTransitionInteractor: Provider<FromGoneTransitionInteractor>, ) { // TODO(b/296118689): move to a repository private val _sharedNotificationContainerBounds = MutableStateFlow(NotificationContainerBounds()) @@ -383,6 +384,11 @@ constructor( repository.topClippingBounds.value = top } + /** Temporary shim, until [KeyguardWmStateRefactor] is enabled */ + fun showKeyguard() { + fromGoneTransitionInteractor.get().showKeyguard() + } + companion object { private const val TAG = "KeyguardInteractor" } 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 c31c625dff50..1ee26db81826 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java @@ -196,7 +196,8 @@ public class NotificationShadeWindowControllerImplTest extends SysuiTestCase { new ConfigurationInteractor(configurationRepository), shadeRepository, keyguardTransitionInteractor, - () -> sceneInteractor); + () -> sceneInteractor, + () -> mKosmos.getFromGoneTransitionInteractor()); CommunalInteractor communalInteractor = mKosmos.getCommunalInteractor(); mFromLockscreenTransitionInteractor = mKosmos.getFromLockscreenTransitionInteractor(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerImplBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerImplBaseTest.java index a077164ba18e..3ed8b28bd780 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerImplBaseTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerImplBaseTest.java @@ -223,7 +223,8 @@ public class QuickSettingsControllerImplBaseTest extends SysuiTestCase { new ConfigurationInteractor(configurationRepository), mShadeRepository, keyguardTransitionInteractor, - () -> sceneInteractor); + () -> sceneInteractor, + () -> mKosmos.getFromGoneTransitionInteractor()); mFromLockscreenTransitionInteractor = mKosmos.getFromLockscreenTransitionInteractor(); mFromPrimaryBouncerTransitionInteractor = diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarStateControllerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarStateControllerImplTest.kt index 103dcb7dda4b..dcd000aaa011 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarStateControllerImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarStateControllerImplTest.kt @@ -45,6 +45,7 @@ import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepos import com.android.systemui.keyguard.domain.interactor.FromLockscreenTransitionInteractor import com.android.systemui.keyguard.domain.interactor.FromPrimaryBouncerTransitionInteractor import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor +import com.android.systemui.keyguard.domain.interactor.fromGoneTransitionInteractor import com.android.systemui.keyguard.domain.interactor.fromLockscreenTransitionInteractor import com.android.systemui.keyguard.domain.interactor.fromPrimaryBouncerTransitionInteractor import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor @@ -153,6 +154,7 @@ class StatusBarStateControllerImplTest : SysuiTestCase() { shadeRepository, keyguardTransitionInteractor, { kosmos.sceneInteractor }, + { kosmos.fromGoneTransitionInteractor }, ) whenever(deviceEntryUdfpsInteractor.isUdfpsSupported).thenReturn(MutableStateFlow(false)) diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.java index 1748cffcddda..d9e9c596ee4a 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.java @@ -177,7 +177,8 @@ public class KeyguardStatusBarViewControllerTest extends SysuiTestCase { new ConfigurationInteractor(new FakeConfigurationRepository()), new FakeShadeRepository(), keyguardTransitionInteractor, - () -> mKosmos.getSceneInteractor()); + () -> mKosmos.getSceneInteractor(), + () -> mKosmos.getFromGoneTransitionInteractor()); mViewModel = new KeyguardStatusBarViewModel( mTestScope.getBackgroundScope(), diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModelTest.kt index 76913e8e15ee..e4b9f102c51c 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModelTest.kt @@ -24,6 +24,7 @@ import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor import com.android.systemui.coroutines.collectLastValue import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor +import com.android.systemui.keyguard.domain.interactor.fromGoneTransitionInteractor import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor import com.android.systemui.keyguard.shared.model.StatusBarState import com.android.systemui.kosmos.testScope @@ -63,9 +64,9 @@ class KeyguardStatusBarViewModelTest : SysuiTestCase() { ConfigurationInteractor(FakeConfigurationRepository()), FakeShadeRepository(), kosmos.keyguardTransitionInteractor, - ) { - kosmos.sceneInteractor - } + { kosmos.sceneInteractor }, + { kosmos.fromGoneTransitionInteractor }, + ) private val keyguardStatusBarInteractor = KeyguardStatusBarInteractor( FakeKeyguardStatusBarRepository(), 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 19f31d55d4a4..ec27f48f9570 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java @@ -441,7 +441,8 @@ public class BubblesTest extends SysuiTestCase { new ConfigurationInteractor(configurationRepository), shadeRepository, keyguardTransitionInteractor, - () -> sceneInteractor); + () -> sceneInteractor, + () -> mKosmos.getFromGoneTransitionInteractor()); mFromLockscreenTransitionInteractor = mKosmos.getFromLockscreenTransitionInteractor(); mFromPrimaryBouncerTransitionInteractor = 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 3893a9b74b2a..00cdc337bc06 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 @@ -51,6 +51,7 @@ object KeyguardInteractorFactory { configurationRepository: FakeConfigurationRepository = FakeConfigurationRepository(), shadeRepository: FakeShadeRepository = FakeShadeRepository(), sceneInteractor: SceneInteractor = mock(), + fromGoneTransitionInteractor: FromGoneTransitionInteractor = mock(), powerInteractor: PowerInteractor = PowerInteractorFactory.create().powerInteractor, ): WithDependencies { // Mock this until the class is replaced by kosmos @@ -77,6 +78,7 @@ object KeyguardInteractorFactory { sceneInteractorProvider = { sceneInteractor }, keyguardTransitionInteractor = keyguardTransitionInteractor, powerInteractor = powerInteractor, + fromGoneTransitionInteractor = { fromGoneTransitionInteractor }, ), ) } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorKosmos.kt index 5140a9f5c2ba..d61bc9f559bb 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorKosmos.kt @@ -26,7 +26,7 @@ import com.android.systemui.scene.shared.flag.sceneContainerFlags import com.android.systemui.shade.data.repository.shadeRepository import com.android.systemui.statusbar.commandQueue -val Kosmos.keyguardInteractor by +val Kosmos.keyguardInteractor: KeyguardInteractor by Kosmos.Fixture { KeyguardInteractor( repository = keyguardRepository, @@ -38,5 +38,6 @@ val Kosmos.keyguardInteractor by shadeRepository = shadeRepository, keyguardTransitionInteractor = keyguardTransitionInteractor, sceneInteractorProvider = { sceneInteractor }, + fromGoneTransitionInteractor = { fromGoneTransitionInteractor }, ) } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/kosmos/KosmosJavaAdapter.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/kosmos/KosmosJavaAdapter.kt index 3fc5af1a50ab..e861892252fa 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/kosmos/KosmosJavaAdapter.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/kosmos/KosmosJavaAdapter.kt @@ -34,6 +34,7 @@ import com.android.systemui.globalactions.domain.interactor.globalActionsInterac import com.android.systemui.jank.interactionJankMonitor import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository +import com.android.systemui.keyguard.domain.interactor.fromGoneTransitionInteractor import com.android.systemui.keyguard.domain.interactor.fromLockscreenTransitionInteractor import com.android.systemui.keyguard.domain.interactor.fromPrimaryBouncerTransitionInteractor import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor @@ -92,6 +93,7 @@ class KosmosJavaAdapter( val fromPrimaryBouncerTransitionInteractor by lazy { kosmos.fromPrimaryBouncerTransitionInteractor } + val fromGoneTransitionInteractor by lazy { kosmos.fromGoneTransitionInteractor } val globalActionsInteractor by lazy { kosmos.globalActionsInteractor } val sceneDataSource by lazy { kosmos.sceneDataSource } |