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 d69aa18d31432d9ed7ad9b12c1c814255aeb3b84..1fac0248cfc5145f68d4c98c745e0af98dba8d08 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; |
@@ -19,6 +20,7 @@ import org.chromium.chrome.browser.tab.EmptyTabObserver; |
import org.chromium.chrome.browser.tab.Tab; |
import org.chromium.chrome.browser.tab.TabObserver; |
import org.chromium.components.url_formatter.UrlFormatter; |
+import org.chromium.content_public.browser.ImageDownloadCallback; |
import org.chromium.content_public.browser.WebContents; |
import org.chromium.content_public.browser.WebContentsObserver; |
import org.chromium.content_public.common.MediaMetadata; |
@@ -26,6 +28,7 @@ import org.chromium.ui.base.WindowAndroid; |
import java.net.URI; |
import java.net.URISyntaxException; |
+import java.util.List; |
/** |
* A tab helper responsible for enabling/disabling media controls and passing |
@@ -46,6 +49,25 @@ public class MediaSessionTabHelper { |
private MediaNotificationInfo.Builder mNotificationInfoBuilder = null; |
private MediaMetadata mFallbackMetadata; |
+ private ImageDownloadCallback mImageDownloadCallback = new ImageDownloadCallback() { |
+ @Override |
+ public void onFinishDownloadImage(int id, int httpStatusCode, String imageUrl, |
+ List<Bitmap> bitmaps, List<Rect> sizes) { |
+ Log.i(TAG, "====== image downloaded ======"); |
+ Log.i(TAG, "id=" + Integer.toString(id)); |
+ Log.i(TAG, "httpStatusCode=" + Integer.toString(httpStatusCode)); |
+ Log.i(TAG, "imageUrl=" + imageUrl); |
+ if (bitmaps.isEmpty()) { |
+ Log.i(TAG, "failed to retrive image"); |
+ return; |
+ } |
+ if (mNotificationInfoBuilder == null) return; |
+ mNotificationInfoBuilder.setLargeIcon(bitmaps.get(0)); |
+ MediaNotificationManager.show( |
+ ContextUtils.getApplicationContext(), mNotificationInfoBuilder.build()); |
+ } |
+ }; |
+ |
private MediaNotificationListener mControlsListener = new MediaNotificationListener() { |
@Override |
public void onPlay(int actionSource) { |
@@ -100,6 +122,16 @@ public class MediaSessionTabHelper { |
return; |
} |
+ if (metadata != null && !metadata.getArtwork().isEmpty()) { |
+ Log.i(TAG, "mediaSessionStateChanged(): downloading image"); |
+ mTab.getWebContents().downloadImage( |
+ metadata.getArtwork().get(0).getSrc(), |
+ false, 1024, false, mImageDownloadCallback); |
+ } else { |
+ if (metadata == null) Log.i(TAG, "metadata is null"); |
+ else if (metadata.getArtwork().isEmpty()) Log.i(TAG, "artwork empty"); |
+ } |
+ |
mFallbackMetadata = null; |
// The page's title is used as a placeholder if no title is specified in the |