Index: chrome/android/java/src/org/chromium/chrome/browser/media/ui/NotificationMediaPlaybackControls.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/media/ui/NotificationMediaPlaybackControls.java b/chrome/android/java/src/org/chromium/chrome/browser/media/ui/NotificationMediaPlaybackControls.java |
index 398d8c032c405054c7baa01f043e62f82eeafe72..bc470d22402c649c87df031af240381f16327b86 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/media/ui/NotificationMediaPlaybackControls.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/media/ui/NotificationMediaPlaybackControls.java |
@@ -8,11 +8,15 @@ import android.app.PendingIntent; |
import android.app.Service; |
import android.content.Context; |
import android.content.Intent; |
+import android.graphics.Bitmap; |
+import android.graphics.drawable.BitmapDrawable; |
+import android.graphics.drawable.Drawable; |
import android.os.IBinder; |
import android.provider.Browser; |
import android.support.v4.app.NotificationCompat; |
import android.widget.RemoteViews; |
+import org.chromium.base.ApiCompatibilityUtils; |
import org.chromium.chrome.R; |
import org.chromium.chrome.browser.IntentHandler.TabOpenType; |
@@ -151,6 +155,8 @@ public class NotificationMediaPlaybackControls { |
private NotificationCompat.Builder mNotificationBuilder; |
+ private Bitmap mNotificationIconBitmap; |
+ |
private MediaNotificationInfo mMediaNotificationInfo; |
private NotificationMediaPlaybackControls(Context context) { |
@@ -234,6 +240,14 @@ public class NotificationMediaPlaybackControls { |
return; |
} |
+ // Android doesn't badge the icons for RemoteViews automatically when |
+ // running the app under the Work profile. |
+ if (mNotificationIconBitmap == null) { |
+ Drawable notificationIconDrawable = ApiCompatibilityUtils.getUserBadgedIcon( |
+ mContext, R.drawable.audio_playing); |
+ mNotificationIconBitmap = drawableToBitmap(notificationIconDrawable); |
+ } |
+ |
if (mNotificationBuilder == null) { |
mNotificationBuilder = new NotificationCompat.Builder(mContext) |
.setSmallIcon(R.drawable.audio_playing) |
@@ -246,7 +260,11 @@ public class NotificationMediaPlaybackControls { |
contentView.setTextViewText(R.id.title, getTitle()); |
contentView.setTextViewText(R.id.status, getStatus()); |
- contentView.setImageViewResource(R.id.icon, R.drawable.audio_playing); |
+ if (mNotificationIconBitmap != null) { |
+ contentView.setImageViewBitmap(R.id.icon, mNotificationIconBitmap); |
+ } else { |
+ contentView.setImageViewResource(R.id.icon, R.drawable.audio_playing); |
+ } |
if (mMediaNotificationInfo.isPaused) { |
contentView.setImageViewResource(R.id.playpause, R.drawable.ic_vidcontrol_play); |
@@ -267,4 +285,11 @@ public class NotificationMediaPlaybackControls { |
mService.startForeground(R.id.media_playback_notification, mNotificationBuilder.build()); |
} |
+ |
+ private Bitmap drawableToBitmap(Drawable drawable) { |
+ if (!(drawable instanceof BitmapDrawable)) return null; |
+ |
+ BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable; |
+ return bitmapDrawable.getBitmap(); |
+ } |
} |