Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java |
| index ecb2acdea553ba595f9bc8bddd9d754555f935c8..d655efdc212630c1e9db809dd421fe04c225ca4c 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java |
| @@ -10,6 +10,7 @@ import android.content.Intent; |
| import android.content.pm.PackageManager; |
| import android.content.pm.ResolveInfo; |
| import android.graphics.Bitmap; |
| +import android.graphics.BitmapFactory; |
| import android.graphics.Canvas; |
| import android.graphics.Color; |
| import android.graphics.Paint; |
| @@ -23,6 +24,7 @@ import android.graphics.drawable.Drawable; |
| import android.net.Uri; |
| import android.os.Handler; |
| import android.os.Looper; |
| +import android.text.TextUtils; |
| import android.util.Base64; |
| import android.util.DisplayMetrics; |
| import android.util.TypedValue; |
| @@ -119,13 +121,7 @@ public class ShortcutHelper { |
| Intent shortcutIntent; |
| if (isWebappCapable) { |
| // Encode the icon as a base64 string (Launcher drops Bitmaps in the Intent). |
| - String encodedIcon = ""; |
| - if (icon != null) { |
| - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); |
| - icon.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream); |
| - byte[] byteArray = byteArrayOutputStream.toByteArray(); |
| - encodedIcon = Base64.encodeToString(byteArray, Base64.DEFAULT); |
| - } |
| + String encodedIcon = icon == null ? "" : encodeBitmapAsString(icon); |
|
gone
2015/08/27 18:24:20
nit: This icon == null check should be at the begi
Lalit Maganti
2015/08/27 18:36:56
Done.
|
| // Add the shortcut as a launcher icon for a full-screen Activity. |
| shortcutIntent = new Intent(); |
| @@ -257,6 +253,30 @@ public class ShortcutHelper { |
| return bitmap; |
| } |
| + /** |
| + * Compresses a bitmap into a PNG and converts into a Base64 encoded string. |
| + * The encoded string can be decoded using {@link decodeBitmapFromString(String)}. |
| + * @param bitmap The Bitmap to compress and encode. |
| + * @return the String encoding the Bitmap. |
| + */ |
| + public static String encodeBitmapAsString(Bitmap bitmap) { |
| + ByteArrayOutputStream output = new ByteArrayOutputStream(); |
| + bitmap.compress(Bitmap.CompressFormat.PNG, 100, output); |
| + return Base64.encodeToString(output.toByteArray(), Base64.DEFAULT); |
| + } |
| + |
| + /** |
| + * Decodes a Base64 string into a Bitmap. Used to decode Bitmaps encoded by |
| + * {@link encodeBitmapAsString(Bitmap)}. |
| + * @param encodedString the Base64 String to decode. |
| + * @return the Bitmap which was encoded by the String. |
| + */ |
| + public static Bitmap decodeBitmapFromString(String encodedString) { |
| + if (TextUtils.isEmpty(encodedString)) return null; |
| + byte[] decoded = Base64.decode(encodedString, Base64.DEFAULT); |
| + return BitmapFactory.decodeByteArray(decoded, 0, decoded.length); |
| + } |
| + |
| private static Bitmap getBitmapFromResourceId(Context context, int id, int density) { |
| Drawable drawable = ApiCompatibilityUtils.getDrawableForDensity( |
| context.getResources(), id, density); |