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

Commit 1588c43b authored by Wei Sheng Shih's avatar Wei Sheng Shih Committed by Android (Google) Code Review
Browse files

Merge "Update home visibility status once receive close transition" into main

parents 8834b35c c84cf77d
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -74,8 +74,12 @@ public class HomeTransitionObserver implements TransitionObserver,
            final boolean isBackGesture = change.hasFlags(FLAG_BACK_GESTURE_ANIMATED);
            if (taskInfo.getActivityType() == ACTIVITY_TYPE_HOME) {
                if (Flags.migratePredictiveBackTransition()) {
                    if (!isBackGesture && TransitionUtil.isOpenOrCloseMode(mode)) {
                        notifyHomeVisibilityChanged(TransitionUtil.isOpeningType(mode));
                    final boolean gestureToHomeTransition = isBackGesture
                            && TransitionUtil.isClosingType(info.getType());
                    if (gestureToHomeTransition
                            || (!isBackGesture && TransitionUtil.isOpenOrCloseMode(mode))) {
                        notifyHomeVisibilityChanged(gestureToHomeTransition
                                || TransitionUtil.isOpeningType(mode));
                    }
                } else {
                    if (TransitionUtil.isOpenOrCloseMode(mode) || isBackGesture) {
+31 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
import static android.view.WindowManager.TRANSIT_CHANGE;
import static android.view.WindowManager.TRANSIT_OPEN;
import static android.view.WindowManager.TRANSIT_PREPARE_BACK_NAVIGATION;
import static android.view.WindowManager.TRANSIT_TO_BACK;
import static android.window.TransitionInfo.FLAG_BACK_GESTURE_ANIMATED;

@@ -39,6 +40,7 @@ import android.os.IBinder;
import android.os.Looper;
import android.os.RemoteException;
import android.platform.test.annotations.RequiresFlagsDisabled;
import android.platform.test.annotations.RequiresFlagsEnabled;
import android.platform.test.flag.junit.CheckFlagsRule;
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
import android.view.SurfaceControl;
@@ -213,6 +215,35 @@ public class HomeTransitionObserverTest extends ShellTestCase {
        verify(mListener, times(1)).onHomeVisibilityChanged(true);
    }

    @Test
    @RequiresFlagsEnabled(Flags.FLAG_MIGRATE_PREDICTIVE_BACK_TRANSITION)
    public void testHomeActivityWithBackGestureNotifiesHomeIsVisibleAfterClose()
            throws RemoteException {
        TransitionInfo info = mock(TransitionInfo.class);
        TransitionInfo.Change change = mock(TransitionInfo.Change.class);
        ActivityManager.RunningTaskInfo taskInfo = mock(ActivityManager.RunningTaskInfo.class);
        when(change.getTaskInfo()).thenReturn(taskInfo);
        when(info.getChanges()).thenReturn(new ArrayList<>(List.of(change)));
        when(info.getType()).thenReturn(TRANSIT_PREPARE_BACK_NAVIGATION);

        when(change.hasFlags(FLAG_BACK_GESTURE_ANIMATED)).thenReturn(true);
        setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_HOME, TRANSIT_OPEN, true);

        mHomeTransitionObserver.onTransitionReady(mock(IBinder.class),
                info,
                mock(SurfaceControl.Transaction.class),
                mock(SurfaceControl.Transaction.class));
        verify(mListener, times(0)).onHomeVisibilityChanged(anyBoolean());

        when(info.getType()).thenReturn(TRANSIT_TO_BACK);
        setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_HOME, TRANSIT_CHANGE, true);
        mHomeTransitionObserver.onTransitionReady(mock(IBinder.class),
                info,
                mock(SurfaceControl.Transaction.class),
                mock(SurfaceControl.Transaction.class));
        verify(mListener, times(1)).onHomeVisibilityChanged(true);
    }

    /**
     * Helper class to initialize variables for the rest.
     */