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

Side by Side Diff: trunk/src/chrome/browser/extensions/extension_action_icon_factory_unittest.cc

Issue 24262008: Revert 224473 "Remove dependency on ui::ScaleFactor from ui/gfx" (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 years, 3 months 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 | Annotate | Revision Log
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/extensions/extension_action_icon_factory.h" 5 #include "chrome/browser/extensions/extension_action_icon_factory.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/file_util.h" 8 #include "base/file_util.h"
9 #include "base/json/json_file_value_serializer.h" 9 #include "base/json/json_file_value_serializer.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 20 matching lines...) Expand all
31 #include "chrome/browser/chromeos/settings/device_settings_service.h" 31 #include "chrome/browser/chromeos/settings/device_settings_service.h"
32 #endif 32 #endif
33 33
34 using content::BrowserThread; 34 using content::BrowserThread;
35 35
36 namespace extensions { 36 namespace extensions {
37 namespace { 37 namespace {
38 38
39 bool ImageRepsAreEqual(const gfx::ImageSkiaRep& image_rep1, 39 bool ImageRepsAreEqual(const gfx::ImageSkiaRep& image_rep1,
40 const gfx::ImageSkiaRep& image_rep2) { 40 const gfx::ImageSkiaRep& image_rep2) {
41 return image_rep1.scale() == image_rep2.scale() && 41 return image_rep1.scale_factor() == image_rep2.scale_factor() &&
42 gfx::BitmapsAreEqual(image_rep1.sk_bitmap(), image_rep2.sk_bitmap()); 42 gfx::BitmapsAreEqual(image_rep1.sk_bitmap(), image_rep2.sk_bitmap());
43 } 43 }
44 44
45 gfx::Image EnsureImageSize(const gfx::Image& original, int size) { 45 gfx::Image EnsureImageSize(const gfx::Image& original, int size) {
46 const SkBitmap* original_bitmap = original.ToSkBitmap(); 46 const SkBitmap* original_bitmap = original.ToSkBitmap();
47 if (original_bitmap->width() == size && original_bitmap->height() == size) 47 if (original_bitmap->width() == size && original_bitmap->height() == size)
48 return original; 48 return original;
49 49
50 SkBitmap resized = skia::ImageOperations::Resize( 50 SkBitmap resized = skia::ImageOperations::Resize(
51 *original.ToSkBitmap(), skia::ImageOperations::RESIZE_LANCZOS3, 51 *original.ToSkBitmap(), skia::ImageOperations::RESIZE_LANCZOS3,
52 size, size); 52 size, size);
53 return gfx::Image::CreateFrom1xBitmap(resized); 53 return gfx::Image::CreateFrom1xBitmap(resized);
54 } 54 }
55 55
56 gfx::ImageSkiaRep CreateBlankRep(int size_dip, float scale) { 56 gfx::ImageSkiaRep CreateBlankRep(int size_dip, ui::ScaleFactor scale_factor) {
57 SkBitmap bitmap; 57 SkBitmap bitmap;
58 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 58 const float scale = ui::GetScaleFactorScale(scale_factor);
59 static_cast<int>(size_dip * scale), 59 bitmap.setConfig(SkBitmap::kARGB_8888_Config,
60 static_cast<int>(size_dip * scale)); 60 static_cast<int>(size_dip * scale),
61 bitmap.allocPixels(); 61 static_cast<int>(size_dip * scale));
62 bitmap.eraseColor(SkColorSetARGB(0, 0, 0, 0)); 62 bitmap.allocPixels();
63 return gfx::ImageSkiaRep(bitmap, scale); 63 bitmap.eraseColor(SkColorSetARGB(0, 0, 0, 0));
64 return gfx::ImageSkiaRep(bitmap, scale_factor);
64 } 65 }
65 66
66 gfx::Image LoadIcon(const std::string& filename) { 67 gfx::Image LoadIcon(const std::string& filename) {
67 base::FilePath path; 68 base::FilePath path;
68 PathService::Get(chrome::DIR_TEST_DATA, &path); 69 PathService::Get(chrome::DIR_TEST_DATA, &path);
69 path = path.AppendASCII("extensions/api_test").AppendASCII(filename); 70 path = path.AppendASCII("extensions/api_test").AppendASCII(filename);
70 71
71 std::string file_contents; 72 std::string file_contents;
72 base::ReadFileToString(path, &file_contents); 73 base::ReadFileToString(path, &file_contents);
73 const unsigned char* data = 74 const unsigned char* data =
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 ASSERT_TRUE(browser_action->GetExplicitlySetIcon(0 /*tab id*/).isNull()); 196 ASSERT_TRUE(browser_action->GetExplicitlySetIcon(0 /*tab id*/).isNull());
196 197
197 gfx::ImageSkia favicon = GetFavicon(); 198 gfx::ImageSkia favicon = GetFavicon();
198 199
199 ExtensionActionIconFactory icon_factory( 200 ExtensionActionIconFactory icon_factory(
200 profile(), extension.get(), browser_action, this); 201 profile(), extension.get(), browser_action, this);
201 202
202 gfx::Image icon = icon_factory.GetIcon(0); 203 gfx::Image icon = icon_factory.GetIcon(0);
203 204
204 EXPECT_TRUE(ImageRepsAreEqual( 205 EXPECT_TRUE(ImageRepsAreEqual(
205 favicon.GetRepresentation(1.0f), 206 favicon.GetRepresentation(ui::SCALE_FACTOR_100P),
206 icon.ToImageSkia()->GetRepresentation(1.0f))); 207 icon.ToImageSkia()->GetRepresentation(ui::SCALE_FACTOR_100P)));
207 } 208 }
208 209
209 // If the icon has been set using |SetIcon|, the factory should return that 210 // If the icon has been set using |SetIcon|, the factory should return that
210 // icon. 211 // icon.
211 TEST_F(ExtensionActionIconFactoryTest, AfterSetIcon) { 212 TEST_F(ExtensionActionIconFactoryTest, AfterSetIcon) {
212 // Load an extension that has browser action without default icon set in the 213 // Load an extension that has browser action without default icon set in the
213 // manifest and does not call |SetIcon| by default (but has an browser action 214 // manifest and does not call |SetIcon| by default (but has an browser action
214 // icon resource). 215 // icon resource).
215 scoped_refptr<Extension> extension(CreateExtension( 216 scoped_refptr<Extension> extension(CreateExtension(
216 "browser_action/no_icon", Manifest::INVALID_LOCATION)); 217 "browser_action/no_icon", Manifest::INVALID_LOCATION));
217 ASSERT_TRUE(extension.get() != NULL); 218 ASSERT_TRUE(extension.get() != NULL);
218 ExtensionAction* browser_action = GetBrowserAction(*extension.get()); 219 ExtensionAction* browser_action = GetBrowserAction(*extension.get());
219 ASSERT_TRUE(browser_action); 220 ASSERT_TRUE(browser_action);
220 ASSERT_FALSE(browser_action->default_icon()); 221 ASSERT_FALSE(browser_action->default_icon());
221 ASSERT_TRUE(browser_action->GetExplicitlySetIcon(0 /*tab id*/).isNull()); 222 ASSERT_TRUE(browser_action->GetExplicitlySetIcon(0 /*tab id*/).isNull());
222 223
223 gfx::Image set_icon = LoadIcon("browser_action/no_icon/icon.png"); 224 gfx::Image set_icon = LoadIcon("browser_action/no_icon/icon.png");
224 ASSERT_FALSE(set_icon.IsEmpty()); 225 ASSERT_FALSE(set_icon.IsEmpty());
225 226
226 browser_action->SetIcon(0, set_icon); 227 browser_action->SetIcon(0, set_icon);
227 228
228 ASSERT_FALSE(browser_action->GetExplicitlySetIcon(0 /*tab id*/).isNull()); 229 ASSERT_FALSE(browser_action->GetExplicitlySetIcon(0 /*tab id*/).isNull());
229 230
230 ExtensionActionIconFactory icon_factory( 231 ExtensionActionIconFactory icon_factory(
231 profile(), extension.get(), browser_action, this); 232 profile(), extension.get(), browser_action, this);
232 233
233 gfx::Image icon = icon_factory.GetIcon(0); 234 gfx::Image icon = icon_factory.GetIcon(0);
234 235
235 EXPECT_TRUE(ImageRepsAreEqual( 236 EXPECT_TRUE(ImageRepsAreEqual(
236 set_icon.ToImageSkia()->GetRepresentation(1.0f), 237 set_icon.ToImageSkia()->GetRepresentation(ui::SCALE_FACTOR_100P),
237 icon.ToImageSkia()->GetRepresentation(1.0f))); 238 icon.ToImageSkia()->GetRepresentation(ui::SCALE_FACTOR_100P)));
238 239
239 // It should still return favicon for another tabs. 240 // It should still return favicon for another tabs.
240 icon = icon_factory.GetIcon(1); 241 icon = icon_factory.GetIcon(1);
241 242
242 EXPECT_TRUE(ImageRepsAreEqual( 243 EXPECT_TRUE(ImageRepsAreEqual(
243 GetFavicon().GetRepresentation(1.0f), 244 GetFavicon().GetRepresentation(ui::SCALE_FACTOR_100P),
244 icon.ToImageSkia()->GetRepresentation(1.0f))); 245 icon.ToImageSkia()->GetRepresentation(ui::SCALE_FACTOR_100P)));
245 } 246 }
246 247
247 // If there is a default icon, and the icon has not been set using |SetIcon|, 248 // If there is a default icon, and the icon has not been set using |SetIcon|,
248 // the factory should return the default icon. 249 // the factory should return the default icon.
249 TEST_F(ExtensionActionIconFactoryTest, DefaultIcon) { 250 TEST_F(ExtensionActionIconFactoryTest, DefaultIcon) {
250 // Load an extension that has browser action without default icon set in the 251 // Load an extension that has browser action without default icon set in the
251 // manifest and does not call |SetIcon| by default (but has an browser action 252 // manifest and does not call |SetIcon| by default (but has an browser action
252 // icon resource). 253 // icon resource).
253 scoped_refptr<Extension> extension(CreateExtension( 254 scoped_refptr<Extension> extension(CreateExtension(
254 "browser_action/no_icon", Manifest::INVALID_LOCATION)); 255 "browser_action/no_icon", Manifest::INVALID_LOCATION));
(...skipping 14 matching lines...) Expand all
269 ASSERT_TRUE(browser_action->default_icon()); 270 ASSERT_TRUE(browser_action->default_icon());
270 271
271 ExtensionActionIconFactory icon_factory( 272 ExtensionActionIconFactory icon_factory(
272 profile(), extension.get(), browser_action, this); 273 profile(), extension.get(), browser_action, this);
273 274
274 gfx::Image icon = icon_factory.GetIcon(0); 275 gfx::Image icon = icon_factory.GetIcon(0);
275 276
276 // The icon should be loaded asynchronously. Initially a transparent icon 277 // The icon should be loaded asynchronously. Initially a transparent icon
277 // should be returned. 278 // should be returned.
278 EXPECT_TRUE(ImageRepsAreEqual( 279 EXPECT_TRUE(ImageRepsAreEqual(
279 CreateBlankRep(19, 1.0f), 280 CreateBlankRep(19, ui::SCALE_FACTOR_100P),
280 icon.ToImageSkia()->GetRepresentation(1.0f))); 281 icon.ToImageSkia()->GetRepresentation(ui::SCALE_FACTOR_100P)));
281 282
282 WaitForIconUpdate(); 283 WaitForIconUpdate();
283 284
284 icon = icon_factory.GetIcon(0); 285 icon = icon_factory.GetIcon(0);
285 286
286 // The default icon representation should be loaded at this point. 287 // The default icon representation should be loaded at this point.
287 EXPECT_TRUE(ImageRepsAreEqual( 288 EXPECT_TRUE(ImageRepsAreEqual(
288 default_icon.ToImageSkia()->GetRepresentation(1.0f), 289 default_icon.ToImageSkia()->GetRepresentation(ui::SCALE_FACTOR_100P),
289 icon.ToImageSkia()->GetRepresentation(1.0f))); 290 icon.ToImageSkia()->GetRepresentation(ui::SCALE_FACTOR_100P)));
290 291
291 // The same icon should be returned for the other tabs. 292 // The same icon should be returned for the other tabs.
292 icon = icon_factory.GetIcon(1); 293 icon = icon_factory.GetIcon(1);
293 294
294 EXPECT_TRUE(ImageRepsAreEqual( 295 EXPECT_TRUE(ImageRepsAreEqual(
295 default_icon.ToImageSkia()->GetRepresentation(1.0f), 296 default_icon.ToImageSkia()->GetRepresentation(ui::SCALE_FACTOR_100P),
296 icon.ToImageSkia()->GetRepresentation(1.0f))); 297 icon.ToImageSkia()->GetRepresentation(ui::SCALE_FACTOR_100P)));
297 298
298 } 299 }
299 300
300 } // namespace 301 } // namespace
301 } // namespace extensions 302 } // namespace extensions
OLDNEW
« no previous file with comments | « trunk/src/chrome/browser/extensions/extension_action.cc ('k') | trunk/src/chrome/browser/extensions/extension_icon_image.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698