From b622447f4ac69010b398025ce872bb3f88708c76 Mon Sep 17 00:00:00 2001 From: Selim Cinek Date: Tue, 4 Jul 2017 11:07:51 +0200 Subject: Keeping notifications around that show guts We're now delaying the showing of the guts until the user actually closes them. Test: manual, remove notification while guts are showing Change-Id: Ife75154eab92ba70d62b8a41e3663daea8a92312 Fixes: 62293195 --- .../systemui/statusbar/phone/StatusBar.java | 24 +++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index 14d0b7ea86b9..79cfcb7c4e6f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -735,6 +735,7 @@ public class StatusBar extends SystemUI implements DemoMode, private HashMap mPendingNotifications = new HashMap<>(); private boolean mClearAllEnabled; @Nullable private View mAmbientIndicationContainer; + private String mKeyToRemoveOnGutsClosed; private SysuiColorExtractor mColorExtractor; private ForegroundServiceController mForegroundServiceController; @@ -1782,6 +1783,13 @@ public class StatusBar extends SystemUI implements DemoMode, mRemoteInputEntriesToRemoveOnCollapse.add(entry); return; } + if (entry != null && mNotificationGutsExposed != null + && mNotificationGutsExposed == entry.row.getGuts()) { + Log.w(TAG, "Keeping notification because it's showing guts. " + key); + mLatestRankingMap = ranking; + mKeyToRemoveOnGutsClosed = key; + return; + } if (entry != null) { mForegroundServiceController.removeNotification(entry.notification); @@ -3456,6 +3464,8 @@ public class StatusBar extends SystemUI implements DemoMode, pw.println(Settings.Global.zenModeToString(mZenMode)); pw.print(" mUseHeadsUp="); pw.println(mUseHeadsUp); + pw.print(" mKeyToRemoveOnGutsClosed="); + pw.println(mKeyToRemoveOnGutsClosed); if (mStatusBarView != null) { dumpBarTransitions(pw, "mStatusBarView", mStatusBarView.getBarTransitions()); } @@ -6098,6 +6108,11 @@ public class StatusBar extends SystemUI implements DemoMode, mNotificationGutsExposed = null; mGutsMenuItem = null; } + String key = sbn.getKey(); + if (key.equals(mKeyToRemoveOnGutsClosed)) { + mKeyToRemoveOnGutsClosed = null; + removeNotification(key, mLatestRankingMap); + } }); View gutsView = item.getGutsView(); @@ -7056,9 +7071,12 @@ public class StatusBar extends SystemUI implements DemoMode, Entry entry = mNotificationData.get(key); if (entry == null) { return; - } else { - mHeadsUpEntriesToRemoveOnSwitch.remove(entry); - mRemoteInputEntriesToRemoveOnCollapse.remove(entry); + } + mHeadsUpEntriesToRemoveOnSwitch.remove(entry); + mRemoteInputEntriesToRemoveOnCollapse.remove(entry); + if (key.equals(mKeyToRemoveOnGutsClosed)) { + mKeyToRemoveOnGutsClosed = null; + Log.w(TAG, "Notification that was kept for guts was updated. " + key); } Notification n = notification.getNotification(); -- cgit v1.2.3-59-g8ed1b