From 0f9aa4c3a5a4d5f1014c2e52e079701e8ff0d1fe Mon Sep 17 00:00:00 2001 From: Phil Weaver Date: Mon, 26 Feb 2018 13:17:28 -0800 Subject: [PATCH] Make a11y shortcut robust to services w/no summary Fixes: 73254116 Test: Configure shortcut for TestBack. Now works. Also adding test to internal test that fails without this change. Change-Id: I6bb1359f80c5e0145997bc107fe1580686edb30e --- .../AccessibilityShortcutController.java | 2 +- .../AccessibilityShortcutControllerTest.java | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java b/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java index 293471c686e57..ffc21d5ea9e1f 100644 --- a/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java +++ b/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java @@ -319,7 +319,7 @@ public class AccessibilityShortcutController { } final PackageManager pm = mContext.getPackageManager(); String label = serviceInfo.getResolveInfo().loadLabel(pm).toString(); - String summary = serviceInfo.loadSummary(pm).toString(); + CharSequence summary = serviceInfo.loadSummary(pm); if (!includeSummary || TextUtils.isEmpty(summary)) { return label; } diff --git a/core/tests/coretests/src/com/android/internal/accessibility/AccessibilityShortcutControllerTest.java b/core/tests/coretests/src/com/android/internal/accessibility/AccessibilityShortcutControllerTest.java index 449e3743e3aab..a15d337112526 100644 --- a/core/tests/coretests/src/com/android/internal/accessibility/AccessibilityShortcutControllerTest.java +++ b/core/tests/coretests/src/com/android/internal/accessibility/AccessibilityShortcutControllerTest.java @@ -397,6 +397,17 @@ public class AccessibilityShortcutControllerTest { } } + @Test + public void testOnAccessibilityShortcut_forServiceWithNoSummary_doesNotCrash() + throws Exception { + configureShortcutEnabled(ENABLED_EXCEPT_LOCK_SCREEN); + configureValidShortcutService(); + when(mServiceInfo.loadSummary(any())).thenReturn(null); + Settings.Secure.putInt(mContentResolver, ACCESSIBILITY_SHORTCUT_DIALOG_SHOWN, 1); + getController().performAccessibilityShortcut(); + verify(mAccessibilityManagerService).performAccessibilityShortcut(); + } + @Test public void testOnAccessibilityShortcut_forFrameworkFeature_callsServiceWithNoToast() throws Exception {