Chromium Code Reviews| Index: chrome/browser/profiles/profile_shortcut_manager_win.cc |
| diff --git a/chrome/browser/profiles/profile_shortcut_manager_win.cc b/chrome/browser/profiles/profile_shortcut_manager_win.cc |
| index e0b6b86145a054966d1bced9289be201a4e88b6d..56e1def5de6ea2175ecf040c84675641af97561e 100644 |
| --- a/chrome/browser/profiles/profile_shortcut_manager_win.cc |
| +++ b/chrome/browser/profiles/profile_shortcut_manager_win.cc |
| @@ -73,8 +73,8 @@ const int kProfileAvatarBadgeSize = kShortcutIconSize / 2; |
| const int kCurrentProfileIconVersion = 3; |
| -// 2x sized profile avatar icons. Mirrors |kDefaultAvatarIconResources| in |
| -// profile_info_cache.cc. |
| +// 2x sized profile avatar icons. Mirrors |GetDefaultAvatarIconResourceInfo()| |
| +// in profile_avatar_icon_util.cc |
|
noms (inactive)
2014/10/30 17:39:08
nit: needs to end in a .
Roger Tawa OOO till Jul 10th
2014/10/31 19:44:39
Removed this code from CL.
|
| const int kProfileAvatarIconResources2x[] = { |
| IDR_PROFILE_AVATAR_2X_0, |
| IDR_PROFILE_AVATAR_2X_1, |
| @@ -599,14 +599,6 @@ SkBitmap GetSkBitmapCopy(const gfx::Image& image) { |
| return bitmap_copy; |
| } |
| -// Returns a copied SkBitmap for the given resource id that can be safely passed |
| -// to another thread. |
| -SkBitmap GetImageResourceSkBitmapCopy(int resource_id) { |
| - const gfx::Image image = |
| - ResourceBundle::GetSharedInstance().GetNativeImageNamed(resource_id); |
| - return GetSkBitmapCopy(image); |
| -} |
| - |
| } // namespace |
| namespace profiles { |
| @@ -813,35 +805,12 @@ void ProfileShortcutManagerWin::CreateOrUpdateShortcutsForProfileAtPath( |
| if (!remove_badging) { |
| params.profile_name = cache->GetNameOfProfileAtIndex(profile_index); |
| - // The profile might be using the Gaia avatar, which is not in the |
| - // resources array. |
| - bool has_gaia_image = false; |
| - if (cache->IsUsingGAIAPictureOfProfileAtIndex(profile_index)) { |
| - const gfx::Image* image = |
| - cache->GetGAIAPictureOfProfileAtIndex(profile_index); |
| - if (image) { |
| - params.avatar_image_1x = GetSkBitmapCopy(*image); |
| - // Gaia images are 256px, which makes them big enough to use in the |
| - // large icon case as well. |
| - DCHECK_GE(image->Width(), IconUtil::kLargeIconSize); |
| - params.avatar_image_2x = params.avatar_image_1x; |
| - has_gaia_image = true; |
| - } |
| - } |
| - |
| - // If the profile isn't using a Gaia image, or if the Gaia image did not |
| - // exist, revert to the previously used avatar icon. |
| - if (!has_gaia_image) { |
| - const size_t icon_index = |
| - cache->GetAvatarIconIndexOfProfileAtIndex(profile_index); |
| - const int resource_id_1x = |
| - profiles::GetDefaultAvatarIconResourceIDAtIndex(icon_index); |
| - const int resource_id_2x = kProfileAvatarIconResources2x[icon_index]; |
| - // Make a copy of the SkBitmaps to ensure that we can safely use the image |
| - // data on the FILE thread. |
| - params.avatar_image_1x = GetImageResourceSkBitmapCopy(resource_id_1x); |
| - params.avatar_image_2x = GetImageResourceSkBitmapCopy(resource_id_2x); |
| - } |
| + gfx::Image image_1x; |
| + gfx::Image image_2x; |
| + GetBadgingAvatarImages(profile_manager_, profile_path, &image_1x, |
| + &image_2x); |
| + params.avatar_image_1x = GetSkBitmapCopy(image_1x); |
| + params.avatar_image_2x = GetSkBitmapCopy(image_2x); |
| } |
| BrowserThread::PostTask( |
| BrowserThread::FILE, FROM_HERE, |
| @@ -872,3 +841,52 @@ void ProfileShortcutManagerWin::Observe( |
| break; |
| } |
| } |
| + |
| +// static |
| +void ProfileShortcutManagerWin::GetBadgingAvatarImages( |
| + ProfileManager* profile_manager, |
| + const base::FilePath& profile_path, |
| + gfx::Image* image_1x, |
| + gfx::Image* image_2x) { |
| + const ProfileInfoCache& cache = profile_manager->GetProfileInfoCache(); |
| + size_t profile_index = cache.GetIndexOfProfileWithPath(profile_path); |
| + |
| + // The profile might be using the Gaia avatar, which is not in the |
| + // resources array. |
| + bool has_gaia_image = false; |
| + if (cache.IsUsingGAIAPictureOfProfileAtIndex(profile_index)) { |
| + const gfx::Image* image = |
| + cache.GetGAIAPictureOfProfileAtIndex(profile_index); |
| + if (image) { |
| + if (image_1x) |
| + *image_1x = *image; |
| + // Gaia images are 256px, which makes them big enough to use in the |
| + // large icon case as well. |
| + DCHECK_GE(image->Width(), IconUtil::kLargeIconSize); |
| + if (image_2x) |
| + *image_2x = *image; |
| + has_gaia_image = true; |
| + } |
| + } |
| + |
| + // If the profile isn't using a Gaia image, or if the Gaia image did not |
| + // exist, revert to the previously used avatar icon. |
| + if (!has_gaia_image) { |
| + const size_t icon_index = |
| + cache.GetAvatarIconIndexOfProfileAtIndex(profile_index); |
| + const int resource_id_1x = |
| + profiles::GetDefaultAvatarIconResourceIDAtIndex(icon_index); |
| + const int resource_id_2x = kProfileAvatarIconResources2x[icon_index]; |
| + if (image_1x) { |
| + *image_1x = |
| + ResourceBundle::GetSharedInstance().GetNativeImageNamed( |
|
noms (inactive)
2014/10/30 17:39:08
Maybe you get pull the ResourceBundle instance out
Roger Tawa OOO till Jul 10th
2014/10/31 19:44:39
Removed this code from CL.
|
| + resource_id_1x); |
| + } |
| + if (image_2x) { |
| + *image_2x = |
| + ResourceBundle::GetSharedInstance().GetNativeImageNamed( |
| + resource_id_2x); |
| + } |
| + } |
| +} |
| + |