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

Side by Side Diff: chrome/browser/favicon/select_favicon_frames_unittest.cc

Issue 10908114: Move SelectFaviconFrames from favicon/ to history/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/favicon/select_favicon_frames.h"
6
7 #include "ui/base/layout.h"
8 #include "ui/gfx/image/image_skia.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "third_party/skia/include/core/SkBitmap.h"
11 #include "third_party/skia/include/core/SkColor.h"
12
13 using std::vector;
14
15 namespace {
16
17 vector<ui::ScaleFactor> Scale1x() {
18 return vector<ui::ScaleFactor>(1, ui::SCALE_FACTOR_100P);
19 }
20
21 vector<ui::ScaleFactor> Scale1x2x() {
22 vector<ui::ScaleFactor> scales;
23 scales.push_back(ui::SCALE_FACTOR_100P);
24 scales.push_back(ui::SCALE_FACTOR_200P);
25 return scales;
26 }
27
28 SkBitmap MakeBitmap(SkColor color, int w, int h) {
29 SkBitmap bitmap;
30 bitmap.setConfig(SkBitmap::kARGB_8888_Config, w, h);
31 bitmap.allocPixels();
32 bitmap.eraseColor(color);
33 return bitmap;
34 }
35
36 SkColor GetColor(const gfx::ImageSkia& image, ui::ScaleFactor factor,
37 int x = -1, int y = -1) {
38 const SkBitmap& bitmap = image.GetRepresentation(factor).sk_bitmap();
39 if (x == -1)
40 x = bitmap.width() / 2;
41 if (y == -1)
42 y = bitmap.width() / 2;
43 bitmap.lockPixels();
44 SkColor color = bitmap.getColor(x, y);
45 bitmap.unlockPixels();
46 return color;
47 }
48
49 SkColor GetColor1x(const gfx::ImageSkia& image) {
50 return GetColor(image, ui::SCALE_FACTOR_100P);
51 }
52
53 SkColor GetColor2x(const gfx::ImageSkia& image) {
54 return GetColor(image, ui::SCALE_FACTOR_200P);
55 }
56
57 TEST(SelectFaviconFramesTest, ZeroSizePicksLargest) {
58 vector<SkBitmap> bitmaps;
59 bitmaps.push_back(MakeBitmap(SK_ColorRED, 16, 16));
60 bitmaps.push_back(MakeBitmap(SK_ColorGREEN, 48, 48));
61 bitmaps.push_back(MakeBitmap(SK_ColorBLUE, 32, 32));
62
63 gfx::ImageSkia image = SelectFaviconFrames(bitmaps, Scale1x(), 0, NULL);
64 EXPECT_EQ(1u, image.image_reps().size());
65 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_100P));
66 EXPECT_EQ(48, image.width());
67 EXPECT_EQ(48, image.height());
68
69 EXPECT_EQ(SK_ColorGREEN, GetColor1x(image));
70 }
71
72 TEST(SelectFaviconFramesTest, _16From16) {
73 vector<SkBitmap> bitmaps;
74 bitmaps.push_back(MakeBitmap(SK_ColorRED, 15, 15));
75 bitmaps.push_back(MakeBitmap(SK_ColorGREEN, 16, 16));
76 bitmaps.push_back(MakeBitmap(SK_ColorBLUE, 17, 17));
77
78 gfx::ImageSkia image = SelectFaviconFrames(bitmaps, Scale1x(), 16, NULL);
79 EXPECT_EQ(1u, image.image_reps().size());
80 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_100P));
81 EXPECT_EQ(16, image.width());
82 EXPECT_EQ(16, image.height());
83 EXPECT_EQ(SK_ColorGREEN, GetColor1x(image));
84 }
85
86 TEST(SelectFaviconFramesTest, _16From17) {
87 vector<SkBitmap> bitmaps;
88 bitmaps.push_back(MakeBitmap(SK_ColorRED, 15, 15));
89 bitmaps.push_back(MakeBitmap(SK_ColorGREEN, 17, 17));
90
91 // Should resample from the bigger candidate.
92 gfx::ImageSkia image = SelectFaviconFrames(bitmaps, Scale1x(), 16, NULL);
93 EXPECT_EQ(1u, image.image_reps().size());
94 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_100P));
95 EXPECT_EQ(16, image.width());
96 EXPECT_EQ(16, image.height());
97 EXPECT_EQ(SK_ColorGREEN, GetColor1x(image));
98 }
99
100 TEST(SelectFaviconFramesTest, _16From15) {
101 vector<SkBitmap> bitmaps;
102 bitmaps.push_back(MakeBitmap(SK_ColorRED, 14, 14));
103 bitmaps.push_back(MakeBitmap(SK_ColorGREEN, 15, 15));
104
105 // If nothing else is available, should resample form the next smaller
106 // candidate.
107 gfx::ImageSkia image = SelectFaviconFrames(bitmaps, Scale1x(), 16, NULL);
108 EXPECT_EQ(1u, image.image_reps().size());
109 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_100P));
110 EXPECT_EQ(16, image.width());
111 EXPECT_EQ(16, image.height());
112 EXPECT_EQ(SK_ColorGREEN, GetColor1x(image));
113 }
114
115 TEST(SelectFaviconFramesTest, _16From16_Scale2x_32_From_16) {
116 vector<SkBitmap> bitmaps;
117 bitmaps.push_back(MakeBitmap(SK_ColorGREEN, 16, 16));
118
119 gfx::ImageSkia image = SelectFaviconFrames(bitmaps, Scale1x2x(), 16, NULL);
120 EXPECT_EQ(2u, image.image_reps().size());
121 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_100P));
122 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_200P));
123 EXPECT_EQ(16, image.width());
124 EXPECT_EQ(16, image.height());
125 EXPECT_EQ(SK_ColorGREEN, GetColor1x(image));
126 EXPECT_EQ(SK_ColorGREEN, GetColor2x(image));
127 }
128
129 TEST(SelectFaviconFramesTest, _16From16_Scale2x_32_From_32) {
130 vector<SkBitmap> bitmaps;
131 bitmaps.push_back(MakeBitmap(SK_ColorGREEN, 16, 16));
132 bitmaps.push_back(MakeBitmap(SK_ColorBLUE, 32, 32));
133
134 gfx::ImageSkia image = SelectFaviconFrames(bitmaps, Scale1x2x(), 16, NULL);
135 EXPECT_EQ(2u, image.image_reps().size());
136 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_100P));
137 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_200P));
138 EXPECT_EQ(16, image.width());
139 EXPECT_EQ(16, image.height());
140 EXPECT_EQ(SK_ColorGREEN, GetColor1x(image));
141 EXPECT_EQ(SK_ColorBLUE, GetColor2x(image));
142 }
143
144 TEST(SelectFaviconFramesTest, _24_48) {
145 vector<SkBitmap> bitmaps;
146 bitmaps.push_back(MakeBitmap(SK_ColorRED, 25, 25));
147 bitmaps.push_back(MakeBitmap(SK_ColorGREEN, 16, 16));
148 bitmaps.push_back(MakeBitmap(SK_ColorBLUE, 32, 32));
149 bitmaps.push_back(MakeBitmap(SK_ColorYELLOW, 49, 49));
150
151 gfx::ImageSkia image = SelectFaviconFrames(bitmaps, Scale1x2x(), 24, NULL);
152 EXPECT_EQ(2u, image.image_reps().size());
153 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_100P));
154 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_200P));
155 EXPECT_EQ(24, image.width());
156 EXPECT_EQ(24, image.height());
157 EXPECT_EQ(SK_ColorGREEN, GetColor1x(image));
158 EXPECT_EQ(0u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_100P, 0, 0)));
159 EXPECT_EQ(0u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_100P, 3, 4)));
160 EXPECT_EQ(255u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_100P, 4, 4)));
161 EXPECT_EQ(255u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_100P, 19, 19)));
162 EXPECT_EQ(0u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_100P, 20, 19)));
163 EXPECT_EQ(0u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_100P, 23, 23)));
164
165 EXPECT_EQ(SK_ColorBLUE, GetColor2x(image));
166 EXPECT_EQ(0u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_200P, 0, 0)));
167 EXPECT_EQ(0u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_200P, 7, 8)));
168 EXPECT_EQ(255u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_200P, 8, 8)));
169 EXPECT_EQ(255u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_200P, 39, 39)));
170 EXPECT_EQ(0u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_200P, 40, 39)));
171 EXPECT_EQ(0u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_200P, 47, 47)));
172 }
173
174 TEST(SelectFaviconFramesTest, _48_From_16) {
175 vector<SkBitmap> bitmaps;
176 bitmaps.push_back(MakeBitmap(SK_ColorGREEN, 16, 16));
177
178 gfx::ImageSkia image = SelectFaviconFrames(bitmaps, Scale1x2x(), 24, NULL);
179 EXPECT_EQ(2u, image.image_reps().size());
180 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_100P));
181 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_200P));
182 EXPECT_EQ(24, image.width());
183 EXPECT_EQ(24, image.height());
184 EXPECT_EQ(SK_ColorGREEN, GetColor1x(image));
185 EXPECT_EQ(0u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_100P, 0, 0)));
186 EXPECT_EQ(0u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_100P, 3, 4)));
187 EXPECT_EQ(255u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_100P, 4, 4)));
188 EXPECT_EQ(255u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_100P, 19, 19)));
189 EXPECT_EQ(0u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_100P, 20, 19)));
190 EXPECT_EQ(0u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_100P, 23, 23)));
191
192 EXPECT_EQ(SK_ColorGREEN, GetColor2x(image));
193 EXPECT_EQ(0u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_200P, 0, 0)));
194 EXPECT_EQ(0u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_200P, 7, 8)));
195 EXPECT_EQ(255u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_200P, 8, 8)));
196 EXPECT_EQ(255u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_200P, 39, 39)));
197 EXPECT_EQ(0u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_200P, 40, 39)));
198 EXPECT_EQ(0u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_200P, 47, 47)));
199 }
200
201 TEST(SelectFaviconFramesTest, ExactMatchBetterThanHugeBitmap) {
202 float score1;
203 vector<SkBitmap> bitmaps1;
204 bitmaps1.push_back(MakeBitmap(SK_ColorGREEN, 255, 255));
205 SelectFaviconFrames(bitmaps1, Scale1x2x(), 16, &score1);
206
207 float score2;
208 vector<SkBitmap> bitmaps2;
209 bitmaps2.push_back(MakeBitmap(SK_ColorGREEN, 16, 16));
210 bitmaps2.push_back(MakeBitmap(SK_ColorGREEN, 32, 32));
211 SelectFaviconFrames(bitmaps2, Scale1x2x(), 16, &score2);
212
213 EXPECT_GT(score2, score1);
214 }
215
216 TEST(SelectFaviconFramesTest, DownsamplingBetterThanUpsampling) {
217 float score1;
218 vector<SkBitmap> bitmaps1;
219 bitmaps1.push_back(MakeBitmap(SK_ColorGREEN, 8, 8));
220 SelectFaviconFrames(bitmaps1, Scale1x(), 16, &score1);
221
222 float score2;
223 vector<SkBitmap> bitmaps2;
224 bitmaps2.push_back(MakeBitmap(SK_ColorGREEN, 24, 24));
225 SelectFaviconFrames(bitmaps2, Scale1x(), 16, &score2);
226
227 EXPECT_GT(score2, score1);
228 }
229
230 }
OLDNEW
« no previous file with comments | « chrome/browser/favicon/select_favicon_frames.cc ('k') | chrome/browser/history/select_favicon_frames.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698