Index: chrome/browser/ui/webui/options/personal_options_handler.cc |
diff --git a/chrome/browser/ui/webui/options/personal_options_handler.cc b/chrome/browser/ui/webui/options/personal_options_handler.cc |
index 281dfc2173391c3a5c3d2378f9127a58be1e9b8d..877220ebc00ab61be65cec6dac71e1d91c21e026 100644 |
--- a/chrome/browser/ui/webui/options/personal_options_handler.cc |
+++ b/chrome/browser/ui/webui/options/personal_options_handler.cc |
@@ -26,6 +26,7 @@ |
#include "chrome/browser/sync/sync_ui_util.h" |
#include "chrome/browser/themes/theme_service.h" |
#include "chrome/browser/themes/theme_service_factory.h" |
+#include "chrome/browser/ui/webui/web_ui_util.h" |
#include "chrome/common/chrome_notification_types.h" |
#include "chrome/common/chrome_paths.h" |
#include "chrome/common/chrome_switches.h" |
@@ -51,6 +52,18 @@ |
#include "chrome/browser/ui/gtk/gtk_theme_service.h" |
#endif // defined(TOOLKIT_GTK) |
+#include "skia/ext/image_operations.h" |
+#include "ui/gfx/canvas_skia.h" |
+ |
+SkBitmap FixGAIABmp(const SkBitmap& bmp) { |
+ SkBitmap rimage = skia::ImageOperations::Resize( |
+ bmp, skia::ImageOperations::RESIZE_BEST, 29, 29); |
+ |
+ gfx::CanvasSkia canvas(38, 31, false); |
+ canvas.DrawBitmapInt(rimage, 4, 1); |
+ return canvas.ExtractBitmap(); |
+} |
+ |
PersonalOptionsHandler::PersonalOptionsHandler() { |
multiprofile_ = ProfileManager::IsMultipleProfilesEnabled(); |
#if defined(OS_CHROMEOS) |
@@ -408,11 +421,20 @@ void PersonalOptionsHandler::SendProfilesInfo() { |
web_ui_->tab_contents()->browser_context()->GetPath(); |
for (size_t i = 0, e = cache.GetNumberOfProfiles(); i < e; ++i) { |
DictionaryValue* profile_value = new DictionaryValue(); |
- size_t icon_index = cache.GetAvatarIconIndexOfProfileAtIndex(i); |
FilePath profile_path = cache.GetPathOfProfileAtIndex(i); |
profile_value->SetString("name", cache.GetNameOfProfileAtIndex(i)); |
- profile_value->SetString("iconURL", |
- cache.GetDefaultAvatarIconUrl(icon_index)); |
+ |
+ std::string bmp_url; |
+ if (!cache.IsUsingCustomAvatarIconForProfileAtIndex(i)) { |
+ size_t icon_index = cache.GetAvatarIconIndexOfProfileAtIndex(i); |
+ bmp_url = cache.GetDefaultAvatarIconUrl(icon_index); |
+ } else { |
+ SkBitmap bmp = cache.GetGAIAPictureOfProfileAtIndex(i); |
+ SkBitmap bmp2 = FixGAIABmp(bmp); |
+ bmp_url = web_ui_util::GetImageDataUrl(bmp2); |
+ } |
+ profile_value->SetString("iconURL", bmp_url); |
+ |
profile_value->Set("filePath", base::CreateFilePathValue(profile_path)); |
profile_value->SetBoolean("isCurrentProfile", |
profile_path == current_profile_path); |