Removing notifications always immediately when swiping them away

When swiping away notifications we were previously relying on the
notification manager to cancel the notification for us. If the state
diverges however (due to bugs) this leads to unrecoverable empty
holes which is super bad.

Merged-In: If63c5434b4e438fea560e0013a12c60655103977
Change-Id: If63c5434b4e438fea560e0013a12c60655103977
Test: existing tests pass
Bug: 33457118
This commit is contained in:
Selim Cinek
2016-12-15 14:44:36 -08:00
parent 45c9ba9c15
commit 5e018206e2
2 changed files with 6 additions and 13 deletions

View File

@@ -979,12 +979,12 @@ public abstract class BaseStatusBar extends SystemUI implements
// Accessibility feedback
v.announceForAccessibility(
mContext.getString(R.string.accessibility_notification_dismissed));
performRemoveNotification(row.getStatusBarNotification(), false /* removeView */);
performRemoveNotification(row.getStatusBarNotification());
}
});
}
protected void performRemoveNotification(StatusBarNotification n, boolean removeView) {
protected void performRemoveNotification(StatusBarNotification n) {
final String pkg = n.getPackageName();
final String tag = n.getTag();
final int id = n.getId();
@@ -994,14 +994,8 @@ public abstract class BaseStatusBar extends SystemUI implements
if (FORCE_REMOTE_INPUT_HISTORY
&& mKeysKeptForRemoteInput.contains(n.getKey())) {
mKeysKeptForRemoteInput.remove(n.getKey());
removeView = true;
}
if (mRemoteInputEntriesToRemoveOnCollapse.remove(mNotificationData.get(n.getKey()))) {
removeView = true;
}
if (removeView) {
removeNotification(n.getKey(), null);
}
removeNotification(n.getKey(), null);
} catch (RemoteException ex) {
// system process is dead if we're here.
@@ -2000,8 +1994,7 @@ public abstract class BaseStatusBar extends SystemUI implements
Runnable removeRunnable = new Runnable() {
@Override
public void run() {
performRemoveNotification(parentToCancelFinal,
true);
performRemoveNotification(parentToCancelFinal);
}
};
if (isCollapsing()) {

View File

@@ -1719,12 +1719,12 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
}
@Override
protected void performRemoveNotification(StatusBarNotification n, boolean removeView) {
protected void performRemoveNotification(StatusBarNotification n) {
Entry entry = mNotificationData.get(n.getKey());
if (mRemoteInputController.isRemoteInputActive(entry)) {
mRemoteInputController.removeRemoteInput(entry, null);
}
super.performRemoveNotification(n, removeView);
super.performRemoveNotification(n);
}
@Override