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

Side by Side Diff: chrome/browser/extensions/extension_icon_image_unittest.cc

Issue 10905005: Change browser/page action default icon defined in manifest to support hidpi. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: disable unittest on android Created 8 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_icon_image.h" 5 #include "chrome/browser/extensions/extension_icon_image.h"
6 6
7 #include "base/json/json_file_value_serializer.h" 7 #include "base/json/json_file_value_serializer.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/path_service.h" 9 #include "base/path_service.h"
10 #include "chrome/browser/extensions/image_loading_tracker.h" 10 #include "chrome/browser/extensions/image_loading_tracker.h"
11 #include "chrome/common/chrome_paths.h" 11 #include "chrome/common/chrome_paths.h"
12 #include "chrome/common/extensions/extension.h" 12 #include "chrome/common/extensions/extension.h"
13 #include "chrome/common/extensions/extension_constants.h" 13 #include "chrome/common/extensions/extension_constants.h"
14 #include "content/public/test/test_browser_thread.h" 14 #include "content/public/test/test_browser_thread.h"
15 #include "grit/theme_resources.h" 15 #include "grit/theme_resources.h"
16 #include "skia/ext/image_operations.h"
16 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
17 #include "ui/base/resource/resource_bundle.h" 18 #include "ui/base/resource/resource_bundle.h"
18 #include "ui/gfx/image/image_skia_source.h" 19 #include "ui/gfx/image/image_skia_source.h"
19 #include "ui/gfx/skia_util.h" 20 #include "ui/gfx/skia_util.h"
20 21
21 using content::BrowserThread; 22 using content::BrowserThread;
22 using extensions::Extension; 23 using extensions::Extension;
23 using extensions::IconImage; 24 using extensions::IconImage;
24 25
25 namespace { 26 namespace {
26 27
27 SkBitmap CreateBlankBitmapForScale(int size_dip, ui::ScaleFactor scale_factor) { 28 SkBitmap CreateBlankBitmapForScale(int size_dip, ui::ScaleFactor scale_factor) {
28 SkBitmap bitmap; 29 SkBitmap bitmap;
29 const float scale = ui::GetScaleFactorScale(scale_factor); 30 const float scale = ui::GetScaleFactorScale(scale_factor);
30 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 31 bitmap.setConfig(SkBitmap::kARGB_8888_Config,
31 static_cast<int>(size_dip * scale), 32 static_cast<int>(size_dip * scale),
32 static_cast<int>(size_dip * scale)); 33 static_cast<int>(size_dip * scale));
33 bitmap.allocPixels(); 34 bitmap.allocPixels();
34 bitmap.eraseColor(SkColorSetARGB(0, 0, 0, 0)); 35 bitmap.eraseColor(SkColorSetARGB(0, 0, 0, 0));
35 return bitmap; 36 return bitmap;
36 } 37 }
37 38
39 SkBitmap EnsureBitmapSize(const SkBitmap& original, int size) {
40 if (original.width() == size && original.height() == size)
41 return original;
42
43 SkBitmap resized = skia::ImageOperations::Resize(
44 original, skia::ImageOperations::RESIZE_LANCZOS3, size, size);
45 return resized;
46 }
47
38 // Used to test behaviour including images defined by an image skia source. 48 // Used to test behaviour including images defined by an image skia source.
39 // |GetImageForScale| simply returns image representation from the image given 49 // |GetImageForScale| simply returns image representation from the image given
40 // in the ctor. 50 // in the ctor.
41 class MockImageSkiaSource : public gfx::ImageSkiaSource { 51 class MockImageSkiaSource : public gfx::ImageSkiaSource {
42 public: 52 public:
43 explicit MockImageSkiaSource(const gfx::ImageSkia& image) 53 explicit MockImageSkiaSource(const gfx::ImageSkia& image)
44 : image_(image) { 54 : image_(image) {
45 } 55 }
46 virtual ~MockImageSkiaSource() {} 56 virtual ~MockImageSkiaSource() {}
47 57
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 294
285 gfx::ImageSkiaRep representation = 295 gfx::ImageSkiaRep representation =
286 image.image_skia().GetRepresentation(ui::SCALE_FACTOR_200P); 296 image.image_skia().GetRepresentation(ui::SCALE_FACTOR_200P);
287 297
288 WaitForImageLoad(); 298 WaitForImageLoad();
289 EXPECT_EQ(1, ImageLoadedCount()); 299 EXPECT_EQ(1, ImageLoadedCount());
290 ASSERT_EQ(1u, image.image_skia().image_reps().size()); 300 ASSERT_EQ(1u, image.image_skia().image_reps().size());
291 301
292 representation = image.image_skia().GetRepresentation(ui::SCALE_FACTOR_200P); 302 representation = image.image_skia().GetRepresentation(ui::SCALE_FACTOR_200P);
293 303
294 // We should have loaded the biggest smaller resource. In this case the 304 // We should have loaded the biggest smaller resource resized to the actual
295 // loaded resource should not be resized. 305 // size.
296 EXPECT_EQ(ui::SCALE_FACTOR_200P, representation.scale_factor()); 306 EXPECT_EQ(ui::SCALE_FACTOR_200P, representation.scale_factor());
297 EXPECT_EQ(48, representation.pixel_width()); 307 EXPECT_EQ(64, representation.pixel_width());
298 EXPECT_TRUE(gfx::BitmapsAreEqual(representation.sk_bitmap(), bitmap_48)); 308 EXPECT_TRUE(gfx::BitmapsAreEqual(representation.sk_bitmap(),
309 EnsureBitmapSize(bitmap_48, 64)));
299 } 310 }
300 311
301 // There is no resource with exact size, but there is a smaller and a bigger 312 // There is no resource with exact size, but there is a smaller and a bigger
302 // one. Requested size is smaller than 32 though, so the smaller resource should 313 // one. Requested size is smaller than 32 though, so the smaller resource should
303 // be loaded. 314 // be loaded.
304 TEST_F(ExtensionIconImageTest, FallbackToSmaller) { 315 TEST_F(ExtensionIconImageTest, FallbackToSmaller) {
305 scoped_refptr<Extension> extension(CreateExtension( 316 scoped_refptr<Extension> extension(CreateExtension(
306 "extension_icon_image", Extension::INVALID)); 317 "extension_icon_image", Extension::INVALID));
307 ASSERT_TRUE(extension.get() != NULL); 318 ASSERT_TRUE(extension.get() != NULL);
308 319
309 gfx::ImageSkia default_icon = GetDefaultIcon(); 320 gfx::ImageSkia default_icon = GetDefaultIcon();
310 321
311 // Load images we expect to find as representations in icon_image, so we 322 // Load images we expect to find as representations in icon_image, so we
312 // can later use them to validate icon_image. 323 // can later use them to validate icon_image.
313 SkBitmap bitmap_16 = 324 SkBitmap bitmap_16 =
314 GetTestBitmap(extension, "16.png", 16, ImageLoadingTracker::DONT_CACHE); 325 GetTestBitmap(extension, "16.png", 16, ImageLoadingTracker::DONT_CACHE);
315 ASSERT_FALSE(bitmap_16.empty()); 326 ASSERT_FALSE(bitmap_16.empty());
316 327
317 IconImage image(extension, extension->icons(), 17, default_icon, this); 328 IconImage image(extension, extension->icons(), 17, default_icon, this);
318 329
319 gfx::ImageSkiaRep representation = 330 gfx::ImageSkiaRep representation =
320 image.image_skia().GetRepresentation(ui::SCALE_FACTOR_100P); 331 image.image_skia().GetRepresentation(ui::SCALE_FACTOR_100P);
321 332
322 WaitForImageLoad(); 333 WaitForImageLoad();
323 EXPECT_EQ(1, ImageLoadedCount()); 334 EXPECT_EQ(1, ImageLoadedCount());
324 ASSERT_EQ(1u, image.image_skia().image_reps().size()); 335 ASSERT_EQ(1u, image.image_skia().image_reps().size());
325 336
326 representation = image.image_skia().GetRepresentation(ui::SCALE_FACTOR_100P); 337 representation = image.image_skia().GetRepresentation(ui::SCALE_FACTOR_100P);
327 338
328 // We should have loaded smaller (not resized) resource. 339 // We should have loaded smaller (resized) resource.
329 EXPECT_EQ(ui::SCALE_FACTOR_100P, representation.scale_factor()); 340 EXPECT_EQ(ui::SCALE_FACTOR_100P, representation.scale_factor());
330 EXPECT_EQ(16, representation.pixel_width()); 341 EXPECT_EQ(17, representation.pixel_width());
331 EXPECT_TRUE(gfx::BitmapsAreEqual(representation.sk_bitmap(), bitmap_16)); 342 EXPECT_TRUE(gfx::BitmapsAreEqual(representation.sk_bitmap(),
343 EnsureBitmapSize(bitmap_16, 17)));
332 } 344 }
333 345
334 // If resource set is empty, |GetRepresentation| should synchronously return 346 // If resource set is empty, |GetRepresentation| should synchronously return
335 // default icon, without notifying observer of image change. 347 // default icon, without notifying observer of image change.
336 TEST_F(ExtensionIconImageTest, NoResources) { 348 TEST_F(ExtensionIconImageTest, NoResources) {
337 scoped_refptr<Extension> extension(CreateExtension( 349 scoped_refptr<Extension> extension(CreateExtension(
338 "extension_icon_image", Extension::INVALID)); 350 "extension_icon_image", Extension::INVALID));
339 ASSERT_TRUE(extension.get() != NULL); 351 ASSERT_TRUE(extension.get() != NULL);
340 352
341 ExtensionIconSet empty_icon_set; 353 ExtensionIconSet empty_icon_set;
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
524 EXPECT_EQ(16, representation.pixel_width()); 536 EXPECT_EQ(16, representation.pixel_width());
525 EXPECT_TRUE(gfx::BitmapsAreEqual(representation.sk_bitmap(), bitmap_16)); 537 EXPECT_TRUE(gfx::BitmapsAreEqual(representation.sk_bitmap(), bitmap_16));
526 538
527 // When requesting another representation, we should get blank image. 539 // When requesting another representation, we should get blank image.
528 representation = image_skia.GetRepresentation(ui::SCALE_FACTOR_200P); 540 representation = image_skia.GetRepresentation(ui::SCALE_FACTOR_200P);
529 541
530 EXPECT_TRUE(gfx::BitmapsAreEqual( 542 EXPECT_TRUE(gfx::BitmapsAreEqual(
531 representation.sk_bitmap(), 543 representation.sk_bitmap(),
532 CreateBlankBitmapForScale(16, ui::SCALE_FACTOR_200P))); 544 CreateBlankBitmapForScale(16, ui::SCALE_FACTOR_200P)));
533 } 545 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_icon_image.cc ('k') | chrome/browser/ui/cocoa/extensions/browser_action_button.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698