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

Commit a97e10b0 authored by Vadim Caen's avatar Vadim Caen
Browse files

Only rely on developer option for back animation

BackNavigationController was still relying on a debug setting. Now the
animation request is handled via a boolean parameter passed by sysui,
which has access to the developer option.

Test: Existing test modified
Bug: 231502692
Change-Id: Icda4692e05396407d961610de0ce709492adadc1
Merged-In: Icda4692e05396407d961610de0ce709492adadc1
parent d6339f26
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -348,6 +348,7 @@ interface IActivityTaskManager {
    /**
     * Prepare the back navigation in the server. This setups the leashed for sysui to animate
     * the back gesture and returns the data needed for the animation.
     * @param requestAnimation true if the caller wishes to animate the back navigation
     */
    android.window.BackNavigationInfo startBackNavigation();
    android.window.BackNavigationInfo startBackNavigation(in boolean requestAnimation);
}
+1 −1
Original line number Diff line number Diff line
@@ -91,7 +91,7 @@ public class BackNavigationTest {
    private void assertCallbackIsCalled(CountDownLatch latch) {
        try {
            mInstrumentation.getUiAutomation().waitForIdle(500, 1000);
            BackNavigationInfo info = ActivityTaskManager.getService().startBackNavigation();
            BackNavigationInfo info = ActivityTaskManager.getService().startBackNavigation(true);
            assertNotNull("BackNavigationInfo is null", info);
            assertNotNull("OnBackInvokedCallback is null", info.getOnBackInvokedCallback());
            info.getOnBackInvokedCallback().onBackInvoked();
+2 −2
Original line number Diff line number Diff line
@@ -67,7 +67,6 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont
                    SETTING_VALUE_ON) != SETTING_VALUE_OFF;
    private static final int PROGRESS_THRESHOLD = SystemProperties
            .getInt(PREDICTIVE_BACK_PROGRESS_THRESHOLD_PROP, -1);

    /**
     * Max duration to wait for a transition to finish before accepting another gesture start
     * request.
@@ -290,7 +289,8 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont
        mBackGestureStarted = true;

        try {
            mBackNavigationInfo = mActivityTaskManager.startBackNavigation();
            boolean requestAnimation = mEnableAnimations.get();
            mBackNavigationInfo = mActivityTaskManager.startBackNavigation(requestAnimation);
            onBackNavigationInfoReceived(mBackNavigationInfo);
        } catch (RemoteException remoteException) {
            Log.e(TAG, "Failed to initAnimation", remoteException);
+7 −3
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static android.window.BackNavigationInfo.KEY_TRIGGER_BACK;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.atLeastOnce;
@@ -129,7 +130,7 @@ public class BackAnimationControllerTest {
                new RemoteCallback((bundle) -> {}),
                onBackInvokedCallback);
        try {
            doReturn(navigationInfo).when(mActivityTaskManager).startBackNavigation();
            doReturn(navigationInfo).when(mActivityTaskManager).startBackNavigation(anyBoolean());
        } catch (RemoteException ex) {
            ex.rethrowFromSystemServer();
        }
@@ -137,7 +138,7 @@ public class BackAnimationControllerTest {

    private void createNavigationInfo(BackNavigationInfo.Builder builder) {
        try {
            doReturn(builder.build()).when(mActivityTaskManager).startBackNavigation();
            doReturn(builder.build()).when(mActivityTaskManager).startBackNavigation(anyBoolean());
        } catch (RemoteException ex) {
            ex.rethrowFromSystemServer();
        }
@@ -217,8 +218,11 @@ public class BackAnimationControllerTest {
        // Check that back start and progress is dispatched when first move.
        doMotionEvent(MotionEvent.ACTION_MOVE, 100);
        verify(mIOnBackInvokedCallback).onBackStarted();

        // Check that back progress is dispatched.
        doMotionEvent(MotionEvent.ACTION_MOVE, 100);
        ArgumentCaptor<BackEvent> backEventCaptor = ArgumentCaptor.forClass(BackEvent.class);
        verify(mIOnBackInvokedCallback).onBackProgressed(backEventCaptor.capture());
        verify(mIOnBackInvokedCallback, atLeastOnce()).onBackProgressed(backEventCaptor.capture());
        assertEquals(animationTarget, backEventCaptor.getValue().getDepartingAnimationTarget());

        // Check that back invocation is dispatched.
+2 −2
Original line number Diff line number Diff line
@@ -1811,13 +1811,13 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
    }

    @Override
    public BackNavigationInfo startBackNavigation() {
    public BackNavigationInfo startBackNavigation(boolean requestAnimation) {
        mAmInternal.enforceCallingPermission(START_TASKS_FROM_RECENTS,
                "startBackNavigation()");
        if (mBackNavigationController == null) {
            return null;
        }
        return mBackNavigationController.startBackNavigation(mWindowManager);
        return mBackNavigationController.startBackNavigation(mWindowManager, requestAnimation);
    }

    /**
Loading