Loading packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorTest.java +8 −14 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; Loading Loading @@ -65,6 +66,7 @@ import com.android.systemui.statusbar.notification.collection.listbuilder.plugga import com.android.systemui.statusbar.notification.collection.provider.VisualStabilityProvider; import com.android.systemui.statusbar.notification.domain.interactor.SeenNotificationsInteractor; import com.android.systemui.statusbar.policy.HeadsUpManager; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.kotlin.JavaAdapter; import com.android.systemui.util.time.FakeSystemClock; Loading Loading @@ -98,6 +100,7 @@ public class VisualStabilityCoordinatorTest extends SysuiTestCase { @Mock private VisibilityLocationProvider mVisibilityLocationProvider; @Mock private VisualStabilityProvider mVisualStabilityProvider; @Mock private VisualStabilityCoordinatorLogger mLogger; @Mock private KeyguardStateController mKeyguardStateController; @Captor private ArgumentCaptor<WakefulnessLifecycle.Observer> mWakefulnessObserverCaptor; @Captor private ArgumentCaptor<StatusBarStateController.StateListener> mSBStateListenerCaptor; Loading Loading @@ -138,6 +141,7 @@ public class VisualStabilityCoordinatorTest extends SysuiTestCase { mKosmos.getCommunalSceneInteractor(), mKosmos.getShadeInteractor(), mKosmos.getKeyguardTransitionInteractor(), mKeyguardStateController, mLogger); mCoordinator.attach(mNotifPipeline); mTestScope.getTestScheduler().runCurrent(); Loading Loading @@ -522,23 +526,13 @@ public class VisualStabilityCoordinatorTest extends SysuiTestCase { @EnableFlags(Flags.FLAG_CHECK_LOCKSCREEN_GONE_TRANSITION) public void testNotLockscreenInGoneTransition_invalidationCalled() { // GIVEN visual stability is being maintained b/c animation is playing mKosmos.getKeyguardTransitionRepository().sendTransitionStepJava( mTestScope, new TransitionStep( KeyguardState.LOCKSCREEN, KeyguardState.GONE, 1f, TransitionState.RUNNING), /* validateStep = */ false); mTestScope.getTestScheduler().runCurrent(); doReturn(true).when(mKeyguardStateController).isKeyguardFadingAway(); mCoordinator.mKeyguardFadeAwayAnimationCallback.onKeyguardFadingAwayChanged(); assertFalse(mNotifStabilityManager.isPipelineRunAllowed()); // WHEN the animation has stopped playing mKosmos.getKeyguardTransitionRepository().sendTransitionStepJava( mTestScope, new TransitionStep( KeyguardState.LOCKSCREEN, KeyguardState.GONE, 1f, TransitionState.FINISHED), /* validateStep = */ false); mTestScope.getTestScheduler().runCurrent(); doReturn(false).when(mKeyguardStateController).isKeyguardFadingAway(); mCoordinator.mKeyguardFadeAwayAnimationCallback.onKeyguardFadingAwayChanged(); // invalidate is called, b/c we were previously suppressing the pipeline from running verifyStabilityManagerWasInvalidated(times(1)); Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinator.java +15 −7 Original line number Diff line number Diff line Loading @@ -29,11 +29,9 @@ import com.android.systemui.dagger.qualifiers.Background; import com.android.systemui.dump.DumpManager; import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor; import com.android.systemui.keyguard.shared.model.Edge; import com.android.systemui.keyguard.shared.model.KeyguardState; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.scene.shared.flag.SceneContainerFlag; import com.android.systemui.scene.shared.model.Scenes; import com.android.systemui.shade.domain.interactor.ShadeAnimationInteractor; import com.android.systemui.shade.domain.interactor.ShadeInteractor; import com.android.systemui.statusbar.notification.VisibilityLocationProvider; Loading @@ -46,6 +44,7 @@ import com.android.systemui.statusbar.notification.collection.provider.VisualSta import com.android.systemui.statusbar.notification.domain.interactor.SeenNotificationsInteractor; import com.android.systemui.statusbar.notification.shared.NotificationMinimalism; import com.android.systemui.statusbar.policy.HeadsUpManager; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.concurrency.DelayableExecutor; import com.android.systemui.util.kotlin.BooleanFlowOperators; import com.android.systemui.util.kotlin.JavaAdapter; Loading Loading @@ -78,6 +77,7 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable { private final CommunalSceneInteractor mCommunalSceneInteractor; private final ShadeInteractor mShadeInteractor; private final KeyguardTransitionInteractor mKeyguardTransitionInteractor; private final KeyguardStateController mKeyguardStateController; private final VisualStabilityCoordinatorLogger mLogger; private boolean mSleepy = true; Loading Loading @@ -120,6 +120,7 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable { CommunalSceneInteractor communalSceneInteractor, ShadeInteractor shadeInteractor, KeyguardTransitionInteractor keyguardTransitionInteractor, KeyguardStateController keyguardStateController, VisualStabilityCoordinatorLogger logger) { mHeadsUpManager = headsUpManager; mShadeAnimationInteractor = shadeAnimationInteractor; Loading @@ -133,6 +134,7 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable { mCommunalSceneInteractor = communalSceneInteractor; mShadeInteractor = shadeInteractor; mKeyguardTransitionInteractor = keyguardTransitionInteractor; mKeyguardStateController = keyguardStateController; mLogger = logger; dumpManager.registerDumpable(this); Loading Loading @@ -162,17 +164,23 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable { KeyguardState.LOCKSCREEN), this::onLockscreenKeyguardStateTransitionValueChanged); } if (Flags.checkLockscreenGoneTransition()) { mJavaAdapter.alwaysCollectFlow(mKeyguardTransitionInteractor.isInTransition( Edge.create(KeyguardState.LOCKSCREEN, Scenes.Gone), Edge.create(KeyguardState.LOCKSCREEN, KeyguardState.GONE)), this::onLockscreenInGoneTransitionChanged); mKeyguardStateController.addCallback(mKeyguardFadeAwayAnimationCallback); } pipeline.setVisualStabilityManager(mNotifStabilityManager); } final KeyguardStateController.Callback mKeyguardFadeAwayAnimationCallback = new KeyguardStateController.Callback() { @Override public void onKeyguardFadingAwayChanged() { onLockscreenInGoneTransitionChanged( mKeyguardStateController.isKeyguardFadingAway()); } }; // TODO(b/203826051): Ensure stability manager can allow reordering off-screen // HUNs to the top of the shade private final NotifStabilityManager mNotifStabilityManager = Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorTest.java +8 −14 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; Loading Loading @@ -65,6 +66,7 @@ import com.android.systemui.statusbar.notification.collection.listbuilder.plugga import com.android.systemui.statusbar.notification.collection.provider.VisualStabilityProvider; import com.android.systemui.statusbar.notification.domain.interactor.SeenNotificationsInteractor; import com.android.systemui.statusbar.policy.HeadsUpManager; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.kotlin.JavaAdapter; import com.android.systemui.util.time.FakeSystemClock; Loading Loading @@ -98,6 +100,7 @@ public class VisualStabilityCoordinatorTest extends SysuiTestCase { @Mock private VisibilityLocationProvider mVisibilityLocationProvider; @Mock private VisualStabilityProvider mVisualStabilityProvider; @Mock private VisualStabilityCoordinatorLogger mLogger; @Mock private KeyguardStateController mKeyguardStateController; @Captor private ArgumentCaptor<WakefulnessLifecycle.Observer> mWakefulnessObserverCaptor; @Captor private ArgumentCaptor<StatusBarStateController.StateListener> mSBStateListenerCaptor; Loading Loading @@ -138,6 +141,7 @@ public class VisualStabilityCoordinatorTest extends SysuiTestCase { mKosmos.getCommunalSceneInteractor(), mKosmos.getShadeInteractor(), mKosmos.getKeyguardTransitionInteractor(), mKeyguardStateController, mLogger); mCoordinator.attach(mNotifPipeline); mTestScope.getTestScheduler().runCurrent(); Loading Loading @@ -522,23 +526,13 @@ public class VisualStabilityCoordinatorTest extends SysuiTestCase { @EnableFlags(Flags.FLAG_CHECK_LOCKSCREEN_GONE_TRANSITION) public void testNotLockscreenInGoneTransition_invalidationCalled() { // GIVEN visual stability is being maintained b/c animation is playing mKosmos.getKeyguardTransitionRepository().sendTransitionStepJava( mTestScope, new TransitionStep( KeyguardState.LOCKSCREEN, KeyguardState.GONE, 1f, TransitionState.RUNNING), /* validateStep = */ false); mTestScope.getTestScheduler().runCurrent(); doReturn(true).when(mKeyguardStateController).isKeyguardFadingAway(); mCoordinator.mKeyguardFadeAwayAnimationCallback.onKeyguardFadingAwayChanged(); assertFalse(mNotifStabilityManager.isPipelineRunAllowed()); // WHEN the animation has stopped playing mKosmos.getKeyguardTransitionRepository().sendTransitionStepJava( mTestScope, new TransitionStep( KeyguardState.LOCKSCREEN, KeyguardState.GONE, 1f, TransitionState.FINISHED), /* validateStep = */ false); mTestScope.getTestScheduler().runCurrent(); doReturn(false).when(mKeyguardStateController).isKeyguardFadingAway(); mCoordinator.mKeyguardFadeAwayAnimationCallback.onKeyguardFadingAwayChanged(); // invalidate is called, b/c we were previously suppressing the pipeline from running verifyStabilityManagerWasInvalidated(times(1)); Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinator.java +15 −7 Original line number Diff line number Diff line Loading @@ -29,11 +29,9 @@ import com.android.systemui.dagger.qualifiers.Background; import com.android.systemui.dump.DumpManager; import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor; import com.android.systemui.keyguard.shared.model.Edge; import com.android.systemui.keyguard.shared.model.KeyguardState; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.scene.shared.flag.SceneContainerFlag; import com.android.systemui.scene.shared.model.Scenes; import com.android.systemui.shade.domain.interactor.ShadeAnimationInteractor; import com.android.systemui.shade.domain.interactor.ShadeInteractor; import com.android.systemui.statusbar.notification.VisibilityLocationProvider; Loading @@ -46,6 +44,7 @@ import com.android.systemui.statusbar.notification.collection.provider.VisualSta import com.android.systemui.statusbar.notification.domain.interactor.SeenNotificationsInteractor; import com.android.systemui.statusbar.notification.shared.NotificationMinimalism; import com.android.systemui.statusbar.policy.HeadsUpManager; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.concurrency.DelayableExecutor; import com.android.systemui.util.kotlin.BooleanFlowOperators; import com.android.systemui.util.kotlin.JavaAdapter; Loading Loading @@ -78,6 +77,7 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable { private final CommunalSceneInteractor mCommunalSceneInteractor; private final ShadeInteractor mShadeInteractor; private final KeyguardTransitionInteractor mKeyguardTransitionInteractor; private final KeyguardStateController mKeyguardStateController; private final VisualStabilityCoordinatorLogger mLogger; private boolean mSleepy = true; Loading Loading @@ -120,6 +120,7 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable { CommunalSceneInteractor communalSceneInteractor, ShadeInteractor shadeInteractor, KeyguardTransitionInteractor keyguardTransitionInteractor, KeyguardStateController keyguardStateController, VisualStabilityCoordinatorLogger logger) { mHeadsUpManager = headsUpManager; mShadeAnimationInteractor = shadeAnimationInteractor; Loading @@ -133,6 +134,7 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable { mCommunalSceneInteractor = communalSceneInteractor; mShadeInteractor = shadeInteractor; mKeyguardTransitionInteractor = keyguardTransitionInteractor; mKeyguardStateController = keyguardStateController; mLogger = logger; dumpManager.registerDumpable(this); Loading Loading @@ -162,17 +164,23 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable { KeyguardState.LOCKSCREEN), this::onLockscreenKeyguardStateTransitionValueChanged); } if (Flags.checkLockscreenGoneTransition()) { mJavaAdapter.alwaysCollectFlow(mKeyguardTransitionInteractor.isInTransition( Edge.create(KeyguardState.LOCKSCREEN, Scenes.Gone), Edge.create(KeyguardState.LOCKSCREEN, KeyguardState.GONE)), this::onLockscreenInGoneTransitionChanged); mKeyguardStateController.addCallback(mKeyguardFadeAwayAnimationCallback); } pipeline.setVisualStabilityManager(mNotifStabilityManager); } final KeyguardStateController.Callback mKeyguardFadeAwayAnimationCallback = new KeyguardStateController.Callback() { @Override public void onKeyguardFadingAwayChanged() { onLockscreenInGoneTransitionChanged( mKeyguardStateController.isKeyguardFadingAway()); } }; // TODO(b/203826051): Ensure stability manager can allow reordering off-screen // HUNs to the top of the shade private final NotifStabilityManager mNotifStabilityManager = Loading