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

Fix: 322898816
Test: TaplTestsQuickstep.java
Flag: None.
Change-Id: I6d4b0ca6593ed2ac7c7d8793954c36e55b5978de
This commit is contained in:
Pat Manning
2024-02-20 13:54:58 +00:00
parent fdf6df3226
commit 5aa23d41dd
3 changed files with 97 additions and 20 deletions

View File

@@ -209,27 +209,38 @@ public class OverviewCommandHelper {
&& dp != null
&& (dp.isTablet || dp.isTwoPanels);
if (cmd.type == TYPE_HIDE) {
if (!allowQuickSwitch) {
switch (cmd.type) {
case TYPE_HIDE:
if (!allowQuickSwitch) {
return true;
}
mKeyboardTaskFocusIndex = uiController.launchFocusedTask();
if (mKeyboardTaskFocusIndex == -1) {
return true;
}
break;
case TYPE_KEYBOARD_INPUT:
if (allowQuickSwitch) {
uiController.openQuickSwitchView();
return true;
} else {
mKeyboardTaskFocusIndex = 0;
break;
}
case TYPE_HOME:
ActiveGestureLog.INSTANCE.addLog(
"OverviewCommandHelper.executeCommand(TYPE_HOME)");
mService.startActivity(mOverviewComponentObserver.getHomeIntent());
return true;
}
mKeyboardTaskFocusIndex = uiController.launchFocusedTask();
if (mKeyboardTaskFocusIndex == -1) {
return true;
}
}
if (cmd.type == TYPE_KEYBOARD_INPUT) {
if (allowQuickSwitch) {
uiController.openQuickSwitchView();
return true;
} else {
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;
}
}
if (cmd.type == TYPE_HOME) {
ActiveGestureLog.INSTANCE.addLog("OverviewCommandHelper.executeCommand(TYPE_HOME)");
mService.startActivity(mOverviewComponentObserver.getHomeIntent());
return true;
break;
default:
// continue below to handle displaying Recents.
}
} else {
createdRecentsView = visibleRecentsView;
@@ -351,7 +362,8 @@ public class OverviewCommandHelper {
private void updateRecentsViewFocus(CommandInfo cmd) {
RecentsView recentsView =
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;
}
// When the overview is launched via alt tab (cmd type is TYPE_KEYBOARD_INPUT),

View File

@@ -44,6 +44,7 @@ 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.tapl.Workspace;
import com.android.launcher3.ui.PortraitLandscapeRunner.PortraitLandscape;
import com.android.launcher3.util.Wait;
import com.android.launcher3.util.rule.ScreenRecordRule.ScreenRecord;
@@ -227,6 +228,32 @@ public class TaplTestsQuickstep extends AbstractQuickStepTest {
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) {
return launcher.<RecentsView>getOverviewPanel().getCurrentPage();
}

View File

@@ -17,10 +17,14 @@
package com.android.launcher3.tapl;
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 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.OVERVIEW_STATE_ORDINAL;
import static com.android.launcher3.testing.shared.TestProtocol.UIOBJECT_STALE_ELEMENT;
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.
*