Chromium Code Reviews| Index: chrome/browser/android/tab_android.cc |
| diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_android.cc |
| index 7ea7eb6dc4dc62ec567ef3a8488282443d143c9c..4d207433d38b67c55dd51c951b1f49a927cfc407 100644 |
| --- a/chrome/browser/android/tab_android.cc |
| +++ b/chrome/browser/android/tab_android.cc |
| @@ -7,6 +7,7 @@ |
| #include "base/android/jni_android.h" |
| #include "base/android/jni_array.h" |
| #include "base/android/jni_string.h" |
| +#include "base/base64.h" |
| #include "base/metrics/histogram.h" |
| #include "base/trace_event/trace_event.h" |
| #include "cc/layers/layer.h" |
| @@ -76,6 +77,7 @@ |
| #include "ui/base/window_open_disposition.h" |
| #include "ui/gfx/android/device_display_info.h" |
| #include "ui/gfx/android/java_bitmap.h" |
| +#include "ui/gfx/codec/png_codec.h" |
| #include "ui/gfx/favicon_size.h" |
| #include "ui/gfx/image/image_skia.h" |
| @@ -687,6 +689,33 @@ ScopedJavaLocalRef<jobject> TabAndroid::GetFavicon(JNIEnv* env, |
| return bitmap; |
| } |
| +GURL TabAndroid::GetFaviconURL() { |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| + ScopedJavaLocalRef<jobject> javaBitmap = |
| + Java_Tab_getFavicon(env, weak_java_tab_.get(env).obj()); |
| + if (!javaBitmap.obj()) |
| + return GURL(); |
| + |
| + SkBitmap bitmap = gfx::CreateSkBitmapFromJavaBitmap( |
| + gfx::JavaBitmap(javaBitmap.obj())); |
| + std::vector<unsigned char> data; |
| + SkAutoLockPixels lock_image(bitmap); |
| + bool encoded = gfx::PNGCodec::Encode( |
| + reinterpret_cast<unsigned char*>(bitmap.getAddr32(0, 0)), |
| + gfx::PNGCodec::FORMAT_SkBitmap, |
| + gfx::Size(bitmap.width(), bitmap.height()), |
| + bitmap.width() * bitmap.bytesPerPixel(), |
| + false, std::vector<gfx::PNGCodec::Comment>(), &data); |
| + if (!encoded) |
| + return GURL(); |
| + |
| + std::string base_64_data; |
| + base::Base64Encode( |
| + base::StringPiece(reinterpret_cast<char*>(&data[0]), data.size()), |
| + &base_64_data); |
| + return GURL("data:image/png;base64," + base_64_data); |
|
michaelbai
2015/05/08 15:25:42
Should the png and URL encoding be in dev_tools_di
vkuzkokov
2015/05/12 12:16:46
Moved.
|
| +} |
| + |
| prerender::PrerenderManager* TabAndroid::GetPrerenderManager() const { |
| Profile* profile = GetProfile(); |
| if (!profile) |