| 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());
|
| }
|
|
|