Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c8192f5a authored by Matt Pietal's avatar Matt Pietal Committed by Automerger Merge Worker
Browse files

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

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

Change-Id: I343232605b228c320d1af81f05c9dc2f8035cccf
parents 7c057b4e 65f41278
Loading
Loading
Loading
Loading
+18 −2
Original line number Diff line number Diff line
@@ -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