Media - Handle cleanup of pending notification entries am: 65f41278ee

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12514147

Change-Id: I343232605b228c320d1af81f05c9dc2f8035cccf
This commit is contained in:
Matt Pietal
2020-09-02 20:45:38 +00:00
committed by Automerger Merge Worker

View File

@@ -21,6 +21,7 @@ import static com.android.systemui.statusbar.phone.StatusBar.ENABLE_LOCKSCREEN_W
import static com.android.systemui.statusbar.phone.StatusBar.SHOW_LOCKSCREEN_MEDIA_ARTWORK;
import android.annotation.MainThread;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.Notification;
import android.content.Context;
@@ -57,6 +58,7 @@ import com.android.systemui.statusbar.dagger.StatusBarModule;
import com.android.systemui.statusbar.notification.NotificationEntryListener;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
import com.android.systemui.statusbar.phone.BiometricUnlockController;
import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.phone.LockscreenWallpaper;
@@ -234,8 +236,17 @@ public class NotificationMediaManager implements Dumpable {
NotificationVisibility visibility,
boolean removedByUser,
int reason) {
onNotificationRemoved(entry.getKey());
mediaDataManager.onNotificationRemoved(entry.getKey());
removeEntry(entry);
}
});
// Pending entries are never inflated, and will never generate a call to onEntryRemoved().
// This can happen when notifications are added and canceled before inflation. Add this
// separate listener for cleanup, since media inflation occurs onPendingEntryAdded().
notificationEntryManager.addCollectionListener(new NotifCollectionListener() {
@Override
public void onEntryCleanUp(@NonNull NotificationEntry entry) {
removeEntry(entry);
}
});
@@ -248,6 +259,11 @@ public class NotificationMediaManager implements Dumpable {
mPropertiesChangedListener);
}
private void removeEntry(NotificationEntry entry) {
onNotificationRemoved(entry.getKey());
mMediaDataManager.onNotificationRemoved(entry.getKey());
}
/**
* Check if a state should be considered actively playing
* @param state a PlaybackState