From 8181dfdf921acb6ffe7541af55ac6461be61f049 Mon Sep 17 00:00:00 2001 From: Jordan Silva Date: Wed, 29 May 2024 14:40:46 +0100 Subject: [PATCH] Fix Talkback wrong label announced going from App to Overview To fix the incorrect title information being spoken after a transition state ends, a new function named getTitle is introduced in the LauncherState. This function provides the correct title for the transition state. The default accessibility label is set to R.string.home_screen. All Apps and Overview states override the getTitle function to ensure the correct accessibility label for their respective states. Fix: 265892510 Flag: EXEMPT bugfix Test: Manual with Talkback. With Talkback enabled, navigate from App to Overview. Change-Id: I96b820f310f8b778a149709bca687a5912386246 --- .../android/launcher3/uioverrides/states/AllAppsState.java | 5 +++++ .../android/launcher3/uioverrides/states/OverviewState.java | 5 +++++ quickstep/src/com/android/quickstep/RecentsActivity.java | 3 +++ src/com/android/launcher3/Launcher.java | 6 +----- src/com/android/launcher3/LauncherState.java | 5 +++++ .../android/launcher3/uioverrides/states/AllAppsState.java | 5 +++++ 6 files changed, 24 insertions(+), 5 deletions(-) diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/AllAppsState.java b/quickstep/src/com/android/launcher3/uioverrides/states/AllAppsState.java index 2625919ec0..fa80dc2776 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/states/AllAppsState.java +++ b/quickstep/src/com/android/launcher3/uioverrides/states/AllAppsState.java @@ -101,6 +101,11 @@ public class AllAppsState extends LauncherState { return launcher.getAppsView().getDescription(); } + @Override + public int getTitle() { + return R.string.all_apps_label; + } + @Override public float getVerticalProgress(Launcher launcher) { return 0f; diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java index 7173298d19..6822f1b39c 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java +++ b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java @@ -182,6 +182,11 @@ public class OverviewState extends LauncherState { return launcher.getString(R.string.accessibility_recent_apps); } + @Override + public int getTitle() { + return R.string.accessibility_recent_apps; + } + public static float getDefaultSwipeHeight(Launcher launcher) { return LayoutUtils.getDefaultSwipeHeight(launcher, launcher.getDeviceProfile()); } diff --git a/quickstep/src/com/android/quickstep/RecentsActivity.java b/quickstep/src/com/android/quickstep/RecentsActivity.java index 97a0b3fd23..3df62dacae 100644 --- a/quickstep/src/com/android/quickstep/RecentsActivity.java +++ b/quickstep/src/com/android/quickstep/RecentsActivity.java @@ -371,6 +371,9 @@ public final class RecentsActivity extends StatefulActivity implem getSystemUiController().updateUiState(SystemUiController.UI_STATE_BASE_WINDOW, Themes.getAttrBoolean(this, R.attr.isWorkspaceDarkText)); ACTIVITY_TRACKER.handleCreate(this); + + // Set screen title for Talkback + setTitle(R.string.accessibility_recent_apps); } @Override diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index b89d05e808..7f72526942 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -1268,11 +1268,7 @@ public class Launcher extends StatefulActivity } // Set screen title for Talkback - if (state == ALL_APPS) { - setTitle(R.string.all_apps_label); - } else { - setTitle(R.string.home_screen); - } + setTitle(state.getTitle()); } /** diff --git a/src/com/android/launcher3/LauncherState.java b/src/com/android/launcher3/LauncherState.java index 72a3c53c7b..d2d56f2d8c 100644 --- a/src/com/android/launcher3/LauncherState.java +++ b/src/com/android/launcher3/LauncherState.java @@ -38,6 +38,7 @@ import android.view.View; import android.view.animation.Interpolator; import androidx.annotation.FloatRange; +import androidx.annotation.StringRes; import com.android.launcher3.statemanager.BaseState; import com.android.launcher3.statemanager.StateManager; @@ -369,6 +370,10 @@ public abstract class LauncherState implements BaseState { return launcher.getWorkspace().getCurrentPageDescription(); } + public @StringRes int getTitle() { + return R.string.home_screen; + } + public PageAlphaProvider getWorkspacePageAlphaProvider(Launcher launcher) { if ((this != NORMAL && this != HINT_STATE) || !launcher.getDeviceProfile().shouldFadeAdjacentWorkspaceScreens()) { diff --git a/src_no_quickstep/com/android/launcher3/uioverrides/states/AllAppsState.java b/src_no_quickstep/com/android/launcher3/uioverrides/states/AllAppsState.java index b62dbd1d95..9865516c4c 100644 --- a/src_no_quickstep/com/android/launcher3/uioverrides/states/AllAppsState.java +++ b/src_no_quickstep/com/android/launcher3/uioverrides/states/AllAppsState.java @@ -52,6 +52,11 @@ public class AllAppsState extends LauncherState { return launcher.getString(R.string.all_apps_button_label); } + @Override + public int getTitle() { + return R.string.all_apps_label; + } + @Override public int getVisibleElements(Launcher launcher) { return ALL_APPS_CONTENT;