Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4331)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaSessionTabHelper.java

Issue 2442303002: Adding new media controls to MediaNotification (Closed)
Patch Set: rebased Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaSessionTabHelper.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaSessionTabHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaSessionTabHelper.java
index 49c85e8606afd5a87f9fd88c3041baa63934f599..9a7ba3833f525af17c8765be2a34a662f8571126 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaSessionTabHelper.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaSessionTabHelper.java
@@ -13,6 +13,7 @@ import android.text.TextUtils;
import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
import org.chromium.base.VisibleForTesting;
+import org.chromium.blink.mojom.MediaSessionAction;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.metrics.MediaNotificationUma;
import org.chromium.chrome.browser.metrics.MediaSessionUMA;
@@ -28,6 +29,8 @@ import org.chromium.ui.base.WindowAndroid;
import java.net.URI;
import java.net.URISyntaxException;
+import java.util.HashSet;
+import java.util.Set;
import javax.annotation.Nullable;
@@ -56,6 +59,7 @@ public class MediaSessionTabHelper implements MediaImageCallback {
// The currently showing metadata.
private MediaMetadata mCurrentMetadata = null;
private MediaImageManager mMediaImageManager = null;
+ private Set<Integer> mMediaSessionActions = new HashSet<Integer>();
@VisibleForTesting
@Nullable
@@ -93,6 +97,14 @@ public class MediaSessionTabHelper implements MediaImageCallback {
mMediaSessionObserver.getMediaSession().stop();
}
}
+
+ @Override
+ public void onMediaSessionAction(int action) {
+ if (!MediaSessionAction.isKnownValue(action)) return;
+ if (mMediaSessionObserver != null) {
+ mMediaSessionObserver.getMediaSession().didReceiveAction(action);
+ }
+ }
};
void hideNotification() {
@@ -145,7 +157,8 @@ public class MediaSessionTabHelper implements MediaImageCallback {
| MediaNotificationInfo.ACTION_SWIPEAWAY)
.setContentIntent(contentIntent)
.setId(R.id.media_playback_notification)
- .setListener(mControlsListener);
+ .setListener(mControlsListener)
+ .setMediaSessionActions(mMediaSessionActions);
MediaNotificationManager.show(ContextUtils.getApplicationContext(),
mNotificationInfoBuilder.build());
@@ -165,6 +178,20 @@ public class MediaSessionTabHelper implements MediaImageCallback {
}
updateNotificationMetadata();
}
+
+ @Override
+ public void mediaSessionEnabledAction(int action) {
+ if (!MediaSessionAction.isKnownValue(action)) return;
+ mMediaSessionActions.add(action);
+ updateNotificationActions();
+ }
+
+ @Override
+ public void mediaSessionDisabledAction(int action) {
+ if (!MediaSessionAction.isKnownValue(action)) return;
+ mMediaSessionActions.remove(action);
+ updateNotificationActions();
+ }
};
}
@@ -186,6 +213,7 @@ public class MediaSessionTabHelper implements MediaImageCallback {
if (mMediaSessionObserver == null) return;
mMediaSessionObserver.stopObserving();
mMediaSessionObserver = null;
+ mMediaSessionActions.clear();
}
private final TabObserver mTabObserver = new EmptyTabObserver() {
@@ -370,6 +398,14 @@ public class MediaSessionTabHelper implements MediaImageCallback {
return new MediaMetadata(title, artist, album);
}
+ private void updateNotificationActions() {
+ if (mNotificationInfoBuilder == null) return;
+
+ mNotificationInfoBuilder.setMediaSessionActions(mMediaSessionActions);
+ MediaNotificationManager.show(
+ ContextUtils.getApplicationContext(), mNotificationInfoBuilder.build());
+ }
+
@Override
public void onImageDownloaded(Bitmap image) {
mPageMediaImage = MediaNotificationManager.scaleIconForDisplay(image);

Powered by Google App Engine
This is Rietveld 408576698