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

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

Issue 2015433003: Implement MediaMetadata artwork in content (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixed tests Created 4 years, 7 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 143afe85344b5624e90d5dd046454ae70fb2b915..37e41741f0b4e74f67a4d1991b8703217f3a401a 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
@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.media.ui;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
+import android.graphics.Rect;
import android.media.AudioManager;
import android.text.TextUtils;
@@ -40,12 +41,14 @@ public class MediaSessionTabHelper {
private Tab mTab;
private Bitmap mFavicon = null;
+ private Bitmap mMediaSessionArtwork = null;
private String mOrigin = null;
private WebContents mWebContents;
private WebContentsObserver mWebContentsObserver;
private int mPreviousVolumeControlStream = AudioManager.USE_DEFAULT_STREAM_TYPE;
private MediaNotificationInfo.Builder mNotificationInfoBuilder = null;
private MediaMetadata mFallbackMetadata;
+ private MediaMetadata mMetadata;
private MediaNotificationListener mControlsListener = new MediaNotificationListener() {
@Override
@@ -94,31 +97,54 @@ public class MediaSessionTabHelper {
}
@Override
- public void mediaSessionStateChanged(boolean isControllable, boolean isPaused,
- MediaMetadata metadata) {
+ public void mediaMetadataChanged(MediaMetadata metadata) {
+ if (!TextUtils.isEmpty(metadata.getTitle())) {
+ mMetadata = new MediaMetadata(
+ metadata.getTitle(),
+ metadata.getArtist(),
+ metadata.getAlbum());
+ } else {
+ mMetadata = new MediaMetadata(
+ sanitizeMediaTitle(mTab.getTitle()),
+ metadata.getArtist(),
+ metadata.getAlbum());
+ }
+ Log.i(TAG, "# artworks=" + Integer.toString(metadata.getArtworks().size()));
+ for (MediaMetadata.Artwork artwork : metadata.getArtworks()) {
+ Log.i(TAG, "=========================");
+ Log.i(TAG, "src=" + artwork.getSrc());
+ Log.i(TAG, "type=" + artwork.getType());
+ String sizes = "sizes=";
+ for (Rect size : artwork.getSizes()) {
+ sizes += Integer.toString(size.width()) + "x"
+ + Integer.toString(size.height()) + " ";
+ }
+ Log.i(TAG, "sizes=" + sizes);
+ }
+ }
+
+ @Override
+ public void mediaSessionStateChanged(boolean isControllable, boolean isPaused) {
if (!isControllable) {
hideNotification();
return;
}
- 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;
- }
-
Intent contentIntent = Tab.createBringTabToFrontIntent(mTab.getId());
if (contentIntent != null) {
contentIntent.putExtra(MediaNotificationUma.INTENT_EXTRA_NAME,
MediaNotificationUma.SOURCE_MEDIA);
}
-
+ MediaMetadata metadata = null;
+ if (mMetadata != null) {
+ metadata = mMetadata;
+ } else {
+ if (mFallbackMetadata == null) {
+ mFallbackMetadata = new MediaMetadata(
+ sanitizeMediaTitle(mTab.getTitle()), "", "");
+ }
+ metadata = mFallbackMetadata;
+ }
mNotificationInfoBuilder =
new MediaNotificationInfo.Builder()
.setMetadata(metadata)
@@ -127,7 +153,7 @@ public class MediaSessionTabHelper {
.setTabId(mTab.getId())
.setPrivate(mTab.isIncognito())
.setIcon(R.drawable.audio_playing)
- .setLargeIcon(mFavicon)
+ .setLargeIcon(selectLargeIcon())
.setDefaultLargeIcon(R.drawable.audio_playing_square)
.setActions(MediaNotificationInfo.ACTION_PLAY_PAUSE
| MediaNotificationInfo.ACTION_SWIPEAWAY)
@@ -177,8 +203,7 @@ public class MediaSessionTabHelper {
if (!updateFavicon(icon)) return;
if (mNotificationInfoBuilder == null) return;
-
- mNotificationInfoBuilder.setLargeIcon(mFavicon);
+ mNotificationInfoBuilder.setLargeIcon(selectLargeIcon());
MediaNotificationManager.show(
ContextUtils.getApplicationContext(), mNotificationInfoBuilder.build());
}
@@ -198,11 +223,12 @@ public class MediaSessionTabHelper {
if (mOrigin != null && mOrigin.equals(origin)) return;
mOrigin = origin;
mFavicon = null;
+ mMediaSessionArtwork = null;
if (mNotificationInfoBuilder == null) return;
mNotificationInfoBuilder.setOrigin(mOrigin);
- mNotificationInfoBuilder.setLargeIcon(mFavicon);
+ mNotificationInfoBuilder.setLargeIcon(selectLargeIcon());
MediaNotificationManager.show(
ContextUtils.getApplicationContext(), mNotificationInfoBuilder.build());
}
@@ -307,4 +333,9 @@ public class MediaSessionTabHelper {
mFavicon = icon;
return true;
}
+
+ private Bitmap selectLargeIcon() {
+ if (mMediaSessionArtwork != null) return mMediaSessionArtwork;
+ return mFavicon;
+ }
}

Powered by Google App Engine
This is Rietveld 408576698