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

Side by Side Diff: chrome/browser/history/thumbnail_database_unittest.cc

Issue 10802066: Adds support for saving favicon size into history database. (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
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 <algorithm> 5 #include <algorithm>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/file_path.h" 10 #include "base/file_path.h"
(...skipping 28 matching lines...) Expand all
39 "goiwuegrqrcomizqyzkjalitbahxfjytrqvpqeroicxmnlkhlzunacxaneviawrtxcywhgef"; 39 "goiwuegrqrcomizqyzkjalitbahxfjytrqvpqeroicxmnlkhlzunacxaneviawrtxcywhgef";
40 static const unsigned char blob3[] = 40 static const unsigned char blob3[] =
41 "3716871354098370776510470746794707624107647054607467847164027"; 41 "3716871354098370776510470746794707624107647054607467847164027";
42 const double kBoringness = 0.25; 42 const double kBoringness = 0.25;
43 const double kWorseBoringness = 0.50; 43 const double kWorseBoringness = 0.50;
44 const double kBetterBoringness = 0.10; 44 const double kBetterBoringness = 0.10;
45 const double kTotallyBoring = 1.0; 45 const double kTotallyBoring = 1.0;
46 46
47 const int64 kPage1 = 1234; 47 const int64 kPage1 = 1234;
48 48
49 const gfx::Size kFaviconRegularSize = gfx::Size(16, 16);
50 const gfx::Size kFaviconLargeSize = gfx::Size(32, 32);
51
49 } // namespace 52 } // namespace
50 53
51 class ThumbnailDatabaseTest : public testing::Test { 54 class ThumbnailDatabaseTest : public testing::Test {
52 public: 55 public:
53 ThumbnailDatabaseTest() { 56 ThumbnailDatabaseTest() {
54 } 57 }
55 ~ThumbnailDatabaseTest() { 58 ~ThumbnailDatabaseTest() {
56 } 59 }
57 60
58 protected: 61 protected:
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 115
113 TEST_F(ThumbnailDatabaseTest, GetFaviconAfterMigrationToTopSites) { 116 TEST_F(ThumbnailDatabaseTest, GetFaviconAfterMigrationToTopSites) {
114 ThumbnailDatabase db; 117 ThumbnailDatabase db;
115 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 118 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
116 db.BeginTransaction(); 119 db.BeginTransaction();
117 120
118 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 121 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
119 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 122 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
120 123
121 GURL url("http://google.com"); 124 GURL url("http://google.com");
122 FaviconID id = db.AddFavicon(url, FAVICON); 125 FaviconID id = db.AddFavicon(url, kFaviconRegularSize, FAVICON);
123 base::Time time = base::Time::Now(); 126 base::Time time = base::Time::Now();
124 db.SetFavicon(id, favicon, time); 127 db.SetFavicon(id, favicon, time);
125 EXPECT_TRUE(db.RenameAndDropThumbnails(file_name_, new_file_name_)); 128 EXPECT_TRUE(db.RenameAndDropThumbnails(file_name_, new_file_name_));
126 EXPECT_TRUE(db.IsLatestVersion()); 129 EXPECT_TRUE(db.IsLatestVersion());
127 130
128 base::Time time_out; 131 base::Time time_out;
129 std::vector<unsigned char> favicon_out; 132 std::vector<unsigned char> favicon_out;
130 GURL url_out; 133 GURL url_out;
131 IconType icon_type_out; 134 IconType icon_type_out;
132 EXPECT_TRUE(db.GetFavicon(id, &time_out, &favicon_out, &url_out, 135 EXPECT_TRUE(db.GetFavicon(id, &time_out, &favicon_out, &url_out,
133 &icon_type_out)); 136 NULL, &icon_type_out));
134 EXPECT_EQ(url, url_out); 137 EXPECT_EQ(url, url_out);
135 EXPECT_EQ(time.ToTimeT(), time_out.ToTimeT()); 138 EXPECT_EQ(time.ToTimeT(), time_out.ToTimeT());
136 ASSERT_EQ(data.size(), favicon_out.size()); 139 ASSERT_EQ(data.size(), favicon_out.size());
137 EXPECT_TRUE(std::equal(data.begin(), 140 EXPECT_TRUE(std::equal(data.begin(),
138 data.end(), 141 data.end(),
139 favicon_out.begin())); 142 favicon_out.begin()));
140 EXPECT_EQ(FAVICON, icon_type_out); 143 EXPECT_EQ(FAVICON, icon_type_out);
141 } 144 }
142 145
146 TEST_F(ThumbnailDatabaseTest, GetFaviconIDsForURL) {
147 ThumbnailDatabase db;
148 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
149 db.BeginTransaction();
150
151 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
152 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
153
154 GURL url("http://google.com");
155 base::Time time = base::Time::Now();
156
157 FaviconID id1 = db.AddFavicon(url, kFaviconRegularSize, FAVICON);
158 EXPECT_NE(0, id1);
159
160 FaviconID id2 = db.AddFavicon(url, kFaviconRegularSize, TOUCH_ICON);
161 EXPECT_NE(0, id2);
162
163 FaviconID id3 = db.AddFavicon(url, kFaviconRegularSize,
164 TOUCH_PRECOMPOSED_ICON);
165 EXPECT_NE(0, id3);
166
167 FaviconID id4 = db.AddFavicon(url, kFaviconLargeSize,
168 TOUCH_PRECOMPOSED_ICON);
169 EXPECT_NE(0, id4);
170
171 std::vector<FaviconIDAndSize> favicon_id_size_listing;
172 db.GetFaviconIDsForFaviconURL(url, TOUCH_ICON | TOUCH_PRECOMPOSED_ICON,
173 &favicon_id_size_listing);
174 EXPECT_EQ(2u, favicon_id_size_listing.size());
175
176 // No required order for differently sized entries.
177 if (id3 == favicon_id_size_listing[0].icon_id) {
178 EXPECT_EQ(kFaviconRegularSize, favicon_id_size_listing[0].icon_size);
179 EXPECT_EQ(id4, favicon_id_size_listing[1].icon_id);
180 EXPECT_EQ(kFaviconLargeSize, favicon_id_size_listing[1].icon_size);
181 } else {
182 EXPECT_EQ(id3, favicon_id_size_listing[1].icon_id);
183 EXPECT_EQ(kFaviconRegularSize, favicon_id_size_listing[1].icon_size);
184 EXPECT_EQ(id4, favicon_id_size_listing[0].icon_id);
185 EXPECT_EQ(kFaviconLargeSize, favicon_id_size_listing[0].icon_size);
186 }
187 }
188
143 TEST_F(ThumbnailDatabaseTest, AddIconMapping) { 189 TEST_F(ThumbnailDatabaseTest, AddIconMapping) {
144 ThumbnailDatabase db; 190 ThumbnailDatabase db;
145 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 191 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
146 db.BeginTransaction(); 192 db.BeginTransaction();
147 193
148 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 194 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
149 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 195 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
150 196
151 GURL url("http://google.com"); 197 GURL url("http://google.com");
152 FaviconID id = db.AddFavicon(url, TOUCH_ICON); 198 FaviconID id = db.AddFavicon(url, kFaviconRegularSize, TOUCH_ICON);
153 EXPECT_NE(0, id); 199 EXPECT_NE(0, id);
154 base::Time time = base::Time::Now(); 200 base::Time time = base::Time::Now();
155 db.SetFavicon(id, favicon, time); 201 db.SetFavicon(id, favicon, time);
156 202
157 EXPECT_NE(0, db.AddIconMapping(url, id)); 203 EXPECT_NE(0, db.AddIconMapping(url, id));
158 std::vector<IconMapping> icon_mapping; 204 std::vector<IconMapping> icon_mapping;
159 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); 205 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping));
160 EXPECT_EQ(1u, icon_mapping.size()); 206 EXPECT_EQ(1u, icon_mapping.size());
161 EXPECT_EQ(url, icon_mapping.front().page_url); 207 EXPECT_EQ(url, icon_mapping.front().page_url);
162 EXPECT_EQ(id, icon_mapping.front().icon_id); 208 EXPECT_EQ(id, icon_mapping.front().icon_id);
163 } 209 }
164 210
165 TEST_F(ThumbnailDatabaseTest, UpdateIconMapping) { 211 TEST_F(ThumbnailDatabaseTest, UpdateIconMapping) {
166 ThumbnailDatabase db; 212 ThumbnailDatabase db;
167 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 213 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
168 db.BeginTransaction(); 214 db.BeginTransaction();
169 215
170 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 216 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
171 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 217 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
172 218
173 GURL url("http://google.com"); 219 GURL url("http://google.com");
174 FaviconID id = db.AddFavicon(url, TOUCH_ICON); 220 FaviconID id = db.AddFavicon(url, kFaviconRegularSize, TOUCH_ICON);
175 base::Time time = base::Time::Now(); 221 base::Time time = base::Time::Now();
176 db.SetFavicon(id, favicon, time); 222 db.SetFavicon(id, favicon, time);
177 223
178 EXPECT_TRUE(0 < db.AddIconMapping(url, id)); 224 EXPECT_TRUE(0 < db.AddIconMapping(url, id));
179 std::vector<IconMapping> icon_mapping; 225 std::vector<IconMapping> icon_mapping;
180 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); 226 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping));
181 ASSERT_EQ(1u, icon_mapping.size()); 227 ASSERT_EQ(1u, icon_mapping.size());
182 EXPECT_EQ(url, icon_mapping.front().page_url); 228 EXPECT_EQ(url, icon_mapping.front().page_url);
183 EXPECT_EQ(id, icon_mapping.front().icon_id); 229 EXPECT_EQ(id, icon_mapping.front().icon_id);
184 230
185 GURL url1("http://www.google.com/"); 231 GURL url1("http://www.google.com/");
186 FaviconID new_id = db.AddFavicon(url1, TOUCH_ICON); 232 FaviconID new_id = db.AddFavicon(url1, kFaviconRegularSize, TOUCH_ICON);
187 EXPECT_TRUE(db.UpdateIconMapping(icon_mapping.front().mapping_id, new_id)); 233 EXPECT_TRUE(db.UpdateIconMapping(icon_mapping.front().mapping_id, new_id));
188 234
189 icon_mapping.clear(); 235 icon_mapping.clear();
190 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); 236 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping));
191 ASSERT_EQ(1u, icon_mapping.size()); 237 ASSERT_EQ(1u, icon_mapping.size());
192 EXPECT_EQ(url, icon_mapping.front().page_url); 238 EXPECT_EQ(url, icon_mapping.front().page_url);
193 EXPECT_EQ(new_id, icon_mapping.front().icon_id); 239 EXPECT_EQ(new_id, icon_mapping.front().icon_id);
194 EXPECT_NE(id, icon_mapping.front().icon_id); 240 EXPECT_NE(id, icon_mapping.front().icon_id);
195 } 241 }
196 242
197 TEST_F(ThumbnailDatabaseTest, DeleteIconMappings) { 243 TEST_F(ThumbnailDatabaseTest, DeleteIconMappings) {
198 ThumbnailDatabase db; 244 ThumbnailDatabase db;
199 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 245 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
200 db.BeginTransaction(); 246 db.BeginTransaction();
201 247
202 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 248 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
203 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 249 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
204 250
205 GURL url("http://google.com"); 251 GURL url("http://google.com");
206 FaviconID id = db.AddFavicon(url, TOUCH_ICON); 252 FaviconID id = db.AddFavicon(url, kFaviconRegularSize, TOUCH_ICON);
207 base::Time time = base::Time::Now(); 253 base::Time time = base::Time::Now();
208 db.SetFavicon(id, favicon, time); 254 db.SetFavicon(id, favicon, time);
209 EXPECT_TRUE(0 < db.AddIconMapping(url, id)); 255 EXPECT_TRUE(0 < db.AddIconMapping(url, id));
210 256
211 FaviconID id2 = db.AddFavicon(url, FAVICON); 257 FaviconID id2 = db.AddFavicon(url, kFaviconRegularSize, FAVICON);
212 db.SetFavicon(id2, favicon, time); 258 db.SetFavicon(id2, favicon, time);
213 EXPECT_TRUE(0 < db.AddIconMapping(url, id2)); 259 EXPECT_TRUE(0 < db.AddIconMapping(url, id2));
214 ASSERT_NE(id, id2); 260 ASSERT_NE(id, id2);
215 261
216 std::vector<IconMapping> icon_mapping; 262 std::vector<IconMapping> icon_mapping;
217 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); 263 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping));
218 ASSERT_EQ(2u, icon_mapping.size()); 264 ASSERT_EQ(2u, icon_mapping.size());
219 EXPECT_EQ(icon_mapping.front().icon_type, TOUCH_ICON); 265 EXPECT_EQ(icon_mapping.front().icon_type, TOUCH_ICON);
220 EXPECT_TRUE(db.GetIconMappingForPageURL(url, FAVICON, NULL)); 266 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, FAVICON, NULL));
221 267
222 db.DeleteIconMappings(url); 268 db.DeleteIconMappings(url);
223 269
224 EXPECT_FALSE(db.GetIconMappingsForPageURL(url, NULL)); 270 EXPECT_FALSE(db.GetIconMappingsForPageURL(url, NULL));
225 EXPECT_FALSE(db.GetIconMappingForPageURL(url, FAVICON, NULL)); 271 EXPECT_FALSE(db.GetIconMappingsForPageURL(url, FAVICON, NULL));
226 } 272 }
227 273
228 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURL) { 274 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURL) {
229 ThumbnailDatabase db; 275 ThumbnailDatabase db;
230 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 276 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
231 db.BeginTransaction(); 277 db.BeginTransaction();
232 278
233 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 279 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
234 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 280 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
235 281
236 GURL url("http://google.com"); 282 GURL url("http://google.com");
237 283
238 FaviconID id1 = db.AddFavicon(url, TOUCH_ICON); 284 FaviconID id1 = db.AddFavicon(url, kFaviconRegularSize, TOUCH_ICON);
239 base::Time time = base::Time::Now(); 285 base::Time time = base::Time::Now();
240 db.SetFavicon(id1, favicon, time); 286 db.SetFavicon(id1, favicon, time);
241 EXPECT_TRUE(0 < db.AddIconMapping(url, id1)); 287 EXPECT_TRUE(0 < db.AddIconMapping(url, id1));
242 288
243 FaviconID id2 = db.AddFavicon(url, FAVICON); 289 FaviconID id2 = db.AddFavicon(url, kFaviconRegularSize, FAVICON);
244 EXPECT_NE(id1, id2); 290 EXPECT_NE(id1, id2);
245 db.SetFavicon(id2, favicon, time); 291 db.SetFavicon(id2, favicon, time);
246 EXPECT_TRUE(0 < db.AddIconMapping(url, id2)); 292 EXPECT_TRUE(0 < db.AddIconMapping(url, id2));
247 293
248 std::vector<IconMapping> icon_mapping; 294 FaviconID id3 = db.AddFavicon(url, kFaviconLargeSize, FAVICON);
249 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); 295 EXPECT_NE(id3, id1);
250 ASSERT_EQ(2u, icon_mapping.size()); 296 EXPECT_NE(id3, id2);
251 EXPECT_NE(icon_mapping[0].icon_id, icon_mapping[1].icon_id); 297 db.SetFavicon(id3, favicon, time);
252 EXPECT_TRUE(icon_mapping[0].icon_id == id1 && icon_mapping[1].icon_id == id2); 298 EXPECT_TRUE(0 < db.AddIconMapping(url, id3));
299
300 std::vector<IconMapping> icon_mappings;
301 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mappings));
302 ASSERT_EQ(3u, icon_mappings.size());
303 EXPECT_EQ(id1, icon_mappings[0].icon_id);
304
305 // No required order for differently sized entries.
306 if (id2 == icon_mappings[1].icon_id) {
307 EXPECT_EQ(id3, icon_mappings[2].icon_id);
308 } else {
309 EXPECT_EQ(id2, icon_mappings[2].icon_id);
310 EXPECT_EQ(id3, icon_mappings[1].icon_id);
311 }
312
313 icon_mappings.clear();
314 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, FAVICON, &icon_mappings));
315 ASSERT_EQ(2u, icon_mappings.size());
316 // No required order for differently sized entries.
317 if (id2 == icon_mappings[0].icon_id) {
318 EXPECT_EQ(id3, icon_mappings[1].icon_id);
319 } else {
320 EXPECT_EQ(id2, icon_mappings[1].icon_id);
321 EXPECT_EQ(id3, icon_mappings[0].icon_id);
322 }
253 } 323 }
254 324
255 TEST_F(ThumbnailDatabaseTest, UpgradeToVersion4) { 325 TEST_F(ThumbnailDatabaseTest, UpgradeToVersion4) {
256 ThumbnailDatabase db; 326 ThumbnailDatabase db;
257 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 327 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
258 db.BeginTransaction(); 328 db.BeginTransaction();
259 329
260 const char* name = "favicons"; 330 const char* name = "favicons";
261 std::string sql; 331 std::string sql;
262 sql.append("DROP TABLE IF EXISTS "); 332 sql.append("DROP TABLE IF EXISTS ");
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 449 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
380 450
381 db.BeginTransaction(); 451 db.BeginTransaction();
382 452
383 EXPECT_TRUE(db.InitTemporaryIconMappingTable()); 453 EXPECT_TRUE(db.InitTemporaryIconMappingTable());
384 454
385 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 455 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
386 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 456 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
387 457
388 GURL url("http://google.com"); 458 GURL url("http://google.com");
389 FaviconID id = db.AddFavicon(url, FAVICON); 459 FaviconID id = db.AddFavicon(url, kFaviconRegularSize, FAVICON);
390 base::Time time = base::Time::Now(); 460 base::Time time = base::Time::Now();
391 db.SetFavicon(id, favicon, time); 461 db.SetFavicon(id, favicon, time);
392 462
393 db.AddToTemporaryIconMappingTable(url, id); 463 db.AddToTemporaryIconMappingTable(url, id);
394 db.CommitTemporaryIconMappingTable(); 464 db.CommitTemporaryIconMappingTable();
395 IconMapping icon_mapping; 465 std::vector<IconMapping> icon_mappings;
396 EXPECT_TRUE(db.GetIconMappingForPageURL(url, FAVICON, &icon_mapping)); 466 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, FAVICON, &icon_mappings));
397 EXPECT_EQ(id, icon_mapping.icon_id); 467 EXPECT_EQ(1u, icon_mappings.size());
398 EXPECT_EQ(url, icon_mapping.page_url); 468 EXPECT_EQ(id, icon_mappings[0].icon_id);
469 EXPECT_EQ(url, icon_mappings[0].page_url);
470 EXPECT_EQ(kFaviconRegularSize, icon_mappings[0].icon_pixel_size);
399 } 471 }
400 472
401 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURLForReturnOrder) { 473 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURLForReturnOrder) {
402 ThumbnailDatabase db; 474 ThumbnailDatabase db;
403 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 475 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
404 db.BeginTransaction(); 476 db.BeginTransaction();
405 477
406 // Add a favicon 478 // Add a favicon
407 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 479 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
408 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 480 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
409 481
410 GURL url("http://google.com"); 482 GURL url("http://google.com");
411 FaviconID id = db.AddFavicon(url, FAVICON); 483 FaviconID id = db.AddFavicon(url, kFaviconRegularSize, FAVICON);
412 base::Time time = base::Time::Now(); 484 base::Time time = base::Time::Now();
413 db.SetFavicon(id, favicon, time); 485 db.SetFavicon(id, favicon, time);
414 486
415 EXPECT_NE(0, db.AddIconMapping(url, id)); 487 EXPECT_NE(0, db.AddIconMapping(url, id));
416 std::vector<IconMapping> icon_mapping; 488 std::vector<IconMapping> icon_mapping;
417 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); 489 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping));
418 490
419 EXPECT_EQ(url, icon_mapping.front().page_url); 491 EXPECT_EQ(url, icon_mapping.front().page_url);
420 EXPECT_EQ(id, icon_mapping.front().icon_id); 492 EXPECT_EQ(id, icon_mapping.front().icon_id);
421 EXPECT_EQ(FAVICON, icon_mapping.front().icon_type); 493 EXPECT_EQ(FAVICON, icon_mapping.front().icon_type);
422 494
423 // Add a touch icon 495 // Add a touch icon
424 std::vector<unsigned char> data2(blob2, blob2 + sizeof(blob2)); 496 std::vector<unsigned char> data2(blob2, blob2 + sizeof(blob2));
425 scoped_refptr<base::RefCountedBytes> favicon2 = 497 scoped_refptr<base::RefCountedBytes> favicon2 =
426 new base::RefCountedBytes(data); 498 new base::RefCountedBytes(data);
427 499
428 FaviconID id2 = db.AddFavicon(url, TOUCH_ICON); 500 FaviconID id2 = db.AddFavicon(url, kFaviconRegularSize, TOUCH_ICON);
429 db.SetFavicon(id2, favicon2, time); 501 db.SetFavicon(id2, favicon2, time);
430 EXPECT_NE(0, db.AddIconMapping(url, id2)); 502 EXPECT_NE(0, db.AddIconMapping(url, id2));
431 503
432 icon_mapping.clear(); 504 icon_mapping.clear();
433 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); 505 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping));
434 506
435 EXPECT_EQ(url, icon_mapping.front().page_url); 507 EXPECT_EQ(url, icon_mapping.front().page_url);
436 EXPECT_EQ(id2, icon_mapping.front().icon_id); 508 EXPECT_EQ(id2, icon_mapping.front().icon_id);
437 EXPECT_EQ(TOUCH_ICON, icon_mapping.front().icon_type); 509 EXPECT_EQ(TOUCH_ICON, icon_mapping.front().icon_type);
438 510
439 // Add a touch precomposed icon 511 // Add a touch precomposed icon
440 scoped_refptr<base::RefCountedBytes> favicon3 = 512 scoped_refptr<base::RefCountedBytes> favicon3 =
441 new base::RefCountedBytes(data2); 513 new base::RefCountedBytes(data2);
442 514
443 FaviconID id3 = db.AddFavicon(url, TOUCH_PRECOMPOSED_ICON); 515 FaviconID id3 = db.AddFavicon(url, kFaviconRegularSize,
516 TOUCH_PRECOMPOSED_ICON);
444 db.SetFavicon(id3, favicon3, time); 517 db.SetFavicon(id3, favicon3, time);
445 EXPECT_NE(0, db.AddIconMapping(url, id3)); 518 EXPECT_NE(0, db.AddIconMapping(url, id3));
446 519
447 icon_mapping.clear(); 520 icon_mapping.clear();
448 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); 521 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping));
449 522
450 EXPECT_EQ(url, icon_mapping.front().page_url); 523 EXPECT_EQ(url, icon_mapping.front().page_url);
451 EXPECT_EQ(id3, icon_mapping.front().icon_id); 524 EXPECT_EQ(id3, icon_mapping.front().icon_id);
452 EXPECT_EQ(TOUCH_PRECOMPOSED_ICON, icon_mapping.front().icon_type); 525 EXPECT_EQ(TOUCH_PRECOMPOSED_ICON, icon_mapping.front().icon_type);
453 } 526 }
454 527
455 TEST_F(ThumbnailDatabaseTest, HasMappingFor) { 528 TEST_F(ThumbnailDatabaseTest, HasMappingFor) {
456 ThumbnailDatabase db; 529 ThumbnailDatabase db;
457 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 530 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
458 db.BeginTransaction(); 531 db.BeginTransaction();
459 532
460 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 533 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
461 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 534 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
462 535
463 // Add a favicon which will have icon_mappings 536 // Add a favicon which will have icon_mappings
464 FaviconID id1 = db.AddFavicon(GURL("http://google.com"), FAVICON); 537 FaviconID id1 = db.AddFavicon(GURL("http://google.com"), kFaviconRegularSize,
538 FAVICON);
465 EXPECT_NE(id1, 0); 539 EXPECT_NE(id1, 0);
466 base::Time time = base::Time::Now(); 540 base::Time time = base::Time::Now();
467 db.SetFavicon(id1, favicon, time); 541 db.SetFavicon(id1, favicon, time);
468 542
469 // Add another type of favicon 543 // Add another type of favicon
470 FaviconID id2 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON); 544 FaviconID id2 = db.AddFavicon(GURL("http://www.google.com/icon"),
545 kFaviconRegularSize, TOUCH_ICON);
471 EXPECT_NE(id2, 0); 546 EXPECT_NE(id2, 0);
472 time = base::Time::Now(); 547 time = base::Time::Now();
473 db.SetFavicon(id2, favicon, time); 548 db.SetFavicon(id2, favicon, time);
474 549
475 // Add 3rd favicon 550 // Add 3rd favicon
476 FaviconID id3 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON); 551 FaviconID id3 = db.AddFavicon(GURL("http://www.google.com/icon"),
552 kFaviconRegularSize, TOUCH_ICON);
477 EXPECT_NE(id3, 0); 553 EXPECT_NE(id3, 0);
478 time = base::Time::Now(); 554 time = base::Time::Now();
479 db.SetFavicon(id3, favicon, time); 555 db.SetFavicon(id3, favicon, time);
480 556
481 // Add 2 icon mapping 557 // Add 2 icon mapping
482 GURL page_url("http://www.google.com"); 558 GURL page_url("http://www.google.com");
483 EXPECT_TRUE(db.AddIconMapping(page_url, id1)); 559 EXPECT_TRUE(db.AddIconMapping(page_url, id1));
484 EXPECT_TRUE(db.AddIconMapping(page_url, id2)); 560 EXPECT_TRUE(db.AddIconMapping(page_url, id2));
485 561
486 EXPECT_TRUE(db.HasMappingFor(id1)); 562 EXPECT_TRUE(db.HasMappingFor(id1));
487 EXPECT_TRUE(db.HasMappingFor(id2)); 563 EXPECT_TRUE(db.HasMappingFor(id2));
488 EXPECT_FALSE(db.HasMappingFor(id3)); 564 EXPECT_FALSE(db.HasMappingFor(id3));
489 565
490 // Remove all mappings 566 // Remove all mappings
491 db.DeleteIconMappings(page_url); 567 db.DeleteIconMappings(page_url);
492 EXPECT_FALSE(db.HasMappingFor(id1)); 568 EXPECT_FALSE(db.HasMappingFor(id1));
493 EXPECT_FALSE(db.HasMappingFor(id2)); 569 EXPECT_FALSE(db.HasMappingFor(id2));
494 EXPECT_FALSE(db.HasMappingFor(id3)); 570 EXPECT_FALSE(db.HasMappingFor(id3));
495 } 571 }
496 572
497 TEST_F(ThumbnailDatabaseTest, CloneIconMapping) { 573 TEST_F(ThumbnailDatabaseTest, CloneIconMapping) {
498 ThumbnailDatabase db; 574 ThumbnailDatabase db;
499 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 575 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
500 db.BeginTransaction(); 576 db.BeginTransaction();
501 577
502 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 578 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
503 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 579 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
504 580
505 // Add a favicon which will have icon_mappings 581 // Add a favicon which will have icon_mappings
506 FaviconID id1 = db.AddFavicon(GURL("http://google.com"), FAVICON); 582 FaviconID id1 = db.AddFavicon(GURL("http://google.com"), kFaviconRegularSize,
583 FAVICON);
507 EXPECT_NE(0, id1); 584 EXPECT_NE(0, id1);
508 base::Time time = base::Time::Now(); 585 base::Time time = base::Time::Now();
509 db.SetFavicon(id1, favicon, time); 586 db.SetFavicon(id1, favicon, time);
510 587
511 // Add another type of favicon 588 // Add another type of favicon
512 FaviconID id2 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON); 589 FaviconID id2 = db.AddFavicon(GURL("http://www.google.com/icon"),
590 kFaviconRegularSize, TOUCH_ICON);
513 EXPECT_NE(0, id2); 591 EXPECT_NE(0, id2);
514 time = base::Time::Now(); 592 time = base::Time::Now();
515 db.SetFavicon(id2, favicon, time); 593 db.SetFavicon(id2, favicon, time);
516 594
517 // Add 3rd favicon 595 // Add 3rd favicon
518 FaviconID id3 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON); 596 FaviconID id3 = db.AddFavicon(GURL("http://www.google.com/icon"),
597 kFaviconRegularSize, TOUCH_ICON);
519 EXPECT_NE(0, id3); 598 EXPECT_NE(0, id3);
520 time = base::Time::Now(); 599 time = base::Time::Now();
521 db.SetFavicon(id3, favicon, time); 600 db.SetFavicon(id3, favicon, time);
522 601
523 GURL page1_url("http://page1.com"); 602 GURL page1_url("http://page1.com");
524 EXPECT_TRUE(db.AddIconMapping(page1_url, id1)); 603 EXPECT_TRUE(db.AddIconMapping(page1_url, id1));
525 EXPECT_TRUE(db.AddIconMapping(page1_url, id2)); 604 EXPECT_TRUE(db.AddIconMapping(page1_url, id2));
526 605
527 GURL page2_url("http://page2.com"); 606 GURL page2_url("http://page2.com");
528 EXPECT_TRUE(db.AddIconMapping(page2_url, id3)); 607 EXPECT_TRUE(db.AddIconMapping(page2_url, id3));
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
574 std::vector<IconMapping> icon_mappings; 653 std::vector<IconMapping> icon_mappings;
575 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url1, &icon_mappings)); 654 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url1, &icon_mappings));
576 ASSERT_EQ(1u, icon_mappings.size()); 655 ASSERT_EQ(1u, icon_mappings.size());
577 EXPECT_EQ(FAVICON, icon_mappings[0].icon_type); 656 EXPECT_EQ(FAVICON, icon_mappings[0].icon_type);
578 EXPECT_EQ(page_url1, icon_mappings[0].page_url); 657 EXPECT_EQ(page_url1, icon_mappings[0].page_url);
579 EXPECT_EQ(1, icon_mappings[0].icon_id); 658 EXPECT_EQ(1, icon_mappings[0].icon_id);
580 base::Time time; 659 base::Time time;
581 std::vector<unsigned char> out_data; 660 std::vector<unsigned char> out_data;
582 GURL out_icon_url; 661 GURL out_icon_url;
583 ASSERT_TRUE(db.GetFavicon( 662 ASSERT_TRUE(db.GetFavicon(
584 icon_mappings[0].icon_id, &time, &out_data, &out_icon_url, NULL)); 663 icon_mappings[0].icon_id, &time, &out_data, &out_icon_url, NULL, NULL));
585 EXPECT_EQ(icon1, out_icon_url); 664 EXPECT_EQ(icon1, out_icon_url);
586 665
587 // Test a page which has the same icon. 666 // Test a page which has the same icon.
588 GURL page_url3 = GURL("http://www.google.com/"); 667 GURL page_url3 = GURL("http://www.google.com/");
589 icon_mappings.clear(); 668 icon_mappings.clear();
590 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url3, &icon_mappings)); 669 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url3, &icon_mappings));
591 ASSERT_EQ(1u, icon_mappings.size()); 670 ASSERT_EQ(1u, icon_mappings.size());
592 EXPECT_EQ(FAVICON, icon_mappings[0].icon_type); 671 EXPECT_EQ(FAVICON, icon_mappings[0].icon_type);
593 EXPECT_EQ(page_url3, icon_mappings[0].page_url); 672 EXPECT_EQ(page_url3, icon_mappings[0].page_url);
594 EXPECT_EQ(1, icon_mappings[0].icon_id); 673 EXPECT_EQ(1, icon_mappings[0].icon_id);
595 674
596 // Test a icon_mapping with different IconID. 675 // Test a icon_mapping with different IconID.
597 GURL page_url2 = GURL("http://yahoo.com/"); 676 GURL page_url2 = GURL("http://yahoo.com/");
598 icon_mappings.clear(); 677 icon_mappings.clear();
599 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url2, &icon_mappings)); 678 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url2, &icon_mappings));
600 ASSERT_EQ(1u, icon_mappings.size()); 679 ASSERT_EQ(1u, icon_mappings.size());
601 EXPECT_EQ(FAVICON, icon_mappings[0].icon_type); 680 EXPECT_EQ(FAVICON, icon_mappings[0].icon_type);
602 EXPECT_EQ(page_url2, icon_mappings[0].page_url); 681 EXPECT_EQ(page_url2, icon_mappings[0].page_url);
603 EXPECT_EQ(2, icon_mappings[0].icon_id); 682 EXPECT_EQ(2, icon_mappings[0].icon_id);
604 ASSERT_TRUE(db.GetFavicon( 683 ASSERT_TRUE(db.GetFavicon(
605 icon_mappings[0].icon_id, &time, &out_data, &out_icon_url, NULL)); 684 icon_mappings[0].icon_id, &time, &out_data, &out_icon_url, NULL, NULL));
606 EXPECT_EQ(icon2, out_icon_url); 685 EXPECT_EQ(icon2, out_icon_url);
607 686
608 // Test a page without icon 687 // Test a page without icon
609 GURL page_url4 = GURL("http://www.google.com/blank.html"); 688 GURL page_url4 = GURL("http://www.google.com/blank.html");
610 EXPECT_FALSE(db.GetIconMappingsForPageURL(page_url4, NULL)); 689 EXPECT_FALSE(db.GetIconMappingsForPageURL(page_url4, NULL));
611 } 690 }
612 691
613 TEST_F(ThumbnailDatabaseTest, IconMappingEnumerator) { 692 TEST_F(ThumbnailDatabaseTest, IconMappingEnumerator) {
614 ThumbnailDatabase db; 693 ThumbnailDatabase db;
615 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 694 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
616 db.BeginTransaction(); 695 db.BeginTransaction();
617 696
618 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 697 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
619 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 698 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
620 699
621 GURL url("http://google.com"); 700 GURL url("http://google.com");
622 FaviconID touch_icon_id1 = db.AddFavicon(url, TOUCH_ICON); 701 FaviconID touch_icon_id1 = db.AddFavicon(url, kFaviconRegularSize,
702 TOUCH_ICON);
623 ASSERT_NE(0, touch_icon_id1); 703 ASSERT_NE(0, touch_icon_id1);
624 ASSERT_TRUE(db.SetFavicon(touch_icon_id1, favicon, base::Time::Now())); 704 ASSERT_TRUE(db.SetFavicon(touch_icon_id1, favicon, base::Time::Now()));
625 IconMappingID touch_mapping_id1 = db.AddIconMapping(url, touch_icon_id1); 705 IconMappingID touch_mapping_id1 = db.AddIconMapping(url, touch_icon_id1);
626 ASSERT_NE(0, touch_mapping_id1); 706 ASSERT_NE(0, touch_mapping_id1);
627 707
628 FaviconID favicon_id1 = db.AddFavicon(url, FAVICON); 708 FaviconID favicon_id1 = db.AddFavicon(url, kFaviconRegularSize, FAVICON);
629 ASSERT_NE(0, favicon_id1); 709 ASSERT_NE(0, favicon_id1);
630 ASSERT_TRUE(db.SetFavicon(favicon_id1, favicon, base::Time::Now())); 710 ASSERT_TRUE(db.SetFavicon(favicon_id1, favicon, base::Time::Now()));
631 IconMappingID favicon_mapping_id1 = db.AddIconMapping(url, favicon_id1); 711 IconMappingID favicon_mapping_id1 = db.AddIconMapping(url, favicon_id1);
632 ASSERT_NE(0, favicon_mapping_id1); 712 ASSERT_NE(0, favicon_mapping_id1);
633 713
634 GURL url2("http://chromium.org"); 714 GURL url2("http://chromium.org");
635 FaviconID favicon_id2 = db.AddFavicon(url2, FAVICON); 715 FaviconID favicon_id2 = db.AddFavicon(url2, kFaviconLargeSize, FAVICON);
636 ASSERT_NE(0, favicon_id2); 716 ASSERT_NE(0, favicon_id2);
637 ASSERT_TRUE(db.SetFavicon(favicon_id2, favicon, base::Time::Now())); 717 ASSERT_TRUE(db.SetFavicon(favicon_id2, favicon, base::Time::Now()));
638 IconMappingID favicon_mapping_id2 = db.AddIconMapping(url2, favicon_id2); 718 IconMappingID favicon_mapping_id2 = db.AddIconMapping(url2, favicon_id2);
639 ASSERT_NE(0, favicon_mapping_id2); 719 ASSERT_NE(0, favicon_mapping_id2);
640 720
641 IconMapping icon_mapping; 721 IconMapping icon_mapping;
642 ThumbnailDatabase::IconMappingEnumerator enumerator1; 722 ThumbnailDatabase::IconMappingEnumerator enumerator1;
643 ASSERT_TRUE(db.InitIconMappingEnumerator(FAVICON, &enumerator1)); 723 ASSERT_TRUE(db.InitIconMappingEnumerator(FAVICON, &enumerator1));
644 // There are 2 favicon mappings. 724 // There are 2 favicon mappings.
645 bool has_favicon_mapping1 = false; 725 bool has_favicon_mapping1 = false;
(...skipping 22 matching lines...) Expand all
668 ASSERT_TRUE(enumerator2.GetNextIconMapping(&icon_mapping)); 748 ASSERT_TRUE(enumerator2.GetNextIconMapping(&icon_mapping));
669 EXPECT_EQ(touch_mapping_id1, icon_mapping.mapping_id); 749 EXPECT_EQ(touch_mapping_id1, icon_mapping.mapping_id);
670 EXPECT_EQ(url, icon_mapping.page_url); 750 EXPECT_EQ(url, icon_mapping.page_url);
671 EXPECT_EQ(touch_icon_id1, icon_mapping.icon_id); 751 EXPECT_EQ(touch_icon_id1, icon_mapping.icon_id);
672 EXPECT_EQ(TOUCH_ICON, icon_mapping.icon_type); 752 EXPECT_EQ(TOUCH_ICON, icon_mapping.icon_type);
673 753
674 EXPECT_FALSE(enumerator2.GetNextIconMapping(&icon_mapping)); 754 EXPECT_FALSE(enumerator2.GetNextIconMapping(&icon_mapping));
675 } 755 }
676 756
677 } // namespace history 757 } // namespace history
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698