From 734c374976d5553744367fbc82db8c543ee00729 Mon Sep 17 00:00:00 2001 From: Jeff DeCew Date: Mon, 28 Sep 2020 13:14:28 -0400 Subject: [PATCH] Media player attempts to dismiss notifications when players removed. NOTE: this is only a partial fix. See bug for discussion. (Cherry-picked from 725d67d88940fa03cfaac9f3df8b472a1a68f77d) Bug: 169271494 Test: manual Change-Id: I64db4cc618a812063c18a40ea4465aa4c520a3be Merged-In: I64db4cc618a812063c18a40ea4465aa4c520a3be --- .../statusbar/NotificationMediaManager.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java index 8cd82cc775304..38e1de3cada06 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java @@ -40,6 +40,7 @@ import android.os.Trace; import android.os.UserHandle; import android.provider.DeviceConfig; import android.provider.DeviceConfig.Properties; +import android.service.notification.NotificationListenerService; import android.util.ArraySet; import android.util.Log; import android.view.View; @@ -52,6 +53,7 @@ import com.android.systemui.Dumpable; import com.android.systemui.Interpolators; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.dagger.qualifiers.Main; +import com.android.systemui.media.MediaData; import com.android.systemui.media.MediaDataManager; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.dagger.StatusBarModule; @@ -250,6 +252,24 @@ public class NotificationMediaManager implements Dumpable { } }); + mMediaDataManager.addListener(new MediaDataManager.Listener() { + @Override + public void onMediaDataLoaded(@NonNull String key, + @Nullable String oldKey, @NonNull MediaData data) { + } + + @Override + public void onMediaDataRemoved(@NonNull String key) { + NotificationEntry entry = mEntryManager.getPendingOrActiveNotif(key); + if (entry != null) { + // TODO(b/160713608): "removing" this notification won't happen and + // won't send the 'deleteIntent' if the notification is ongoing. + mEntryManager.performRemoveNotification(entry.getSbn(), + NotificationListenerService.REASON_CANCEL); + } + } + }); + mShowCompactMediaSeekbar = "true".equals( DeviceConfig.getProperty(DeviceConfig.NAMESPACE_SYSTEMUI, SystemUiDeviceConfigFlags.COMPACT_MEDIA_SEEKBAR_ENABLED));