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

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

Issue 10824319: Give SelectFaviconFrames a quality score. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 4 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/favicon/select_favicon_frames.h" 5 #include "chrome/browser/favicon/select_favicon_frames.h"
6 6
7 #include "ui/base/layout.h" 7 #include "ui/base/layout.h"
8 #include "ui/gfx/image/image_skia.h" 8 #include "ui/gfx/image/image_skia.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "third_party/skia/include/core/SkBitmap.h" 10 #include "third_party/skia/include/core/SkBitmap.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 SkColor GetColor2x(const gfx::ImageSkia& image) { 53 SkColor GetColor2x(const gfx::ImageSkia& image) {
54 return GetColor(image, ui::SCALE_FACTOR_200P); 54 return GetColor(image, ui::SCALE_FACTOR_200P);
55 } 55 }
56 56
57 TEST(SelectFaviconFramesTest, ZeroSizePicksLargest) { 57 TEST(SelectFaviconFramesTest, ZeroSizePicksLargest) {
58 vector<SkBitmap> bitmaps; 58 vector<SkBitmap> bitmaps;
59 bitmaps.push_back(MakeBitmap(SK_ColorRED, 16, 16)); 59 bitmaps.push_back(MakeBitmap(SK_ColorRED, 16, 16));
60 bitmaps.push_back(MakeBitmap(SK_ColorGREEN, 48, 48)); 60 bitmaps.push_back(MakeBitmap(SK_ColorGREEN, 48, 48));
61 bitmaps.push_back(MakeBitmap(SK_ColorBLUE, 32, 32)); 61 bitmaps.push_back(MakeBitmap(SK_ColorBLUE, 32, 32));
62 62
63 gfx::ImageSkia image = SelectFaviconFrames(bitmaps, Scale1x(), 0); 63 gfx::ImageSkia image = SelectFaviconFrames(bitmaps, Scale1x(), 0, NULL);
64 EXPECT_EQ(1u, image.image_reps().size()); 64 EXPECT_EQ(1u, image.image_reps().size());
65 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_100P)); 65 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_100P));
66 EXPECT_EQ(48, image.width()); 66 EXPECT_EQ(48, image.width());
67 EXPECT_EQ(48, image.height()); 67 EXPECT_EQ(48, image.height());
68 68
69 EXPECT_EQ(SK_ColorGREEN, GetColor1x(image)); 69 EXPECT_EQ(SK_ColorGREEN, GetColor1x(image));
70 } 70 }
71 71
72 TEST(SelectFaviconFramesTest, _16From16) { 72 TEST(SelectFaviconFramesTest, _16From16) {
73 vector<SkBitmap> bitmaps; 73 vector<SkBitmap> bitmaps;
74 bitmaps.push_back(MakeBitmap(SK_ColorRED, 15, 15)); 74 bitmaps.push_back(MakeBitmap(SK_ColorRED, 15, 15));
75 bitmaps.push_back(MakeBitmap(SK_ColorGREEN, 16, 16)); 75 bitmaps.push_back(MakeBitmap(SK_ColorGREEN, 16, 16));
76 bitmaps.push_back(MakeBitmap(SK_ColorBLUE, 17, 17)); 76 bitmaps.push_back(MakeBitmap(SK_ColorBLUE, 17, 17));
77 77
78 gfx::ImageSkia image = SelectFaviconFrames(bitmaps, Scale1x(), 16); 78 gfx::ImageSkia image = SelectFaviconFrames(bitmaps, Scale1x(), 16, NULL);
79 EXPECT_EQ(1u, image.image_reps().size()); 79 EXPECT_EQ(1u, image.image_reps().size());
80 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_100P)); 80 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_100P));
81 EXPECT_EQ(16, image.width()); 81 EXPECT_EQ(16, image.width());
82 EXPECT_EQ(16, image.height()); 82 EXPECT_EQ(16, image.height());
83 EXPECT_EQ(SK_ColorGREEN, GetColor1x(image)); 83 EXPECT_EQ(SK_ColorGREEN, GetColor1x(image));
84 } 84 }
85 85
86 TEST(SelectFaviconFramesTest, _16From17) { 86 TEST(SelectFaviconFramesTest, _16From17) {
87 vector<SkBitmap> bitmaps; 87 vector<SkBitmap> bitmaps;
88 bitmaps.push_back(MakeBitmap(SK_ColorRED, 15, 15)); 88 bitmaps.push_back(MakeBitmap(SK_ColorRED, 15, 15));
89 bitmaps.push_back(MakeBitmap(SK_ColorGREEN, 17, 17)); 89 bitmaps.push_back(MakeBitmap(SK_ColorGREEN, 17, 17));
90 90
91 // Should resample from the bigger candidate. 91 // Should resample from the bigger candidate.
92 gfx::ImageSkia image = SelectFaviconFrames(bitmaps, Scale1x(), 16); 92 gfx::ImageSkia image = SelectFaviconFrames(bitmaps, Scale1x(), 16, NULL);
93 EXPECT_EQ(1u, image.image_reps().size()); 93 EXPECT_EQ(1u, image.image_reps().size());
94 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_100P)); 94 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_100P));
95 EXPECT_EQ(16, image.width()); 95 EXPECT_EQ(16, image.width());
96 EXPECT_EQ(16, image.height()); 96 EXPECT_EQ(16, image.height());
97 EXPECT_EQ(SK_ColorGREEN, GetColor1x(image)); 97 EXPECT_EQ(SK_ColorGREEN, GetColor1x(image));
98 } 98 }
99 99
100 TEST(SelectFaviconFramesTest, _16From15) { 100 TEST(SelectFaviconFramesTest, _16From15) {
101 vector<SkBitmap> bitmaps; 101 vector<SkBitmap> bitmaps;
102 bitmaps.push_back(MakeBitmap(SK_ColorRED, 14, 14)); 102 bitmaps.push_back(MakeBitmap(SK_ColorRED, 14, 14));
103 bitmaps.push_back(MakeBitmap(SK_ColorGREEN, 15, 15)); 103 bitmaps.push_back(MakeBitmap(SK_ColorGREEN, 15, 15));
104 104
105 // If nothing else is available, should resample form the next smaller 105 // If nothing else is available, should resample form the next smaller
106 // candidate. 106 // candidate.
107 gfx::ImageSkia image = SelectFaviconFrames(bitmaps, Scale1x(), 16); 107 gfx::ImageSkia image = SelectFaviconFrames(bitmaps, Scale1x(), 16, NULL);
108 EXPECT_EQ(1u, image.image_reps().size()); 108 EXPECT_EQ(1u, image.image_reps().size());
109 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_100P)); 109 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_100P));
110 EXPECT_EQ(16, image.width()); 110 EXPECT_EQ(16, image.width());
111 EXPECT_EQ(16, image.height()); 111 EXPECT_EQ(16, image.height());
112 EXPECT_EQ(SK_ColorGREEN, GetColor1x(image)); 112 EXPECT_EQ(SK_ColorGREEN, GetColor1x(image));
113 } 113 }
114 114
115 TEST(SelectFaviconFramesTest, _16From16_Scale2x_32_From_16) { 115 TEST(SelectFaviconFramesTest, _16From16_Scale2x_32_From_16) {
116 vector<SkBitmap> bitmaps; 116 vector<SkBitmap> bitmaps;
117 bitmaps.push_back(MakeBitmap(SK_ColorGREEN, 16, 16)); 117 bitmaps.push_back(MakeBitmap(SK_ColorGREEN, 16, 16));
118 118
119 gfx::ImageSkia image = SelectFaviconFrames(bitmaps, Scale1x2x(), 16); 119 gfx::ImageSkia image = SelectFaviconFrames(bitmaps, Scale1x2x(), 16, NULL);
120 EXPECT_EQ(2u, image.image_reps().size()); 120 EXPECT_EQ(2u, image.image_reps().size());
121 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_100P)); 121 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_100P));
122 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_200P)); 122 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_200P));
123 EXPECT_EQ(16, image.width()); 123 EXPECT_EQ(16, image.width());
124 EXPECT_EQ(16, image.height()); 124 EXPECT_EQ(16, image.height());
125 EXPECT_EQ(SK_ColorGREEN, GetColor1x(image)); 125 EXPECT_EQ(SK_ColorGREEN, GetColor1x(image));
126 EXPECT_EQ(SK_ColorGREEN, GetColor2x(image)); 126 EXPECT_EQ(SK_ColorGREEN, GetColor2x(image));
127 } 127 }
128 128
129 TEST(SelectFaviconFramesTest, _16From16_Scale2x_32_From_32) { 129 TEST(SelectFaviconFramesTest, _16From16_Scale2x_32_From_32) {
130 vector<SkBitmap> bitmaps; 130 vector<SkBitmap> bitmaps;
131 bitmaps.push_back(MakeBitmap(SK_ColorGREEN, 16, 16)); 131 bitmaps.push_back(MakeBitmap(SK_ColorGREEN, 16, 16));
132 bitmaps.push_back(MakeBitmap(SK_ColorBLUE, 32, 32)); 132 bitmaps.push_back(MakeBitmap(SK_ColorBLUE, 32, 32));
133 133
134 gfx::ImageSkia image = SelectFaviconFrames(bitmaps, Scale1x2x(), 16); 134 gfx::ImageSkia image = SelectFaviconFrames(bitmaps, Scale1x2x(), 16, NULL);
135 EXPECT_EQ(2u, image.image_reps().size()); 135 EXPECT_EQ(2u, image.image_reps().size());
136 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_100P)); 136 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_100P));
137 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_200P)); 137 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_200P));
138 EXPECT_EQ(16, image.width()); 138 EXPECT_EQ(16, image.width());
139 EXPECT_EQ(16, image.height()); 139 EXPECT_EQ(16, image.height());
140 EXPECT_EQ(SK_ColorGREEN, GetColor1x(image)); 140 EXPECT_EQ(SK_ColorGREEN, GetColor1x(image));
141 EXPECT_EQ(SK_ColorBLUE, GetColor2x(image)); 141 EXPECT_EQ(SK_ColorBLUE, GetColor2x(image));
142 } 142 }
143 143
144 TEST(SelectFaviconFramesTest, _24_48) { 144 TEST(SelectFaviconFramesTest, _24_48) {
145 vector<SkBitmap> bitmaps; 145 vector<SkBitmap> bitmaps;
146 bitmaps.push_back(MakeBitmap(SK_ColorRED, 25, 25)); 146 bitmaps.push_back(MakeBitmap(SK_ColorRED, 25, 25));
147 bitmaps.push_back(MakeBitmap(SK_ColorGREEN, 16, 16)); 147 bitmaps.push_back(MakeBitmap(SK_ColorGREEN, 16, 16));
148 bitmaps.push_back(MakeBitmap(SK_ColorBLUE, 32, 32)); 148 bitmaps.push_back(MakeBitmap(SK_ColorBLUE, 32, 32));
149 bitmaps.push_back(MakeBitmap(SK_ColorYELLOW, 49, 49)); 149 bitmaps.push_back(MakeBitmap(SK_ColorYELLOW, 49, 49));
150 150
151 gfx::ImageSkia image = SelectFaviconFrames(bitmaps, Scale1x2x(), 24); 151 gfx::ImageSkia image = SelectFaviconFrames(bitmaps, Scale1x2x(), 24, NULL);
152 EXPECT_EQ(2u, image.image_reps().size()); 152 EXPECT_EQ(2u, image.image_reps().size());
153 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_100P)); 153 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_100P));
154 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_200P)); 154 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_200P));
155 EXPECT_EQ(24, image.width()); 155 EXPECT_EQ(24, image.width());
156 EXPECT_EQ(24, image.height()); 156 EXPECT_EQ(24, image.height());
157 EXPECT_EQ(SK_ColorGREEN, GetColor1x(image)); 157 EXPECT_EQ(SK_ColorGREEN, GetColor1x(image));
158 EXPECT_EQ(0u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_100P, 0, 0))); 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))); 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))); 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))); 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))); 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))); 163 EXPECT_EQ(0u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_100P, 23, 23)));
164 164
165 EXPECT_EQ(SK_ColorBLUE, GetColor2x(image)); 165 EXPECT_EQ(SK_ColorBLUE, GetColor2x(image));
166 EXPECT_EQ(0u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_200P, 0, 0))); 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))); 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))); 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))); 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))); 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))); 171 EXPECT_EQ(0u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_200P, 47, 47)));
172 } 172 }
173 173
174 TEST(SelectFaviconFramesTest, _48_From_16) { 174 TEST(SelectFaviconFramesTest, _48_From_16) {
175 vector<SkBitmap> bitmaps; 175 vector<SkBitmap> bitmaps;
176 bitmaps.push_back(MakeBitmap(SK_ColorGREEN, 16, 16)); 176 bitmaps.push_back(MakeBitmap(SK_ColorGREEN, 16, 16));
177 177
178 gfx::ImageSkia image = SelectFaviconFrames(bitmaps, Scale1x2x(), 24); 178 gfx::ImageSkia image = SelectFaviconFrames(bitmaps, Scale1x2x(), 24, NULL);
179 EXPECT_EQ(2u, image.image_reps().size()); 179 EXPECT_EQ(2u, image.image_reps().size());
180 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_100P)); 180 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_100P));
181 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_200P)); 181 ASSERT_TRUE(image.HasRepresentation(ui::SCALE_FACTOR_200P));
182 EXPECT_EQ(24, image.width()); 182 EXPECT_EQ(24, image.width());
183 EXPECT_EQ(24, image.height()); 183 EXPECT_EQ(24, image.height());
184 EXPECT_EQ(SK_ColorGREEN, GetColor1x(image)); 184 EXPECT_EQ(SK_ColorGREEN, GetColor1x(image));
185 EXPECT_EQ(0u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_100P, 0, 0))); 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))); 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))); 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))); 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))); 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))); 190 EXPECT_EQ(0u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_100P, 23, 23)));
191 191
192 EXPECT_EQ(SK_ColorGREEN, GetColor2x(image)); 192 EXPECT_EQ(SK_ColorGREEN, GetColor2x(image));
193 EXPECT_EQ(0u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_200P, 0, 0))); 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))); 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))); 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))); 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))); 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))); 198 EXPECT_EQ(0u, SkColorGetA(GetColor(image, ui::SCALE_FACTOR_200P, 47, 47)));
199 } 199 }
200 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 EXPECT_GT(score2, score1);
201 } 213 }
214
215 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698