summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Mady Mellor <madym@google.com> 2020-01-29 01:10:53 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-01-29 01:10:53 +0000
commite71999af40c6141f56a018aee2f6e31ec2a6f303 (patch)
treee144933b785a546a540a35dc0311c96191ee342d
parentc3230c97397d1bedf83ce6e3270afd201e2b982d (diff)
parent05610cf0ff4d4723fec025fd857c8c6c1a1c47ad (diff)
Merge "Bubbles / notifs / shortcuts: if the id's don't match throw an error"
-rw-r--r--core/java/android/app/Notification.java28
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();