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

Commit fc80da38 authored by Johannes Gallmann's avatar Johannes Gallmann
Browse files

Fix Taskbar gone after predictive back to home

Bug: 312154353
Flag: ACONFIG ENABLE_HOME_TRANSITION_LISTENER TEAMFOOD
Test: HomeTransitionObserverTest
Change-Id: I3484e4f890c13a86ef846bc144f0fcc54e2db887
parent 70bb706e
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.wm.shell.transition;

import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
import static android.window.TransitionInfo.FLAG_BACK_GESTURE_ANIMATED;

import static com.android.wm.shell.transition.Transitions.TransitionObserver;

@@ -61,9 +62,10 @@ public class HomeTransitionObserver implements TransitionObserver,
            }

            final int mode = change.getMode();
            final boolean isBackGesture = change.hasFlags(FLAG_BACK_GESTURE_ANIMATED);
            if (taskInfo.getActivityType() == ACTIVITY_TYPE_HOME
                    && TransitionUtil.isOpenOrCloseMode(mode)) {
                notifyHomeVisibilityChanged(TransitionUtil.isOpeningType(mode));
                    && (TransitionUtil.isOpenOrCloseMode(mode) || isBackGesture)) {
                notifyHomeVisibilityChanged(TransitionUtil.isOpeningType(mode) || isBackGesture);
            }
        }
    }
+22 −0
Original line number Diff line number Diff line
@@ -18,8 +18,10 @@ package com.android.wm.shell.transition;

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_TO_BACK;
import static android.window.TransitionInfo.FLAG_BACK_GESTURE_ANIMATED;

import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;

@@ -145,6 +147,26 @@ public class HomeTransitionObserverTest extends ShellTestCase {
        verify(mListener, times(0)).onHomeVisibilityChanged(anyBoolean());
    }

    @Test
    public void testHomeActivityWithBackGestureNotifiesHomeIsVisible() 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(change.hasFlags(FLAG_BACK_GESTURE_ANIMATED)).thenReturn(true);
        setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_HOME, TRANSIT_CHANGE);

        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.
     */