OLD | NEW |
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 Loading... |
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 } |
OLD | NEW |