summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ming-Shin Lu <lumark@google.com> 2024-10-21 14:32:47 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-10-21 14:32:47 +0000
commit97951cbcb8994d64d04ddbc80201f70da2045b8c (patch)
treebdab69aef385bb73b25b9e478628d4463192fcf9
parent7db7b2f10a09e85ddfff52d4f9dc645243261e4f (diff)
parent95d3598ec4d28d5b4899c4109b4cd288d0875a67 (diff)
Merge "Fix perf regression VisualStabilityCoordinator" into main
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorTest.java22
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinator.java22
2 files changed, 23 insertions, 21 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorTest.java
index ea5c29ef30aa..cfac486dd37c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorTest.java
@@ -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;
@@ -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;
@@ -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;
@@ -138,6 +141,7 @@ public class VisualStabilityCoordinatorTest extends SysuiTestCase {
mKosmos.getCommunalSceneInteractor(),
mKosmos.getShadeInteractor(),
mKosmos.getKeyguardTransitionInteractor(),
+ mKeyguardStateController,
mLogger);
mCoordinator.attach(mNotifPipeline);
mTestScope.getTestScheduler().runCurrent();
@@ -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));
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinator.java
index 8660cd117493..6edffc0b7542 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinator.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinator.java
@@ -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;
@@ -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;
@@ -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;
@@ -120,6 +120,7 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable {
CommunalSceneInteractor communalSceneInteractor,
ShadeInteractor shadeInteractor,
KeyguardTransitionInteractor keyguardTransitionInteractor,
+ KeyguardStateController keyguardStateController,
VisualStabilityCoordinatorLogger logger) {
mHeadsUpManager = headsUpManager;
mShadeAnimationInteractor = shadeAnimationInteractor;
@@ -133,6 +134,7 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable {
mCommunalSceneInteractor = communalSceneInteractor;
mShadeInteractor = shadeInteractor;
mKeyguardTransitionInteractor = keyguardTransitionInteractor;
+ mKeyguardStateController = keyguardStateController;
mLogger = logger;
dumpManager.registerDumpable(this);
@@ -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 =