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

Side by Side Diff: chrome/browser/profiles/profile_shortcut_manager_win.cc

Issue 1408063012: Replaced GetAppIconForSize with GetAppIconImageFamily. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master-plus
Patch Set: Fix unit_tests by loading from the current module if chrome.dll is not loaded. Created 5 years, 1 month 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/profiles/profile_shortcut_manager_win.h" 5 #include "chrome/browser/profiles/profile_shortcut_manager_win.h"
6 6
7 #include <shlobj.h> // For SHChangeNotify(). 7 #include <shlobj.h> // For SHChangeNotify().
8 8
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 const SkBitmap& avatar_bitmap_1x, 164 const SkBitmap& avatar_bitmap_1x,
165 const SkBitmap& avatar_bitmap_2x) { 165 const SkBitmap& avatar_bitmap_2x) {
166 DCHECK_CURRENTLY_ON(BrowserThread::FILE); 166 DCHECK_CURRENTLY_ON(BrowserThread::FILE);
167 167
168 if (!base::PathExists(profile_path)) { 168 if (!base::PathExists(profile_path)) {
169 LOG(ERROR) << "Profile directory " << profile_path.value() 169 LOG(ERROR) << "Profile directory " << profile_path.value()
170 << " did not exist when trying to create profile icon"; 170 << " did not exist when trying to create profile icon";
171 return base::FilePath(); 171 return base::FilePath();
172 } 172 }
173 173
174 scoped_ptr<SkBitmap> app_icon_bitmap(GetAppIconForSize(kShortcutIconSize)); 174 scoped_ptr<gfx::ImageFamily> family = GetAppIconImageFamily();
175 if (!app_icon_bitmap) 175 if (!family)
176 return base::FilePath();
177
178 // TODO(mgiuca): A better approach would be to badge each image in the
179 // ImageFamily (scaling the badge to the correct size), and then re-export the
180 // family (as opposed to making a family with just 48 and 256, then scaling
181 // those images to about a dozen different sizes).
182 SkBitmap app_icon_bitmap =
183 family->CreateExact(kShortcutIconSize, kShortcutIconSize).AsBitmap();
184 if (app_icon_bitmap.isNull())
176 return base::FilePath(); 185 return base::FilePath();
177 186
178 gfx::ImageFamily badged_bitmaps; 187 gfx::ImageFamily badged_bitmaps;
179 if (!avatar_bitmap_1x.empty()) { 188 if (!avatar_bitmap_1x.empty()) {
180 badged_bitmaps.Add(gfx::Image::CreateFrom1xBitmap( 189 badged_bitmaps.Add(gfx::Image::CreateFrom1xBitmap(
181 BadgeIcon(*app_icon_bitmap, avatar_bitmap_1x, 1))); 190 BadgeIcon(app_icon_bitmap, avatar_bitmap_1x, 1)));
182 } 191 }
183 192
184 scoped_ptr<SkBitmap> large_app_icon_bitmap( 193 SkBitmap large_app_icon_bitmap =
185 GetAppIconForSize(IconUtil::kLargeIconSize)); 194 family->CreateExact(IconUtil::kLargeIconSize, IconUtil::kLargeIconSize)
186 if (large_app_icon_bitmap && !avatar_bitmap_2x.empty()) { 195 .AsBitmap();
196 if (!large_app_icon_bitmap.isNull() && !avatar_bitmap_2x.empty()) {
187 badged_bitmaps.Add(gfx::Image::CreateFrom1xBitmap( 197 badged_bitmaps.Add(gfx::Image::CreateFrom1xBitmap(
188 BadgeIcon(*large_app_icon_bitmap, avatar_bitmap_2x, 2))); 198 BadgeIcon(large_app_icon_bitmap, avatar_bitmap_2x, 2)));
189 } 199 }
190 200
191 // If we have no badged bitmaps, we should just use the default chrome icon. 201 // If we have no badged bitmaps, we should just use the default chrome icon.
192 if (badged_bitmaps.empty()) { 202 if (badged_bitmaps.empty()) {
193 badged_bitmaps.Add(gfx::Image::CreateFrom1xBitmap(*app_icon_bitmap)); 203 badged_bitmaps.Add(gfx::Image::CreateFrom1xBitmap(app_icon_bitmap));
194 if (large_app_icon_bitmap) { 204 if (!large_app_icon_bitmap.isNull()) {
195 badged_bitmaps.Add( 205 badged_bitmaps.Add(gfx::Image::CreateFrom1xBitmap(large_app_icon_bitmap));
196 gfx::Image::CreateFrom1xBitmap(*large_app_icon_bitmap));
197 } 206 }
198 } 207 }
199 // Finally, write the .ico file containing this new bitmap. 208 // Finally, write the .ico file containing this new bitmap.
200 const base::FilePath icon_path = 209 const base::FilePath icon_path =
201 profiles::internal::GetProfileIconPath(profile_path); 210 profiles::internal::GetProfileIconPath(profile_path);
202 const bool had_icon = base::PathExists(icon_path); 211 const bool had_icon = base::PathExists(icon_path);
203 212
204 if (!IconUtil::CreateIconFileFromImageFamily(badged_bitmaps, icon_path)) { 213 if (!IconUtil::CreateIconFileFromImageFamily(badged_bitmaps, icon_path)) {
205 // This can happen in theory if the profile directory is deleted between the 214 // This can happen in theory if the profile directory is deleted between the
206 // beginning of this function and here; however this is extremely unlikely 215 // beginning of this function and here; however this is extremely unlikely
(...skipping 658 matching lines...) Expand 10 before | Expand all | Expand 10 after
865 // Ensure the profile's icon file has been created. 874 // Ensure the profile's icon file has been created.
866 CreateOrUpdateProfileIcon(profile->GetPath()); 875 CreateOrUpdateProfileIcon(profile->GetPath());
867 } 876 }
868 break; 877 break;
869 } 878 }
870 default: 879 default:
871 NOTREACHED(); 880 NOTREACHED();
872 break; 881 break;
873 } 882 }
874 } 883 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698