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

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

Issue 1266023002: [MediaSession,Android] Use a badged notification icon for the Work profile (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 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
« no previous file with comments | « base/android/java/src/org/chromium/base/ApiCompatibilityUtils.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..70471d64a6d31d64d10b59d8bb99ee195f973d00 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,16 @@ import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+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 +156,8 @@ public class NotificationMediaPlaybackControls {
private NotificationCompat.Builder mNotificationBuilder;
+ private Bitmap mNotificationIconBitmap;
+
private MediaNotificationInfo mMediaNotificationInfo;
private NotificationMediaPlaybackControls(Context context) {
@@ -234,6 +241,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 +261,7 @@ public class NotificationMediaPlaybackControls {
contentView.setTextViewText(R.id.title, getTitle());
contentView.setTextViewText(R.id.status, getStatus());
- contentView.setImageViewResource(R.id.icon, R.drawable.audio_playing);
+ contentView.setImageViewBitmap(R.id.icon, mNotificationIconBitmap);
if (mMediaNotificationInfo.isPaused) {
contentView.setImageViewResource(R.id.playpause, R.drawable.ic_vidcontrol_play);
@@ -267,4 +282,27 @@ public class NotificationMediaPlaybackControls {
mService.startForeground(R.id.media_playback_notification, mNotificationBuilder.build());
}
+
+ private Bitmap drawableToBitmap(Drawable drawable) {
+ Bitmap bitmap = null;
+
+ if (drawable instanceof BitmapDrawable) {
+ BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
+ if (bitmapDrawable.getBitmap() != null) {
+ return bitmapDrawable.getBitmap();
aurimas (slooooooooow) 2015/07/30 16:51:28 Almost every time we should return here. Otherwise
+ }
+ }
+
+ if (drawable.getIntrinsicWidth() <= 0 || drawable.getIntrinsicHeight() <= 0) {
+ bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
+ } else {
+ bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),
+ drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
+ }
+
+ Canvas canvas = new Canvas(bitmap);
+ drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
+ drawable.draw(canvas);
+ return bitmap;
+ }
}
« no previous file with comments | « base/android/java/src/org/chromium/base/ApiCompatibilityUtils.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698