Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 729c8f71 authored by Ming-Shin Lu's avatar Ming-Shin Lu Committed by Android (Google) Code Review
Browse files

Merge "Revert "Fix perf regression VisualStabilityCoordinator"" into main

parents d3ea79ba e639f542
Loading
Loading
Loading
Loading
+14 −8
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@ 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;
@@ -66,7 +65,6 @@ 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;
@@ -100,7 +98,6 @@ 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;
@@ -141,7 +138,6 @@ public class VisualStabilityCoordinatorTest extends SysuiTestCase {
                mKosmos.getCommunalSceneInteractor(),
                mKosmos.getShadeInteractor(),
                mKosmos.getKeyguardTransitionInteractor(),
                mKeyguardStateController,
                mLogger);
        mCoordinator.attach(mNotifPipeline);
        mTestScope.getTestScheduler().runCurrent();
@@ -526,13 +522,23 @@ 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
        doReturn(true).when(mKeyguardStateController).isKeyguardFadingAway();
        mCoordinator.mKeyguardFadeAwayAnimationCallback.onKeyguardFadingAwayChanged();
        mKosmos.getKeyguardTransitionRepository().sendTransitionStepJava(
                mTestScope, new TransitionStep(
                        KeyguardState.LOCKSCREEN,
                        KeyguardState.GONE,
                        1f,
                        TransitionState.RUNNING),  /* validateStep = */ false);
        mTestScope.getTestScheduler().runCurrent();
        assertFalse(mNotifStabilityManager.isPipelineRunAllowed());

        // WHEN the animation has stopped playing
        doReturn(false).when(mKeyguardStateController).isKeyguardFadingAway();
        mCoordinator.mKeyguardFadeAwayAnimationCallback.onKeyguardFadingAwayChanged();
        mKosmos.getKeyguardTransitionRepository().sendTransitionStepJava(
                mTestScope, new TransitionStep(
                        KeyguardState.LOCKSCREEN,
                        KeyguardState.GONE,
                        1f,
                        TransitionState.FINISHED),  /* validateStep = */ false);
        mTestScope.getTestScheduler().runCurrent();

        // invalidate is called, b/c we were previously suppressing the pipeline from running
        verifyStabilityManagerWasInvalidated(times(1));
+7 −15
Original line number Diff line number Diff line
@@ -29,9 +29,11 @@ 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;
@@ -44,7 +46,6 @@ 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;
@@ -77,7 +78,6 @@ 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,7 +120,6 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable {
            CommunalSceneInteractor communalSceneInteractor,
            ShadeInteractor shadeInteractor,
            KeyguardTransitionInteractor keyguardTransitionInteractor,
            KeyguardStateController keyguardStateController,
            VisualStabilityCoordinatorLogger logger) {
        mHeadsUpManager = headsUpManager;
        mShadeAnimationInteractor = shadeAnimationInteractor;
@@ -134,7 +133,6 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable {
        mCommunalSceneInteractor = communalSceneInteractor;
        mShadeInteractor = shadeInteractor;
        mKeyguardTransitionInteractor = keyguardTransitionInteractor;
        mKeyguardStateController = keyguardStateController;
        mLogger = logger;

        dumpManager.registerDumpable(this);
@@ -164,22 +162,16 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable {
                            KeyguardState.LOCKSCREEN),
                    this::onLockscreenKeyguardStateTransitionValueChanged);
        }

        if (Flags.checkLockscreenGoneTransition()) {
            mKeyguardStateController.addCallback(mKeyguardFadeAwayAnimationCallback);
            mJavaAdapter.alwaysCollectFlow(mKeyguardTransitionInteractor.isInTransition(
                            Edge.create(KeyguardState.LOCKSCREEN, Scenes.Gone),
                            Edge.create(KeyguardState.LOCKSCREEN, KeyguardState.GONE)),
                    this::onLockscreenInGoneTransitionChanged);
        }

        pipeline.setVisualStabilityManager(mNotifStabilityManager);
    }

    final KeyguardStateController.Callback mKeyguardFadeAwayAnimationCallback =
            new KeyguardStateController.Callback() {
                @Override
                public void onKeyguardFadingAwayChanged() {
                    onLockscreenInGoneTransitionChanged(
                            mKeyguardStateController.isKeyguardFadingAway());
        pipeline.setVisualStabilityManager(mNotifStabilityManager);
    }
            };

    // TODO(b/203826051): Ensure stability manager can allow reordering off-screen
    //  HUNs to the top of the shade