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

Commit 9878a720 authored by Jordan Silva's avatar Jordan Silva
Browse files

Add ESCAPE key to dismiss Overview

This CL adds the functionality of escape key to Overview. It dismisses Overview when the esc key is pressed.
When Overview is showing a Modal Task, it will return to Overview state instead of the Normal state.

Fix: 315283507
Flag: N/A
Test: TaplTestsQuickstep
Change-Id: I02e02f623d9a4aad1c2d6188fdea4e3fc4f96d64
parent 113569f4
Loading
Loading
Loading
Loading
+0 −6
Original line number Diff line number Diff line
@@ -62,12 +62,6 @@ public class OverviewModalTaskState extends OverviewState {
    @Override
    public void onBackPressed(Launcher launcher) {
        launcher.getStateManager().goToState(LauncherState.OVERVIEW);
        RecentsView recentsView = launcher.<RecentsView>getOverviewPanel();
        if (recentsView != null) {
            recentsView.resetModalVisuals();
        } else {
            super.onBackPressed(launcher);
        }
    }

    @Override
+2 −1
Original line number Diff line number Diff line
@@ -217,7 +217,6 @@ public class FallbackRecentsView extends RecentsView<RecentsActivity, RecentsSta
        } else {
            if (mActivity.isInState(RecentsState.MODAL_TASK)) {
                mActivity.getStateManager().goToState(DEFAULT, animate);
                resetModalVisuals();
            }
        }
    }
@@ -237,6 +236,8 @@ public class FallbackRecentsView extends RecentsView<RecentsActivity, RecentsSta
        setOverviewFullscreenEnabled(toState.isFullScreen());
        if (toState == MODAL_TASK) {
            setOverviewSelectEnabled(true);
        } else {
            resetModalVisuals();
        }

        // Set border after select mode changes to avoid showing border during state transition
+3 −1
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
package com.android.quickstep.views;

import static android.app.ActivityTaskManager.INVALID_TASK_ID;

import static com.android.launcher3.LauncherState.ALL_APPS;
import static com.android.launcher3.LauncherState.CLEAR_ALL_BUTTON;
import static com.android.launcher3.LauncherState.EDIT_MODE;
@@ -144,6 +145,8 @@ public class LauncherRecentsView extends RecentsView<QuickstepLauncher, Launcher
        setOverviewFullscreenEnabled(toState.getOverviewFullscreenProgress() == 1);
        if (toState == OVERVIEW_MODAL_TASK) {
            setOverviewSelectEnabled(true);
        } else {
            resetModalVisuals();
        }

        // Set border after select mode changes to avoid showing border during state transition
@@ -214,7 +217,6 @@ public class LauncherRecentsView extends RecentsView<QuickstepLauncher, Launcher
        } else {
            if (mActivity.isInState(LauncherState.OVERVIEW_MODAL_TASK)) {
                mActivity.getStateManager().goToState(LauncherState.OVERVIEW, animate);
                resetModalVisuals();
            }
        }
    }
+38 −0
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ import com.android.launcher3.tapl.LauncherInstrumentation.NavigationModel;
import com.android.launcher3.tapl.Overview;
import com.android.launcher3.tapl.OverviewActions;
import com.android.launcher3.tapl.OverviewTask;
import com.android.launcher3.tapl.SelectModeButtons;
import com.android.launcher3.ui.AbstractLauncherUiTest;
import com.android.launcher3.ui.PortraitLandscapeRunner.PortraitLandscape;
import com.android.launcher3.util.Wait;
@@ -194,6 +195,43 @@ public class TaplTestsQuickstep extends AbstractQuickStepTest {
        actionsView.clickAndDismissScreenshot();
    }

    @Test
    public void testDismissOverviewWithEscKey() throws Exception {
        startTestAppsWithCheck();
        final Overview overview = mLauncher.goHome().switchToOverview();
        assertTrue("Launcher internal state is not Overview",
                isInState(() -> LauncherState.OVERVIEW));

        overview.dismissByEscKey();
        assertTrue("Launcher internal state is not Home",
                isInState(() -> LauncherState.NORMAL));
    }

    @Test
    public void testDismissModalTaskAndOverviewWithEscKey() throws Exception {
        startTestAppsWithCheck();
        final Overview overview = mLauncher.goHome().switchToOverview();

        final SelectModeButtons selectModeButtons;

        if (mLauncher.isTablet() && mLauncher.isGridOnlyOverviewEnabled()) {
            selectModeButtons = overview.getCurrentTask().tapMenu().tapSelectMenuItem();
        } else {
            selectModeButtons = overview.getOverviewActions().clickSelect();
        }

        assertTrue("Launcher internal state is not Overview Modal Task",
                isInState(() -> LauncherState.OVERVIEW_MODAL_TASK));

        selectModeButtons.dismissByEscKey();

        assertTrue("Launcher internal state is not Overview",
                isInState(() -> LauncherState.OVERVIEW));
        overview.dismissByEscKey();
        assertTrue("Launcher internal state is not Home",
                isInState(() -> LauncherState.NORMAL));
    }

    private int getCurrentOverviewPage(Launcher launcher) {
        return launcher.<RecentsView>getOverviewPanel().getCurrentPage();
    }
+12 −5
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ package com.android.launcher3.util;

import static com.android.launcher3.LauncherState.ALL_APPS;
import static com.android.launcher3.LauncherState.NORMAL;
import static com.android.launcher3.LauncherState.OVERVIEW;
import static com.android.launcher3.accessibility.LauncherAccessibilityDelegate.getSupportedActions;

import android.util.Log;
@@ -27,6 +28,7 @@ import android.view.Menu;

import com.android.launcher3.AbstractFloatingView;
import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherState;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.accessibility.BaseAccessibilityDelegate;
@@ -118,17 +120,22 @@ public class KeyboardShortcutsDelegate {
                return true;
            } else if (mLauncher.getAppsView().isInAllApps()) {
                // Close all apps if there are no open floating views.
                closeAllApps();
                mLauncher.getStateManager().goToState(NORMAL, true);
                return true;
            } else if (mLauncher.isInState(LauncherState.OVERVIEW)
                    || mLauncher.isInState(LauncherState.OVERVIEW_SPLIT_SELECT)) {
                // Close Overview and return to home.
                mLauncher.getStateManager().goToState(NORMAL, true);
                return true;
            } else if (mLauncher.isInState(LauncherState.OVERVIEW_MODAL_TASK)) {
                // Return to the previous state (Overview) when the modal task is open.
                mLauncher.getStateManager().goToState(OVERVIEW, true);
                return true;
            }
        }
        return null;
    }

    private void closeAllApps() {
        mLauncher.getStateManager().goToState(NORMAL, true);
    }

    /**
     * Handle key up event.
     * @param keyCode code of the key being pressed.
Loading