Set focus to EditText after open Toast with Meta key.
Meta key is an a11y action, which is set up in platform for action `GLOBAL_ACTION_ACCESSIBILITY_ALL_APPS`: https://source.corp.google.com/h/googleplex-android/platform/superproject/main/+/main:frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java;l=3573-3591;drc=34be95719dafc554f5ffc9ebb025e011fc81c7e9. `TouchInteractionService` is the one that implements the action: https://source.corp.google.com/h/googleplex-android/platform/superproject/main/+/main:packages/apps/Launcher3/quickstep/src/com/android/quickstep/TouchInteractionService.java;l=573;drc=b2ac210120abc4620f81e41d7a737f5f0009e5e0. `createAllAppsAction()` (where we set `INTENT_ACTION_ALL_APPS_TOGGLE`) only has this one caller. So `Launcher#toggleAllAppsFromIntent` is the exclusive path to handle a11y action.
Current behavior: when "Swipe up to start search" toggle is ON, everything works fine (keyboard up and focus set); when toggle is OFF, keyboard is up but without focus set.
With this change, keyboard up with focus set regardless of the toggle value. From https://docs.google.com/presentation/d/19iTRDGL-GSMfkTIXY8q2qjHQu2Fiih6CVhLqlwtV1bc/edit#slide=id.g13b39c67f16_0_108, the focus should be set for Meta key no matter what. Also, with talk-back on, the focus is also set to the input box with this change.
Vide: https://drive.google.com/corp/drive/u/0/folders/1yFlq7ldP0u1i3tSVpk72FsMu7QRZaUGM
Bug: 289058571
Test: manual
Flag: N/A
Change-Id: Ie471641f13cf9bd7d38f0e330d4f6c8c564b07b8
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index ffb8b82..038967c 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -144,6 +144,7 @@
import com.android.launcher3.allapps.AllAppsTransitionController;
import com.android.launcher3.allapps.BaseSearchConfig;
import com.android.launcher3.allapps.DiscoveryBounce;
+import com.android.launcher3.anim.AnimationSuccessListener;
import com.android.launcher3.anim.PropertyListBuilder;
import com.android.launcher3.apppairs.AppPairIcon;
import com.android.launcher3.celllayout.CellPosMapper;
@@ -1719,7 +1720,16 @@
if (getStateManager().isInStableState(ALL_APPS)) {
getStateManager().goToState(NORMAL, alreadyOnHome);
} else {
- showAllAppsFromIntent(alreadyOnHome);
+ AbstractFloatingView.closeAllOpenViews(this);
+ getStateManager().goToState(ALL_APPS, true /* animated */,
+ new AnimationSuccessListener() {
+ @Override
+ public void onAnimationSuccess(Animator animator) {
+ if (mAppsView.getSearchUiManager().getEditText() != null) {
+ mAppsView.getSearchUiManager().getEditText().requestFocus();
+ }
+ }
+ });
}
}