From 93e08ebf80556ad245c2a6c40c0bdc645297fcf4 Mon Sep 17 00:00:00 2001 From: Daniel Nishi Date: Tue, 28 Feb 2017 11:04:05 -0800 Subject: [PATCH] Add a content description to the app info button. This resolves an issue where Talkback would call the app info button "unlabelled." Change-Id: I59d8639584c48d8eeb7640bdac3d18bc7667009f Fixes: 35338852 Test: Settings Robotest --- .../applications/AppHeaderController.java | 2 ++ .../applications/AppHeaderControllerTest.java | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/com/android/settings/applications/AppHeaderController.java b/src/com/android/settings/applications/AppHeaderController.java index 01d5fc74d73..1d64fcae071 100644 --- a/src/com/android/settings/applications/AppHeaderController.java +++ b/src/com/android/settings/applications/AppHeaderController.java @@ -267,6 +267,8 @@ public class AppHeaderController { || !AppHeader.includeAppInfo(mFragment)) { button.setVisibility(View.GONE); } else { + button.setContentDescription( + mContext.getString(R.string.application_info_label)); button.setImageResource(com.android.settings.R.drawable.ic_info); button.setOnClickListener(v -> AppInfoBase.startAppInfoFragment( InstalledAppDetails.class, R.string.application_info_label, diff --git a/tests/robotests/src/com/android/settings/applications/AppHeaderControllerTest.java b/tests/robotests/src/com/android/settings/applications/AppHeaderControllerTest.java index 458af5b9a8d..3ee33aa0d86 100644 --- a/tests/robotests/src/com/android/settings/applications/AppHeaderControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/AppHeaderControllerTest.java @@ -52,6 +52,7 @@ import org.robolectric.shadows.ShadowApplication; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; +import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -233,6 +234,25 @@ public class AppHeaderControllerTest { .isEqualTo(View.GONE); } + @Test + public void bindButton_hasAppInfo_shouldHaveContentDescription() { + final View appLinks = mLayoutInflater + .inflate(R.layout.app_details, null /* root */); + when(mFragment.getActivity()).thenReturn(mock(Activity.class)); + when(mContext.getString(eq(R.string.application_info_label))).thenReturn("App Info"); + + mController = new AppHeaderController(mContext, mFragment, appLinks); + mController.setPackageName("123") + .setUid(UserHandle.USER_SYSTEM) + .setButtonActions( + AppHeaderController.ActionType.ACTION_APP_INFO, + AppHeaderController.ActionType.ACTION_NOTIF_PREFERENCE); + mController.done(); + + assertThat(appLinks.findViewById(R.id.left_button).getContentDescription()) + .isEqualTo("App Info"); + } + @Test public void bindButton_hasAppNotifIntent_shouldShowButton() { final View appLinks = mLayoutInflater