| 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
|
|
|