diff options
| author | 2024-08-30 17:22:59 +0000 | |
|---|---|---|
| committer | 2024-09-02 14:30:31 +0000 | |
| commit | 2c3c124ea436d76fd30cbf1541ef59867d9e7f43 (patch) | |
| tree | 939247b2816095b5ccd5fcae2d7128a3c1d79074 | |
| parent | 52f1f41846f1f27c8c3ef7f42910afa2e5dd011c (diff) | |
RESTRICT AUTOMERGE Clear app-provided shortcut icons
When displaying keyboard shortcuts provided by an app, clear
any icon that may have been set (this is only possible via
reflection, and is not a intended for usage outside of the system).
Bug: 331180422
Test: Verify on device
Merged-In: I3d80fedab9ef547ef3ac54eaccf2aa048a180be9
Change-Id: If7e291eb2254c3cbec23673c65e7477e6ad45b09
3 files changed, 21 insertions, 2 deletions
diff --git a/core/java/android/view/KeyboardShortcutInfo.java b/core/java/android/view/KeyboardShortcutInfo.java index 118b03ce5504..3a79e5b13a8b 100644 --- a/core/java/android/view/KeyboardShortcutInfo.java +++ b/core/java/android/view/KeyboardShortcutInfo.java @@ -29,7 +29,7 @@ import android.os.Parcelable; */ public final class KeyboardShortcutInfo implements Parcelable { private final CharSequence mLabel; - private final Icon mIcon; + private Icon mIcon; private final char mBaseCharacter; private final int mKeycode; private final int mModifiers; @@ -116,6 +116,15 @@ public final class KeyboardShortcutInfo implements Parcelable { } /** + * Removes an icon that was previously set. + * + * @hide + */ + public void clearIcon() { + mIcon = null; + } + + /** * Returns the base keycode that, combined with the modifiers, triggers this shortcut. If the * base character was set instead, returns {@link KeyEvent#KEYCODE_UNKNOWN}. Valid keycodes are * defined as constants in {@link KeyEvent}. @@ -165,4 +174,4 @@ public final class KeyboardShortcutInfo implements Parcelable { return new KeyboardShortcutInfo[size]; } }; -}
\ No newline at end of file +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyboardShortcutListSearch.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyboardShortcutListSearch.java index 906c5ed0fb89..8499de529837 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyboardShortcutListSearch.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyboardShortcutListSearch.java @@ -422,6 +422,7 @@ public final class KeyboardShortcutListSearch { if (result.isEmpty()) { mKeySearchResultMap.put(SHORTCUT_SPECIFICAPP_INDEX, false); } else { + KeyboardShortcuts.sanitiseShortcuts(result); mSpecificAppGroup = reMapToKeyboardShortcutMultiMappingGroup(result); mKeySearchResultMap.put(SHORTCUT_SPECIFICAPP_INDEX, true); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyboardShortcuts.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyboardShortcuts.java index 43fbc7cbae03..0cd574c2d3c5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyboardShortcuts.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyboardShortcuts.java @@ -386,6 +386,7 @@ public final class KeyboardShortcuts { @Override public void onKeyboardShortcutsReceived( final List<KeyboardShortcutGroup> result) { + sanitiseShortcuts(result); result.add(getSystemShortcuts()); final KeyboardShortcutGroup appShortcuts = getDefaultApplicationShortcuts(); if (appShortcuts != null) { @@ -396,6 +397,14 @@ public final class KeyboardShortcuts { }, deviceId); } + static void sanitiseShortcuts(List<KeyboardShortcutGroup> shortcutGroups) { + for (KeyboardShortcutGroup group : shortcutGroups) { + for (KeyboardShortcutInfo info : group.getItems()) { + info.clearIcon(); + } + } + } + private void dismissKeyboardShortcuts() { if (mKeyboardShortcutsDialog != null) { mKeyboardShortcutsDialog.dismiss(); |