From efbaa978e4d31c3c99d96eb871650f8f7898e45f Mon Sep 17 00:00:00 2001 From: Lyn Han Date: Tue, 23 Jun 2020 14:59:39 -0700 Subject: [PATCH] Set shortcut info even if metadata doesn't have shortcut id Fixes: 159540176 Test: overflow labels set to chat name instead of app name Test: only bubbles with metadata shortcut persist after phone reboot Change-Id: Ia102f257953c7ba09cacb37aa1915f1dd1798d5f --- .../src/com/android/systemui/bubbles/Bubble.java | 15 ++++++++++++--- .../systemui/bubbles/BubbleDataRepository.kt | 2 +- .../systemui/bubbles/BubbleExpandedView.java | 7 ++++--- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java b/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java index a8bbdf6b68c96..b615885596eee 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java @@ -71,6 +71,7 @@ class Bubble implements BubbleViewProvider { // Items that are typically loaded later private String mAppName; private ShortcutInfo mShortcutInfo; + private String mMetadataShortcutId; private BadgedImageView mIconView; private BubbleExpandedView mExpandedView; @@ -218,6 +219,14 @@ class Bubble implements BubbleViewProvider { return mTitle; } + String getMetadataShortcutId() { + return mMetadataShortcutId; + } + + boolean hasMetadataShortcutId() { + return (mMetadataShortcutId != null && !mMetadataShortcutId.isEmpty()); + } + /** * Call when the views should be removed, ensure this is called to clean up ActivityView * content. @@ -350,9 +359,9 @@ class Bubble implements BubbleViewProvider { mAppUid = entry.getSbn().getUid(); mInstanceId = entry.getSbn().getInstanceId(); mFlyoutMessage = BubbleViewInfoTask.extractFlyoutMessage(entry); - mShortcutInfo = (entry.getBubbleMetadata() != null - && entry.getBubbleMetadata().getShortcutId() != null - && entry.getRanking() != null) ? entry.getRanking().getShortcutInfo() : null; + mShortcutInfo = (entry.getRanking() != null ? entry.getRanking().getShortcutInfo() : null); + mMetadataShortcutId = (entry.getBubbleMetadata() != null + ? entry.getBubbleMetadata().getShortcutId() : null); if (entry.getRanking() != null) { mIsVisuallyInterruptive = entry.getRanking().visuallyInterruptive(); } diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleDataRepository.kt b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleDataRepository.kt index 390f7064a2271..db64a13f3df34 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleDataRepository.kt +++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleDataRepository.kt @@ -77,7 +77,7 @@ internal class BubbleDataRepository @Inject constructor( BubbleEntity( userId, b.packageName, - b.shortcutInfo?.id ?: return@mapNotNull null, + b.metadataShortcutId ?: return@mapNotNull null, b.key, b.rawDesiredHeight, b.rawDesiredHeightResId, diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java index 7c3e027e2e655..71d10875e9f2e 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java @@ -173,7 +173,8 @@ public class BubbleExpandedView extends LinearLayout { return; } try { - if (!mIsOverflow && mBubble.getShortcutInfo() != null) { + if (!mIsOverflow && mBubble.hasMetadataShortcutId() + && mBubble.getShortcutInfo() != null) { options.setApplyActivityFlagsForBubbles(true); mActivityView.startShortcutActivity(mBubble.getShortcutInfo(), options, null /* sourceBounds */); @@ -616,7 +617,7 @@ public class BubbleExpandedView extends LinearLayout { if (isNew) { mPendingIntent = mBubble.getBubbleIntent(); - if (mPendingIntent != null || mBubble.getShortcutInfo() != null) { + if (mPendingIntent != null || mBubble.hasMetadataShortcutId()) { setContentVisibility(false); mActivityView.setVisibility(VISIBLE); } @@ -788,7 +789,7 @@ public class BubbleExpandedView extends LinearLayout { } private boolean usingActivityView() { - return (mPendingIntent != null || mBubble.getShortcutInfo() != null) + return (mPendingIntent != null || mBubble.hasMetadataShortcutId()) && mActivityView != null; }