diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenu.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenu.java index f182e772f75e7..9af83003d26fb 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenu.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenu.java @@ -39,10 +39,13 @@ import android.text.TextUtils; import androidx.annotation.NonNull; +import com.android.internal.accessibility.dialog.AccessibilityTarget; import com.android.internal.annotations.VisibleForTesting; import com.android.systemui.Prefs; import com.android.systemui.shared.system.SysUiStatsLog; +import java.util.List; + /** * Contains logic for an accessibility floating menu view. */ @@ -120,9 +123,13 @@ public class AccessibilityFloatingMenu implements IAccessibilityFloatingMenu { if (isShowing()) { return; } + final List targetList = getTargets(mContext, ACCESSIBILITY_BUTTON); + if (targetList.isEmpty()) { + return; + } mMenuView.show(); - mMenuView.onTargetsChanged(getTargets(mContext, ACCESSIBILITY_BUTTON)); + mMenuView.onTargetsChanged(targetList); mMenuView.updateOpacityWith(isFadeEffectEnabled(mContext), getOpacityValue(mContext)); mMenuView.setSizeType(getSizeType(mContext)); diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuTest.java index e027a2b7bcafd..558261b31eb21 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuTest.java @@ -87,6 +87,17 @@ public class AccessibilityFloatingMenuTest extends SysuiTestCase { assertThat(mMenuView.isShowing()).isFalse(); } + @Test + public void showMenuView_emptyTarget_notShow() { + final List emptyTargets = new ArrayList<>(); + doReturn(emptyTargets).when(mAccessibilityManager).getAccessibilityShortcutTargets( + anyInt()); + + mMenu.show(); + + assertThat(mMenuView.isShowing()).isFalse(); + } + @After public void tearDown() { mMenu.hide();