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

Side by Side Diff: ui/gfx/image/image_skia_unittest.cc

Issue 10780010: Introduces ImageSkia::GetRepresentations() for Mac (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 5 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
« no previous file with comments | « ui/gfx/image/image_skia.cc ('k') | ui/gfx/image/image_skia_util_mac.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "ui/gfx/image/image_skia.h" 5 #include "ui/gfx/image/image_skia.h"
6 6
7 #include "third_party/skia/include/core/SkBitmap.h" 7 #include "third_party/skia/include/core/SkBitmap.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 #include "ui/gfx/image/image_skia_rep.h" 9 #include "ui/gfx/image/image_skia_rep.h"
10 #include "ui/gfx/image/image_skia_source.h" 10 #include "ui/gfx/image/image_skia_source.h"
11 #include "ui/gfx/size.h" 11 #include "ui/gfx/size.h"
12 #include "ui/base/layout.h" 12 #include "ui/base/layout.h"
13 13
14 namespace gfx { 14 namespace gfx {
15 15
16 namespace { 16 namespace {
17 17
18 class FixedSource : public ImageSkiaSource { 18 class FixedSource : public ImageSkiaSource {
19 public: 19 public:
20 FixedSource(const ImageSkiaRep& image) : image_(image) {} 20 FixedSource(const ImageSkiaRep& image) : image_(image) {}
21 21
22 virtual ~FixedSource() {
23 }
24
22 virtual ImageSkiaRep GetImageForScale(ui::ScaleFactor scale_factor) OVERRIDE { 25 virtual ImageSkiaRep GetImageForScale(ui::ScaleFactor scale_factor) OVERRIDE {
23 return image_; 26 return image_;
24 } 27 }
25 28
26 private: 29 private:
27 ImageSkiaRep image_; 30 ImageSkiaRep image_;
28 31
29 DISALLOW_COPY_AND_ASSIGN(FixedSource); 32 DISALLOW_COPY_AND_ASSIGN(FixedSource);
30 }; 33 };
31 34
32 class DynamicSource : public ImageSkiaSource { 35 class DynamicSource : public ImageSkiaSource {
33 public: 36 public:
34 DynamicSource(const gfx::Size& size) : size_(size) {} 37 DynamicSource(const gfx::Size& size) : size_(size) {}
35 38
39 virtual ~DynamicSource() {
40 }
41
36 virtual ImageSkiaRep GetImageForScale(ui::ScaleFactor scale_factor) OVERRIDE { 42 virtual ImageSkiaRep GetImageForScale(ui::ScaleFactor scale_factor) OVERRIDE {
37 return gfx::ImageSkiaRep(size_, scale_factor); 43 return gfx::ImageSkiaRep(size_, scale_factor);
38 } 44 }
39 45
40 private: 46 private:
41 gfx::Size size_; 47 gfx::Size size_;
42 48
43 DISALLOW_COPY_AND_ASSIGN(DynamicSource); 49 DISALLOW_COPY_AND_ASSIGN(DynamicSource);
44 }; 50 };
45 51
52 class NullSource: public ImageSkiaSource {
53 public:
54 NullSource() {
55 }
56
57 virtual ~NullSource() {
58 }
59
60 virtual ImageSkiaRep GetImageForScale(ui::ScaleFactor scale_factor) OVERRIDE {
61 return gfx::ImageSkiaRep();
62 }
63
64 private:
65 DISALLOW_COPY_AND_ASSIGN(NullSource);
66 };
67
46 } // namespace; 68 } // namespace;
47 69
48 typedef testing::Test ImageSkiaTest; 70 typedef testing::Test ImageSkiaTest;
49 71
50 TEST(ImageSkiaTest, FixedSource) { 72 TEST(ImageSkiaTest, FixedSource) {
51 ImageSkiaRep image(Size(100, 200), ui::SCALE_FACTOR_100P); 73 ImageSkiaRep image(Size(100, 200), ui::SCALE_FACTOR_100P);
52 ImageSkia image_skia(new FixedSource(image), Size(100, 200)); 74 ImageSkia image_skia(new FixedSource(image), Size(100, 200));
53 EXPECT_EQ(0U, image_skia.image_reps().size()); 75 EXPECT_EQ(0U, image_skia.image_reps().size());
54 76
55 const ImageSkiaRep& result_100p = 77 const ImageSkiaRep& result_100p =
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 EXPECT_EQ(2U, image_skia.image_reps().size()); 119 EXPECT_EQ(2U, image_skia.image_reps().size());
98 120
99 // Get the representation again and make sure it doesn't 121 // Get the representation again and make sure it doesn't
100 // generate new image skia rep. 122 // generate new image skia rep.
101 image_skia.GetRepresentation(ui::SCALE_FACTOR_100P); 123 image_skia.GetRepresentation(ui::SCALE_FACTOR_100P);
102 EXPECT_EQ(2U, image_skia.image_reps().size()); 124 EXPECT_EQ(2U, image_skia.image_reps().size());
103 image_skia.GetRepresentation(ui::SCALE_FACTOR_200P); 125 image_skia.GetRepresentation(ui::SCALE_FACTOR_200P);
104 EXPECT_EQ(2U, image_skia.image_reps().size()); 126 EXPECT_EQ(2U, image_skia.image_reps().size());
105 } 127 }
106 128
129 #if defined(OS_MACOSX)
130
131 // Tests that GetRepresentations returns all of the representations in the
132 // image when there are multiple representations for a scale factor.
133 // This currently is the case with ImageLoadingTracker::LoadImages, to
134 // load the application shortcut icon on Mac in particular.
135 TEST(ImageSkiaTest, GetRepresentationsManyRepsPerScaleFactor) {
136 const int kSmallIcon1x = 16;
137 const int kSmallIcon2x = 32;
138 const int kLargeIcon1x = 32;
139
140 ImageSkia image(new NullSource(), gfx::Size(kSmallIcon1x, kSmallIcon1x));
141 // Simulate a source which loads images on a delay. Upon
142 // GetImageForScaleFactor, it immediately returns null and starts loading
143 // image reps slowly.
144 image.GetRepresentation(ui::SCALE_FACTOR_100P);
145 image.GetRepresentation(ui::SCALE_FACTOR_200P);
146
147 // After a lengthy amount of simulated time, finally loaded image reps.
148 image.AddRepresentation(ImageSkiaRep(
149 gfx::Size(kSmallIcon1x, kSmallIcon1x), ui::SCALE_FACTOR_100P));
150 image.AddRepresentation(ImageSkiaRep(
151 gfx::Size(kSmallIcon2x, kSmallIcon2x), ui::SCALE_FACTOR_200P));
152 image.AddRepresentation(ImageSkiaRep(
153 gfx::Size(kLargeIcon1x, kLargeIcon1x), ui::SCALE_FACTOR_100P));
154
155 std::vector<ImageSkiaRep> image_reps = image.GetRepresentations();
156 EXPECT_EQ(3u, image_reps.size());
157
158 int num_1x = 0;
159 int num_2x = 0;
160 for (size_t i = 0; i < image_reps.size(); ++i) {
161 if (image_reps[i].scale_factor() == ui::SCALE_FACTOR_100P)
162 num_1x++;
163 else if (image_reps[i].scale_factor() == ui::SCALE_FACTOR_200P)
164 num_2x++;
165 }
166 EXPECT_EQ(2, num_1x);
167 EXPECT_EQ(1, num_2x);
168 }
169
170 #endif // OS_MACOSX
171
107 TEST(ImageSkiaTest, GetBitmap) { 172 TEST(ImageSkiaTest, GetBitmap) {
108 ImageSkia image_skia(new DynamicSource(Size(100, 200)), Size(100, 200)); 173 ImageSkia image_skia(new DynamicSource(Size(100, 200)), Size(100, 200));
109 const SkBitmap* bitmap = image_skia.bitmap(); 174 const SkBitmap* bitmap = image_skia.bitmap();
110 EXPECT_NE(static_cast<SkBitmap*>(NULL), bitmap); 175 EXPECT_NE(static_cast<SkBitmap*>(NULL), bitmap);
111 EXPECT_FALSE(bitmap->isNull()); 176 EXPECT_FALSE(bitmap->isNull());
112 } 177 }
113 178
114 } // namespace gfx 179 } // namespace gfx
OLDNEW
« no previous file with comments | « ui/gfx/image/image_skia.cc ('k') | ui/gfx/image/image_skia_util_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698