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

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

Issue 1458703003: Media Session API: use MediaMetadata in the browser process. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@media_session_browser_side
Patch Set: nits Created 4 years, 9 months 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 db674b73dd62cb97e9aed4aab4633bb09d4401bf..657410fef750afc39c8b3bb340641f3dc60cbe10 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
@@ -6,6 +6,7 @@ package org.chromium.chrome.browser.media.ui;
import android.app.Activity;
import android.media.AudioManager;
+import android.text.TextUtils;
import org.chromium.base.ApplicationStatus;
import org.chromium.base.Log;
@@ -17,6 +18,7 @@ import org.chromium.chrome.browser.tab.TabObserver;
import org.chromium.chrome.browser.util.UrlUtilities;
import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.browser.WebContentsObserver;
+import org.chromium.content_public.common.MediaMetadata;
import org.chromium.ui.base.WindowAndroid;
import java.net.URI;
@@ -36,6 +38,7 @@ public class MediaSessionTabHelper {
private WebContentsObserver mWebContentsObserver;
private int mPreviousVolumeControlStream = AudioManager.USE_DEFAULT_STREAM_TYPE;
private MediaNotificationInfo.Builder mNotificationInfoBuilder = null;
+ private MediaMetadata mFallbackMetadata;
private MediaNotificationListener mControlsListener = new MediaNotificationListener() {
@Override
@@ -84,7 +87,8 @@ public class MediaSessionTabHelper {
}
@Override
- public void mediaSessionStateChanged(boolean isControllable, boolean isPaused) {
+ public void mediaSessionStateChanged(boolean isControllable, boolean isPaused,
+ MediaMetadata metadata) {
if (!isControllable) {
hideNotification();
return;
@@ -97,8 +101,20 @@ public class MediaSessionTabHelper {
+ "Showing the full URL instead.");
}
+ mFallbackMetadata = null;
+
+ // The page's title is used as a placeholder if no title is specified in the
+ // metadata.
+ if (TextUtils.isEmpty(metadata.getTitle())) {
+ mFallbackMetadata = new MediaMetadata(
+ sanitizeMediaTitle(mTab.getTitle()),
+ metadata.getArtist(),
+ metadata.getAlbum());
+ metadata = mFallbackMetadata;
+ }
+
mNotificationInfoBuilder = new MediaNotificationInfo.Builder()
- .setTitle(sanitizeMediaTitle(mTab.getTitle()))
+ .setMetadata(metadata)
.setPaused(isPaused)
.setOrigin(origin)
.setTabId(mTab.getId())
@@ -145,9 +161,11 @@ public class MediaSessionTabHelper {
@Override
public void onTitleUpdated(Tab tab) {
assert tab == mTab;
- if (mNotificationInfoBuilder == null) return;
+ if (mNotificationInfoBuilder == null || mFallbackMetadata == null) return;
+
+ mFallbackMetadata.setTitle(sanitizeMediaTitle(mTab.getTitle()));
+ mNotificationInfoBuilder.setMetadata(mFallbackMetadata);
- mNotificationInfoBuilder.setTitle(sanitizeMediaTitle(mTab.getTitle()));
MediaNotificationManager.show(ApplicationStatus.getApplicationContext(),
mNotificationInfoBuilder.build());
}

Powered by Google App Engine
This is Rietveld 408576698