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

Commit 5aa23d41 authored by Pat Manning's avatar Pat Manning
Browse files

Focus a task by default when using keyboard to go to overview.

Fix: 322898816
Test: TaplTestsQuickstep.java
Flag: None.
Change-Id: I6d4b0ca6593ed2ac7c7d8793954c36e55b5978de
parent fdf6df32
Loading
Loading
Loading
Loading
+32 −20
Original line number Original line Diff line number Diff line
@@ -209,7 +209,8 @@ public class OverviewCommandHelper {
                    && dp != null
                    && dp != null
                    && (dp.isTablet || dp.isTwoPanels);
                    && (dp.isTablet || dp.isTwoPanels);


            if (cmd.type == TYPE_HIDE) {
            switch (cmd.type) {
                case TYPE_HIDE:
                    if (!allowQuickSwitch) {
                    if (!allowQuickSwitch) {
                        return true;
                        return true;
                    }
                    }
@@ -217,19 +218,29 @@ public class OverviewCommandHelper {
                    if (mKeyboardTaskFocusIndex == -1) {
                    if (mKeyboardTaskFocusIndex == -1) {
                        return true;
                        return true;
                    }
                    }
            }
                    break;
            if (cmd.type == TYPE_KEYBOARD_INPUT) {
                case TYPE_KEYBOARD_INPUT:
                    if (allowQuickSwitch) {
                    if (allowQuickSwitch) {
                        uiController.openQuickSwitchView();
                        uiController.openQuickSwitchView();
                        return true;
                        return true;
                    } else {
                    } else {
                        mKeyboardTaskFocusIndex = 0;
                        mKeyboardTaskFocusIndex = 0;
                        break;
                    }
                    }
            }
                case TYPE_HOME:
            if (cmd.type == TYPE_HOME) {
                    ActiveGestureLog.INSTANCE.addLog(
                ActiveGestureLog.INSTANCE.addLog("OverviewCommandHelper.executeCommand(TYPE_HOME)");
                            "OverviewCommandHelper.executeCommand(TYPE_HOME)");
                    mService.startActivity(mOverviewComponentObserver.getHomeIntent());
                    mService.startActivity(mOverviewComponentObserver.getHomeIntent());
                    return true;
                    return true;
                case TYPE_SHOW:
                    // When Recents is not currently visible, the command's type is TYPE_SHOW
                    // when overview is triggered via the keyboard overview button or Action+Tab
                    // keys (Not Alt+Tab which is KQS). The overview button on-screen in 3-button
                    // nav is TYPE_TOGGLE.
                    mKeyboardTaskFocusIndex = 0;
                    break;
                default:
                    // continue below to handle displaying Recents.
            }
            }
        } else {
        } else {
            createdRecentsView = visibleRecentsView;
            createdRecentsView = visibleRecentsView;
@@ -351,7 +362,8 @@ public class OverviewCommandHelper {
    private void updateRecentsViewFocus(CommandInfo cmd) {
    private void updateRecentsViewFocus(CommandInfo cmd) {
        RecentsView recentsView =
        RecentsView recentsView =
                mOverviewComponentObserver.getActivityInterface().getVisibleRecentsView();
                mOverviewComponentObserver.getActivityInterface().getVisibleRecentsView();
        if (recentsView == null || (cmd.type != TYPE_KEYBOARD_INPUT && cmd.type != TYPE_HIDE)) {
        if (recentsView == null || (cmd.type != TYPE_KEYBOARD_INPUT && cmd.type != TYPE_HIDE
                && cmd.type != TYPE_SHOW)) {
            return;
            return;
        }
        }
        // When the overview is launched via alt tab (cmd type is TYPE_KEYBOARD_INPUT),
        // When the overview is launched via alt tab (cmd type is TYPE_KEYBOARD_INPUT),
+27 −0
Original line number Original line Diff line number Diff line
@@ -44,6 +44,7 @@ import com.android.launcher3.tapl.Overview;
import com.android.launcher3.tapl.OverviewActions;
import com.android.launcher3.tapl.OverviewActions;
import com.android.launcher3.tapl.OverviewTask;
import com.android.launcher3.tapl.OverviewTask;
import com.android.launcher3.tapl.SelectModeButtons;
import com.android.launcher3.tapl.SelectModeButtons;
import com.android.launcher3.tapl.Workspace;
import com.android.launcher3.ui.PortraitLandscapeRunner.PortraitLandscape;
import com.android.launcher3.ui.PortraitLandscapeRunner.PortraitLandscape;
import com.android.launcher3.util.Wait;
import com.android.launcher3.util.Wait;
import com.android.launcher3.util.rule.ScreenRecordRule.ScreenRecord;
import com.android.launcher3.util.rule.ScreenRecordRule.ScreenRecord;
@@ -227,6 +228,32 @@ public class TaplTestsQuickstep extends AbstractQuickStepTest {
                isInState(() -> LauncherState.NORMAL));
                isInState(() -> LauncherState.NORMAL));
    }
    }


    @Test
    public void testOpenOverviewWithActionPlusTabKeys() throws Exception {
        startTestAppsWithCheck();
        startAppFast(CALCULATOR_APP_PACKAGE); // Ensure Calculator is last opened app.
        Workspace home = mLauncher.goHome();
        assertTrue("Launcher state is not Home", isInState(() -> LauncherState.NORMAL));

        Overview overview = home.openOverviewFromActionPlusTabKeyboardShortcut();

        assertTrue("Launcher state is not Overview", isInState(() -> LauncherState.OVERVIEW));
        overview.launchFocusedTaskByEnterKey(CALCULATOR_APP_PACKAGE); // Assert app is focused.
    }

    @Test
    public void testOpenOverviewWithRecentsKey() throws Exception {
        startTestAppsWithCheck();
        startAppFast(CALCULATOR_APP_PACKAGE); // Ensure Calculator is last opened app.
        Workspace home = mLauncher.goHome();
        assertTrue("Launcher state is not Home", isInState(() -> LauncherState.NORMAL));

        Overview overview = home.openOverviewFromRecentsKeyboardShortcut();

        assertTrue("Launcher state is not Overview", isInState(() -> LauncherState.OVERVIEW));
        overview.launchFocusedTaskByEnterKey(CALCULATOR_APP_PACKAGE); // Assert app is focused.
    }

    private int getCurrentOverviewPage(Launcher launcher) {
    private int getCurrentOverviewPage(Launcher launcher) {
        return launcher.<RecentsView>getOverviewPanel().getCurrentPage();
        return launcher.<RecentsView>getOverviewPanel().getCurrentPage();
    }
    }
+38 −0
Original line number Original line Diff line number Diff line
@@ -17,10 +17,14 @@
package com.android.launcher3.tapl;
package com.android.launcher3.tapl;


import static android.view.KeyEvent.KEYCODE_META_RIGHT;
import static android.view.KeyEvent.KEYCODE_META_RIGHT;
import static android.view.KeyEvent.KEYCODE_RECENT_APPS;
import static android.view.KeyEvent.KEYCODE_TAB;
import static android.view.KeyEvent.META_META_ON;
import static android.view.accessibility.AccessibilityEvent.TYPE_VIEW_SCROLLED;
import static android.view.accessibility.AccessibilityEvent.TYPE_VIEW_SCROLLED;


import static com.android.launcher3.testing.shared.TestProtocol.ALL_APPS_STATE_ORDINAL;
import static com.android.launcher3.testing.shared.TestProtocol.ALL_APPS_STATE_ORDINAL;
import static com.android.launcher3.testing.shared.TestProtocol.NORMAL_STATE_ORDINAL;
import static com.android.launcher3.testing.shared.TestProtocol.NORMAL_STATE_ORDINAL;
import static com.android.launcher3.testing.shared.TestProtocol.OVERVIEW_STATE_ORDINAL;
import static com.android.launcher3.testing.shared.TestProtocol.UIOBJECT_STALE_ELEMENT;
import static com.android.launcher3.testing.shared.TestProtocol.UIOBJECT_STALE_ELEMENT;


import static junit.framework.TestCase.assertNotNull;
import static junit.framework.TestCase.assertNotNull;
@@ -134,6 +138,40 @@ public final class Workspace extends Home {
        }
        }
    }
    }


    /** Opens the Launcher Overview page with the action+tab keyboard shortcut. */
    public Overview openOverviewFromActionPlusTabKeyboardShortcut() {
        try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
             LauncherInstrumentation.Closable c =
                     mLauncher.addContextLayer("want to open overview")) {
            verifyActiveContainer();
            mLauncher.runToState(
                    () -> mLauncher.getDevice().pressKeyCode(KEYCODE_TAB, META_META_ON),
                    OVERVIEW_STATE_ORDINAL,
                    "pressing keyboard shortcut");
            try (LauncherInstrumentation.Closable c1 = mLauncher.addContextLayer(
                    "pressed meta+tab key")) {
                return new Overview(mLauncher);
            }
        }
    }

    /** Opens the Launcher Overview page with the Recents keyboard shortcut. */
    public Overview openOverviewFromRecentsKeyboardShortcut() {
        try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
             LauncherInstrumentation.Closable c =
                     mLauncher.addContextLayer("want to open overview")) {
            verifyActiveContainer();
            mLauncher.runToState(
                    () -> mLauncher.getDevice().pressKeyCode(KEYCODE_RECENT_APPS),
                    OVERVIEW_STATE_ORDINAL,
                    "pressing keyboard shortcut");
            try (LauncherInstrumentation.Closable c1 = mLauncher.addContextLayer(
                    "pressed recents apps key")) {
                return new Overview(mLauncher);
            }
        }
    }

    /**
    /**
     * Returns the home qsb.
     * Returns the home qsb.
     *
     *