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
This commit is contained in:
Selim Cinek
2017-07-04 11:07:51 +02:00
parent d43bc31eb7
commit b622447f4a

View File

@@ -735,6 +735,7 @@ public class StatusBar extends SystemUI implements DemoMode,
private HashMap<String, Entry> 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();