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

Commit 7178e2b9 authored by Jon @'s avatar Jon @ Committed by Android (Google) Code Review
Browse files

Merge "Avoid notifying home visibility changed when taskInfo.isRunning is false" into main

parents 22b22b13 86925b32
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -57,7 +57,9 @@ public class HomeTransitionObserver implements TransitionObserver,
            @NonNull SurfaceControl.Transaction finishTransaction) {
        for (TransitionInfo.Change change : info.getChanges()) {
            final ActivityManager.RunningTaskInfo taskInfo = change.getTaskInfo();
            if (taskInfo == null || taskInfo.taskId == -1) {
            if (taskInfo == null
                    || taskInfo.taskId == -1
                    || !taskInfo.isRunning) {
                continue;
            }

+25 −7
Original line number Diff line number Diff line
@@ -101,7 +101,7 @@ public class HomeTransitionObserverTest extends ShellTestCase {
        when(change.getTaskInfo()).thenReturn(taskInfo);
        when(info.getChanges()).thenReturn(new ArrayList<>(List.of(change)));

        setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_HOME, TRANSIT_OPEN);
        setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_HOME, TRANSIT_OPEN, true);

        mHomeTransitionObserver.onTransitionReady(mock(IBinder.class),
                info,
@@ -119,7 +119,7 @@ public class HomeTransitionObserverTest extends ShellTestCase {
        when(change.getTaskInfo()).thenReturn(taskInfo);
        when(info.getChanges()).thenReturn(new ArrayList<>(List.of(change)));

        setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_HOME, TRANSIT_TO_BACK);
        setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_HOME, TRANSIT_TO_BACK, true);

        mHomeTransitionObserver.onTransitionReady(mock(IBinder.class),
                info,
@@ -137,7 +137,25 @@ public class HomeTransitionObserverTest extends ShellTestCase {
        when(change.getTaskInfo()).thenReturn(taskInfo);
        when(info.getChanges()).thenReturn(new ArrayList<>(List.of(change)));

        setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_UNDEFINED, TRANSIT_TO_BACK);
        setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_UNDEFINED, TRANSIT_TO_BACK, true);

        mHomeTransitionObserver.onTransitionReady(mock(IBinder.class),
                info,
                mock(SurfaceControl.Transaction.class),
                mock(SurfaceControl.Transaction.class));

        verify(mListener, times(0)).onHomeVisibilityChanged(anyBoolean());
    }

    @Test
    public void testNonRunningHomeActivityDoesNotTriggerCallback() 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)));

        setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_UNDEFINED, TRANSIT_TO_BACK, false);

        mHomeTransitionObserver.onTransitionReady(mock(IBinder.class),
                info,
@@ -156,7 +174,7 @@ public class HomeTransitionObserverTest extends ShellTestCase {
        when(info.getChanges()).thenReturn(new ArrayList<>(List.of(change)));

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

        mHomeTransitionObserver.onTransitionReady(mock(IBinder.class),
                info,
@@ -166,16 +184,16 @@ public class HomeTransitionObserverTest extends ShellTestCase {
        verify(mListener, times(1)).onHomeVisibilityChanged(true);
    }


    /**
     * Helper class to initialize variables for the rest.
     */
    private void setupTransitionInfo(ActivityManager.RunningTaskInfo taskInfo,
            TransitionInfo.Change change,
            @ActivityType int activityType,
            @TransitionMode int mode) {
            @TransitionMode int mode,
            boolean isRunning) {
        when(taskInfo.getActivityType()).thenReturn(activityType);
        when(change.getMode()).thenReturn(mode);
        taskInfo.isRunning = isRunning;
    }

}