diff options
| author | 2020-01-29 01:10:53 +0000 | |
|---|---|---|
| committer | 2020-01-29 01:10:53 +0000 | |
| commit | e71999af40c6141f56a018aee2f6e31ec2a6f303 (patch) | |
| tree | e144933b785a546a540a35dc0311c96191ee342d | |
| parent | c3230c97397d1bedf83ce6e3270afd201e2b982d (diff) | |
| parent | 05610cf0ff4d4723fec025fd857c8c6c1a1c47ad (diff) | |
Merge "Bubbles / notifs / shortcuts: if the id's don't match throw an error"
| -rw-r--r-- | core/java/android/app/Notification.java | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java index cdb49f0a03ab..35d26aba9094 100644 --- a/core/java/android/app/Notification.java +++ b/core/java/android/app/Notification.java @@ -3569,8 +3569,16 @@ public class Notification implements Parcelable * This field will be ignored by Launchers that don't support badging, don't show * notification content, or don't show {@link android.content.pm.ShortcutManager shortcuts}. * + * If this notification has {@link BubbleMetadata} attached that was created with + * {@link BubbleMetadata.Builder#createShortcutBubble(String)} a check will be performed + * to ensure the shortcutId supplied to bubble metadata matches the shortcutId set here, + * if one was set. If the shortcutId's were specified but do not match, an exception + * is thrown. + * * @param shortcutId the {@link ShortcutInfo#getId() id} of the shortcut this notification * supersedes + * + * @see BubbleMetadata.Builder#createShortcutBubble(String) */ @NonNull public Builder setShortcutId(String shortcutId) { @@ -5926,9 +5934,29 @@ public class Notification implements Parcelable /** * Combine all of the options that have been set and return a new {@link Notification} * object. + * + * If this notification has {@link BubbleMetadata} attached that was created with + * {@link BubbleMetadata.Builder#createShortcutBubble(String)} a check will be performed + * to ensure the shortcutId supplied to bubble metadata matches the shortcutId set on the + * notification builder, if one was set. If the shortcutId's were specified but do not + * match, an exception is thrown here. + * + * @see BubbleMetadata.Builder#createShortcutBubble(String) + * @see #setShortcutId(String) */ @NonNull public Notification build() { + // Check shortcut id matches + if (mN.mShortcutId != null + && mN.mBubbleMetadata != null + && mN.mBubbleMetadata.getShortcutId() != null + && !mN.mShortcutId.equals(mN.mBubbleMetadata.getShortcutId())) { + throw new IllegalArgumentException( + "Notification and BubbleMetadata shortcut id's don't match," + + " notification: " + mN.mShortcutId + + " vs bubble: " + mN.mBubbleMetadata.getShortcutId()); + } + // first, add any extras from the calling code if (mUserExtras != null) { mN.extras = getAllExtras(); |