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

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

Issue 10917041: Cleanup FaviconSQLHandler::Update (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
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 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 124
125 TEST_F(ThumbnailDatabaseTest, GetFaviconAfterMigrationToTopSites) { 125 TEST_F(ThumbnailDatabaseTest, GetFaviconAfterMigrationToTopSites) {
126 ThumbnailDatabase db; 126 ThumbnailDatabase db;
127 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 127 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
128 db.BeginTransaction(); 128 db.BeginTransaction();
129 129
130 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 130 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
131 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 131 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
132 132
133 GURL url("http://google.com"); 133 GURL url("http://google.com");
134 FaviconID icon_id = db.AddFavicon(url, FAVICON); 134 FaviconID icon_id = db.AddFavicon(url, FAVICON,
135 db.SetFaviconSizes(icon_id, GetFaviconSizesSmallAndLarge()); 135 GetFaviconSizesSmallAndLarge());
136 base::Time time = base::Time::Now(); 136 base::Time time = base::Time::Now();
137 FaviconBitmapID bitmap1_id = db.AddFaviconBitmap(icon_id, favicon, time, 137 FaviconBitmapID bitmap1_id = db.AddFaviconBitmap(icon_id, favicon, time,
138 kSmallSize); 138 kSmallSize);
139 FaviconBitmapID bitmap2_id = db.AddFaviconBitmap(icon_id, favicon, time, 139 FaviconBitmapID bitmap2_id = db.AddFaviconBitmap(icon_id, favicon, time,
140 kLargeSize); 140 kLargeSize);
141 EXPECT_TRUE(db.RenameAndDropThumbnails(file_name_, new_file_name_)); 141 EXPECT_TRUE(db.RenameAndDropThumbnails(file_name_, new_file_name_));
142 EXPECT_TRUE(db.IsLatestVersion()); 142 EXPECT_TRUE(db.IsLatestVersion());
143 143
144 GURL url_out; 144 GURL url_out;
145 IconType icon_type_out; 145 IconType icon_type_out;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 188
189 TEST_F(ThumbnailDatabaseTest, AddIconMapping) { 189 TEST_F(ThumbnailDatabaseTest, AddIconMapping) {
190 ThumbnailDatabase db; 190 ThumbnailDatabase db;
191 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 191 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
192 db.BeginTransaction(); 192 db.BeginTransaction();
193 193
194 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 194 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
195 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 195 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
196 196
197 GURL url("http://google.com"); 197 GURL url("http://google.com");
198 FaviconID id = db.AddFavicon(url, TOUCH_ICON); 198 base::Time time = base::Time::Now();
199 FaviconID id = db.AddFavicon(url, TOUCH_ICON, GetDefaultFaviconSizes(),
200 favicon, time, gfx::Size());
199 EXPECT_NE(0, id); 201 EXPECT_NE(0, id);
200 base::Time time = base::Time::Now();
201 db.AddFaviconBitmap(id, favicon, time, gfx::Size());
202 202
203 EXPECT_NE(0, db.AddIconMapping(url, id)); 203 EXPECT_NE(0, db.AddIconMapping(url, id));
204 std::vector<IconMapping> icon_mappings; 204 std::vector<IconMapping> icon_mappings;
205 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mappings)); 205 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mappings));
206 EXPECT_EQ(1u, icon_mappings.size()); 206 EXPECT_EQ(1u, icon_mappings.size());
207 EXPECT_EQ(url, icon_mappings.front().page_url); 207 EXPECT_EQ(url, icon_mappings.front().page_url);
208 EXPECT_EQ(id, icon_mappings.front().icon_id); 208 EXPECT_EQ(id, icon_mappings.front().icon_id);
209 } 209 }
210 210
211 TEST_F(ThumbnailDatabaseTest, UpdateIconMapping) { 211 TEST_F(ThumbnailDatabaseTest, UpdateIconMapping) {
212 ThumbnailDatabase db; 212 ThumbnailDatabase db;
213 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 213 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
214 db.BeginTransaction(); 214 db.BeginTransaction();
215 215
216 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
217 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
218
219 GURL url("http://google.com"); 216 GURL url("http://google.com");
220 FaviconID id = db.AddFavicon(url, TOUCH_ICON); 217 FaviconID id = db.AddFavicon(url, TOUCH_ICON, GetDefaultFaviconSizes());
221 base::Time time = base::Time::Now();
222 db.AddFaviconBitmap(id, favicon, time, gfx::Size());
223 218
224 EXPECT_TRUE(0 < db.AddIconMapping(url, id)); 219 EXPECT_TRUE(0 < db.AddIconMapping(url, id));
225 std::vector<IconMapping> icon_mapping; 220 std::vector<IconMapping> icon_mapping;
226 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); 221 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping));
227 ASSERT_EQ(1u, icon_mapping.size()); 222 ASSERT_EQ(1u, icon_mapping.size());
228 EXPECT_EQ(url, icon_mapping.front().page_url); 223 EXPECT_EQ(url, icon_mapping.front().page_url);
229 EXPECT_EQ(id, icon_mapping.front().icon_id); 224 EXPECT_EQ(id, icon_mapping.front().icon_id);
230 225
231 GURL url1("http://www.google.com/"); 226 GURL url1("http://www.google.com/");
232 FaviconID new_id = db.AddFavicon(url1, TOUCH_ICON); 227 FaviconID new_id = db.AddFavicon(url1, TOUCH_ICON, GetDefaultFaviconSizes());
233 EXPECT_TRUE(db.UpdateIconMapping(icon_mapping.front().mapping_id, new_id)); 228 EXPECT_TRUE(db.UpdateIconMapping(icon_mapping.front().mapping_id, new_id));
234 229
235 icon_mapping.clear(); 230 icon_mapping.clear();
236 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); 231 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping));
237 ASSERT_EQ(1u, icon_mapping.size()); 232 ASSERT_EQ(1u, icon_mapping.size());
238 EXPECT_EQ(url, icon_mapping.front().page_url); 233 EXPECT_EQ(url, icon_mapping.front().page_url);
239 EXPECT_EQ(new_id, icon_mapping.front().icon_id); 234 EXPECT_EQ(new_id, icon_mapping.front().icon_id);
240 EXPECT_NE(id, icon_mapping.front().icon_id); 235 EXPECT_NE(id, icon_mapping.front().icon_id);
241 } 236 }
242 237
243 TEST_F(ThumbnailDatabaseTest, DeleteIconMappings) { 238 TEST_F(ThumbnailDatabaseTest, DeleteIconMappings) {
244 ThumbnailDatabase db; 239 ThumbnailDatabase db;
245 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 240 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
246 db.BeginTransaction(); 241 db.BeginTransaction();
247 242
248 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 243 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
249 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 244 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
250 245
251 GURL url("http://google.com"); 246 GURL url("http://google.com");
252 FaviconID id = db.AddFavicon(url, TOUCH_ICON); 247 FaviconID id = db.AddFavicon(url, TOUCH_ICON, GetDefaultFaviconSizes());
253 base::Time time = base::Time::Now(); 248 base::Time time = base::Time::Now();
254 db.AddFaviconBitmap(id, favicon, time, gfx::Size()); 249 db.AddFaviconBitmap(id, favicon, time, gfx::Size());
255 EXPECT_TRUE(0 < db.AddIconMapping(url, id)); 250 EXPECT_TRUE(0 < db.AddIconMapping(url, id));
256 251
257 FaviconID id2 = db.AddFavicon(url, FAVICON); 252 FaviconID id2 = db.AddFavicon(url, FAVICON, GetDefaultFaviconSizes());
258 db.AddFaviconBitmap(id2, favicon, time, gfx::Size());
259 EXPECT_TRUE(0 < db.AddIconMapping(url, id2)); 253 EXPECT_TRUE(0 < db.AddIconMapping(url, id2));
260 ASSERT_NE(id, id2); 254 ASSERT_NE(id, id2);
261 255
262 std::vector<IconMapping> icon_mapping; 256 std::vector<IconMapping> icon_mapping;
263 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); 257 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping));
264 ASSERT_EQ(2u, icon_mapping.size()); 258 ASSERT_EQ(2u, icon_mapping.size());
265 EXPECT_EQ(icon_mapping.front().icon_type, TOUCH_ICON); 259 EXPECT_EQ(icon_mapping.front().icon_type, TOUCH_ICON);
266 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, FAVICON, NULL)); 260 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, FAVICON, NULL));
267 261
268 db.DeleteIconMappings(url); 262 db.DeleteIconMappings(url);
269 263
270 EXPECT_FALSE(db.GetIconMappingsForPageURL(url, NULL)); 264 EXPECT_FALSE(db.GetIconMappingsForPageURL(url, NULL));
271 EXPECT_FALSE(db.GetIconMappingsForPageURL(url, FAVICON, NULL)); 265 EXPECT_FALSE(db.GetIconMappingsForPageURL(url, FAVICON, NULL));
272 } 266 }
273 267
274 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURL) { 268 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURL) {
275 ThumbnailDatabase db; 269 ThumbnailDatabase db;
276 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 270 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
277 db.BeginTransaction(); 271 db.BeginTransaction();
278 272
279 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 273 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
280 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 274 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
281 275
282 GURL url("http://google.com"); 276 GURL url("http://google.com");
283 277
284 FaviconID id1 = db.AddFavicon(url, TOUCH_ICON); 278 FaviconID id1 = db.AddFavicon(url, TOUCH_ICON,
279 GetFaviconSizesSmallAndLarge());
285 base::Time time = base::Time::Now(); 280 base::Time time = base::Time::Now();
286 db.AddFaviconBitmap(id1, favicon, time, kSmallSize); 281 db.AddFaviconBitmap(id1, favicon, time, kSmallSize);
287 db.AddFaviconBitmap(id1, favicon, time, kLargeSize); 282 db.AddFaviconBitmap(id1, favicon, time, kLargeSize);
288 EXPECT_TRUE(0 < db.AddIconMapping(url, id1)); 283 EXPECT_TRUE(0 < db.AddIconMapping(url, id1));
289 284
290 FaviconID id2 = db.AddFavicon(url, FAVICON); 285 FaviconID id2 = db.AddFavicon(url, FAVICON, GetFaviconSizesSmallAndLarge());
291 EXPECT_NE(id1, id2); 286 EXPECT_NE(id1, id2);
292 db.AddFaviconBitmap(id2, favicon, time, kSmallSize); 287 db.AddFaviconBitmap(id2, favicon, time, kSmallSize);
293 EXPECT_TRUE(0 < db.AddIconMapping(url, id2)); 288 EXPECT_TRUE(0 < db.AddIconMapping(url, id2));
294 289
295 std::vector<IconMapping> icon_mappings; 290 std::vector<IconMapping> icon_mappings;
296 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mappings)); 291 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mappings));
297 ASSERT_EQ(2u, icon_mappings.size()); 292 ASSERT_EQ(2u, icon_mappings.size());
298 EXPECT_EQ(id1, icon_mappings[0].icon_id); 293 EXPECT_EQ(id1, icon_mappings[0].icon_id);
299 EXPECT_EQ(id2, icon_mappings[1].icon_id); 294 EXPECT_EQ(id2, icon_mappings[1].icon_id);
300 } 295 }
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
443 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 438 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
444 439
445 db.BeginTransaction(); 440 db.BeginTransaction();
446 441
447 EXPECT_TRUE(db.InitTemporaryTables()); 442 EXPECT_TRUE(db.InitTemporaryTables());
448 443
449 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 444 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
450 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 445 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
451 446
452 GURL unkept_url("http://google.com/favicon2.ico"); 447 GURL unkept_url("http://google.com/favicon2.ico");
453 FaviconID unkept_id = db.AddFavicon(unkept_url, FAVICON); 448 FaviconID unkept_id = db.AddFavicon(unkept_url, FAVICON,
449 GetFaviconSizesSmallAndLarge());
454 db.AddFaviconBitmap(unkept_id, favicon, base::Time::Now(), kSmallSize); 450 db.AddFaviconBitmap(unkept_id, favicon, base::Time::Now(), kSmallSize);
455 451
456 GURL kept_url("http://google.com/favicon.ico"); 452 GURL kept_url("http://google.com/favicon.ico");
457 FaviconID kept_id = db.AddFavicon(kept_url, FAVICON); 453 FaviconID kept_id = db.AddFavicon(kept_url, FAVICON,
454 GetFaviconSizesSmallAndLarge());
458 db.AddFaviconBitmap(kept_id, favicon, base::Time::Now(), kLargeSize); 455 db.AddFaviconBitmap(kept_id, favicon, base::Time::Now(), kLargeSize);
459 456
460 GURL page_url("http://google.com"); 457 GURL page_url("http://google.com");
461 db.AddIconMapping(page_url, unkept_id); 458 db.AddIconMapping(page_url, unkept_id);
462 db.AddIconMapping(page_url, kept_id); 459 db.AddIconMapping(page_url, kept_id);
463 460
464 FaviconID new_favicon_id = 461 FaviconID new_favicon_id =
465 db.CopyFaviconAndFaviconBitmapsToTemporaryTables(kept_id); 462 db.CopyFaviconAndFaviconBitmapsToTemporaryTables(kept_id);
466 EXPECT_NE(0, new_favicon_id); 463 EXPECT_NE(0, new_favicon_id);
467 EXPECT_TRUE(db.AddToTemporaryIconMappingTable(page_url, new_favicon_id)); 464 EXPECT_TRUE(db.AddToTemporaryIconMappingTable(page_url, new_favicon_id));
(...skipping 23 matching lines...) Expand all
491 db.BeginTransaction(); 488 db.BeginTransaction();
492 489
493 std::vector<unsigned char> data1(blob1, blob1 + sizeof(blob1)); 490 std::vector<unsigned char> data1(blob1, blob1 + sizeof(blob1));
494 scoped_refptr<base::RefCountedBytes> favicon1( 491 scoped_refptr<base::RefCountedBytes> favicon1(
495 new base::RefCountedBytes(data1)); 492 new base::RefCountedBytes(data1));
496 std::vector<unsigned char> data2(blob2, blob2 + sizeof(blob2)); 493 std::vector<unsigned char> data2(blob2, blob2 + sizeof(blob2));
497 scoped_refptr<base::RefCountedBytes> favicon2( 494 scoped_refptr<base::RefCountedBytes> favicon2(
498 new base::RefCountedBytes(data2)); 495 new base::RefCountedBytes(data2));
499 496
500 GURL url("http://google.com"); 497 GURL url("http://google.com");
501 FaviconID id = db.AddFavicon(url, FAVICON); 498 FaviconID id = db.AddFavicon(url, FAVICON, GetFaviconSizesSmallAndLarge());
502 base::Time last_updated = base::Time::Now(); 499 base::Time last_updated = base::Time::Now();
503 db.AddFaviconBitmap(id, favicon1, last_updated, kSmallSize); 500 db.AddFaviconBitmap(id, favicon1, last_updated, kSmallSize);
504 db.AddFaviconBitmap(id, favicon2, last_updated, kLargeSize); 501 db.AddFaviconBitmap(id, favicon2, last_updated, kLargeSize);
505 502
506 EXPECT_TRUE(db.GetFaviconBitmaps(id, NULL)); 503 EXPECT_TRUE(db.GetFaviconBitmaps(id, NULL));
507 504
508 EXPECT_TRUE(db.DeleteFavicon(id)); 505 EXPECT_TRUE(db.DeleteFavicon(id));
509 EXPECT_FALSE(db.GetFaviconBitmaps(id, NULL)); 506 EXPECT_FALSE(db.GetFaviconBitmaps(id, NULL));
510 } 507 }
511 508
512 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURLForReturnOrder) { 509 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURLForReturnOrder) {
513 ThumbnailDatabase db; 510 ThumbnailDatabase db;
514 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 511 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
515 db.BeginTransaction(); 512 db.BeginTransaction();
516 513
517 // Add a favicon 514 // Add a favicon
518 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 515 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
519 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 516 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
520 517
521 GURL url("http://google.com"); 518 GURL page_url("http://google.com");
522 FaviconID id = db.AddFavicon(url, FAVICON); 519 GURL icon_url("http://google.com/favicon.ico");
523 base::Time time = base::Time::Now(); 520 base::Time time = base::Time::Now();
524 db.AddFaviconBitmap(id, favicon, time, gfx::Size());
525 521
526 EXPECT_NE(0, db.AddIconMapping(url, id)); 522 FaviconID id = db.AddFavicon(icon_url, FAVICON, GetDefaultFaviconSizes(),
527 std::vector<IconMapping> icon_mapping; 523 favicon, time, gfx::Size());
528 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); 524 EXPECT_NE(0, db.AddIconMapping(page_url, id));
525 std::vector<IconMapping> icon_mappings;
526 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url, &icon_mappings));
529 527
530 EXPECT_EQ(url, icon_mapping.front().page_url); 528 EXPECT_EQ(page_url, icon_mappings.front().page_url);
531 EXPECT_EQ(id, icon_mapping.front().icon_id); 529 EXPECT_EQ(id, icon_mappings.front().icon_id);
532 EXPECT_EQ(FAVICON, icon_mapping.front().icon_type); 530 EXPECT_EQ(FAVICON, icon_mappings.front().icon_type);
533 531
534 // Add a touch icon 532 // Add a touch icon
535 std::vector<unsigned char> data2(blob2, blob2 + sizeof(blob2)); 533 std::vector<unsigned char> data2(blob2, blob2 + sizeof(blob2));
536 scoped_refptr<base::RefCountedBytes> favicon2 = 534 scoped_refptr<base::RefCountedBytes> favicon2 =
537 new base::RefCountedBytes(data); 535 new base::RefCountedBytes(data);
538 536
539 FaviconID id2 = db.AddFavicon(url, TOUCH_ICON); 537 FaviconID id2 = db.AddFavicon(icon_url, TOUCH_ICON,
540 db.AddFaviconBitmap(id2, favicon2, time, gfx::Size()); 538 GetDefaultFaviconSizes(), favicon2, time, gfx::Size());
541 EXPECT_NE(0, db.AddIconMapping(url, id2)); 539 EXPECT_NE(0, db.AddIconMapping(page_url, id2));
542 540
543 icon_mapping.clear(); 541 icon_mappings.clear();
544 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); 542 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url, &icon_mappings));
545 543
546 EXPECT_EQ(url, icon_mapping.front().page_url); 544 EXPECT_EQ(page_url, icon_mappings.front().page_url);
547 EXPECT_EQ(id2, icon_mapping.front().icon_id); 545 EXPECT_EQ(id2, icon_mappings.front().icon_id);
548 EXPECT_EQ(TOUCH_ICON, icon_mapping.front().icon_type); 546 EXPECT_EQ(TOUCH_ICON, icon_mappings.front().icon_type);
549 547
550 // Add a touch precomposed icon 548 // Add a touch precomposed icon
551 scoped_refptr<base::RefCountedBytes> favicon3 = 549 scoped_refptr<base::RefCountedBytes> favicon3 =
552 new base::RefCountedBytes(data2); 550 new base::RefCountedBytes(data2);
553 551
554 FaviconID id3 = db.AddFavicon(url, TOUCH_PRECOMPOSED_ICON); 552 FaviconID id3 = db.AddFavicon(icon_url, TOUCH_PRECOMPOSED_ICON,
555 db.AddFaviconBitmap(id3, favicon3, time, gfx::Size()); 553 GetDefaultFaviconSizes(), favicon3, time, gfx::Size());
556 EXPECT_NE(0, db.AddIconMapping(url, id3)); 554 EXPECT_NE(0, db.AddIconMapping(page_url, id3));
557 555
558 icon_mapping.clear(); 556 icon_mappings.clear();
559 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); 557 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url, &icon_mappings));
560 558
561 EXPECT_EQ(url, icon_mapping.front().page_url); 559 EXPECT_EQ(page_url, icon_mappings.front().page_url);
562 EXPECT_EQ(id3, icon_mapping.front().icon_id); 560 EXPECT_EQ(id3, icon_mappings.front().icon_id);
563 EXPECT_EQ(TOUCH_PRECOMPOSED_ICON, icon_mapping.front().icon_type); 561 EXPECT_EQ(TOUCH_PRECOMPOSED_ICON, icon_mappings.front().icon_type);
564 } 562 }
565 563
566 // Test result of GetIconMappingsForPageURL when an icon type is passed in. 564 // Test result of GetIconMappingsForPageURL when an icon type is passed in.
567 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURLWithIconType) { 565 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURLWithIconType) {
568 ThumbnailDatabase db; 566 ThumbnailDatabase db;
569 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 567 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
570 db.BeginTransaction(); 568 db.BeginTransaction();
571 569
572 GURL url("http://google.com"); 570 GURL url("http://google.com");
573 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 571 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
574 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 572 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
575 base::Time time = base::Time::Now(); 573 base::Time time = base::Time::Now();
576 574
577 FaviconID id1 = db.AddFavicon(url, FAVICON, GetDefaultFaviconSizes(), 575 FaviconID id1 = db.AddFavicon(url, FAVICON, GetDefaultFaviconSizes(),
578 favicon, time, gfx::Size()); 576 favicon, time, gfx::Size());
579 EXPECT_NE(0, db.AddIconMapping(url, id1)); 577 EXPECT_NE(0, db.AddIconMapping(url, id1));
580 578
581 FaviconID id2 = db.AddFavicon(url, TOUCH_ICON, GetDefaultFaviconSizes(), 579 FaviconID id2 = db.AddFavicon(url, TOUCH_ICON, GetDefaultFaviconSizes(),
582 favicon, time, gfx::Size()); 580 favicon, time, gfx::Size());
583 EXPECT_NE(0, db.AddIconMapping(url, id2)); 581 EXPECT_NE(0, db.AddIconMapping(url, id2));
584 582
583 FaviconID id3 = db.AddFavicon(url, TOUCH_ICON, GetDefaultFaviconSizes(),
584 favicon, time, gfx::Size());
585 EXPECT_NE(0, db.AddIconMapping(url, id3));
586
587 // Only the mappings favicons of type TOUCH_ICON should be returned.
585 std::vector<IconMapping> icon_mappings; 588 std::vector<IconMapping> icon_mappings;
586 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, FAVICON | TOUCH_ICON, 589 EXPECT_TRUE(db.GetIconMappingsForPageURL(
587 &icon_mappings)); 590 url,
591 FAVICON | TOUCH_ICON | TOUCH_PRECOMPOSED_ICON,
592 &icon_mappings));
593
588 EXPECT_EQ(2u, icon_mappings.size()); 594 EXPECT_EQ(2u, icon_mappings.size());
589 EXPECT_EQ(id2, icon_mappings[0].icon_id); 595 if (id2 == icon_mappings[0].icon_id) {
590 EXPECT_EQ(id1, icon_mappings[1].icon_id); 596 EXPECT_EQ(id3, icon_mappings[1].icon_id);
597 } else {
598 EXPECT_EQ(id3, icon_mappings[0].icon_id);
599 EXPECT_EQ(id2, icon_mappings[1].icon_id);
600 }
591 601
592 icon_mappings.clear(); 602 icon_mappings.clear();
593 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, TOUCH_ICON, &icon_mappings)); 603 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, TOUCH_ICON, &icon_mappings));
604 if (id2 == icon_mappings[0].icon_id) {
605 EXPECT_EQ(id3, icon_mappings[1].icon_id);
606 } else {
607 EXPECT_EQ(id3, icon_mappings[0].icon_id);
608 EXPECT_EQ(id2, icon_mappings[1].icon_id);
609 }
610
611 icon_mappings.clear();
612 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, FAVICON, &icon_mappings));
594 EXPECT_EQ(1u, icon_mappings.size()); 613 EXPECT_EQ(1u, icon_mappings.size());
595 EXPECT_EQ(id2, icon_mappings[0].icon_id); 614 EXPECT_EQ(id1, icon_mappings[0].icon_id);
596 } 615 }
597 616
598 TEST_F(ThumbnailDatabaseTest, HasMappingFor) { 617 TEST_F(ThumbnailDatabaseTest, HasMappingFor) {
599 ThumbnailDatabase db; 618 ThumbnailDatabase db;
600 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 619 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
601 db.BeginTransaction(); 620 db.BeginTransaction();
602 621
603 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 622 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
604 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 623 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
605 624
606 // Add a favicon which will have icon_mappings 625 // Add a favicon which will have icon_mappings
607 FaviconID id1 = db.AddFavicon(GURL("http://google.com"), FAVICON); 626 base::Time time = base::Time::Now();
627 FaviconID id1 = db.AddFavicon(GURL("http://google.com"), FAVICON,
628 GetDefaultFaviconSizes(), favicon, time, gfx::Size());
608 EXPECT_NE(id1, 0); 629 EXPECT_NE(id1, 0);
609 base::Time time = base::Time::Now();
610 db.AddFaviconBitmap(id1, favicon, time, gfx::Size());
611 630
612 // Add another type of favicon 631 // Add another type of favicon
613 FaviconID id2 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON); 632 time = base::Time::Now();
633 FaviconID id2 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON,
634 GetDefaultFaviconSizes(), favicon, time, gfx::Size());
614 EXPECT_NE(id2, 0); 635 EXPECT_NE(id2, 0);
615 time = base::Time::Now();
616 db.AddFaviconBitmap(id2, favicon, time, gfx::Size());
617 636
618 // Add 3rd favicon 637 // Add 3rd favicon
619 FaviconID id3 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON); 638 time = base::Time::Now();
639 FaviconID id3 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON,
640 GetDefaultFaviconSizes(), favicon, time, gfx::Size());
620 EXPECT_NE(id3, 0); 641 EXPECT_NE(id3, 0);
621 time = base::Time::Now();
622 db.AddFaviconBitmap(id3, favicon, time, gfx::Size());
623 642
624 // Add 2 icon mapping 643 // Add 2 icon mapping
625 GURL page_url("http://www.google.com"); 644 GURL page_url("http://www.google.com");
626 EXPECT_TRUE(db.AddIconMapping(page_url, id1)); 645 EXPECT_TRUE(db.AddIconMapping(page_url, id1));
627 EXPECT_TRUE(db.AddIconMapping(page_url, id2)); 646 EXPECT_TRUE(db.AddIconMapping(page_url, id2));
628 647
629 EXPECT_TRUE(db.HasMappingFor(id1)); 648 EXPECT_TRUE(db.HasMappingFor(id1));
630 EXPECT_TRUE(db.HasMappingFor(id2)); 649 EXPECT_TRUE(db.HasMappingFor(id2));
631 EXPECT_FALSE(db.HasMappingFor(id3)); 650 EXPECT_FALSE(db.HasMappingFor(id3));
632 651
633 // Remove all mappings 652 // Remove all mappings
634 db.DeleteIconMappings(page_url); 653 db.DeleteIconMappings(page_url);
635 EXPECT_FALSE(db.HasMappingFor(id1)); 654 EXPECT_FALSE(db.HasMappingFor(id1));
636 EXPECT_FALSE(db.HasMappingFor(id2)); 655 EXPECT_FALSE(db.HasMappingFor(id2));
637 EXPECT_FALSE(db.HasMappingFor(id3)); 656 EXPECT_FALSE(db.HasMappingFor(id3));
638 } 657 }
639 658
640 TEST_F(ThumbnailDatabaseTest, CloneIconMappings) { 659 TEST_F(ThumbnailDatabaseTest, CloneIconMappings) {
641 ThumbnailDatabase db; 660 ThumbnailDatabase db;
642 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 661 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
643 db.BeginTransaction(); 662 db.BeginTransaction();
644 663
645 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 664 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
646 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 665 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
647 666
648 // Add a favicon which will have icon_mappings 667 // Add a favicon which will have icon_mappings
649 FaviconID id1 = db.AddFavicon(GURL("http://google.com"), FAVICON); 668 FaviconID id1 = db.AddFavicon(GURL("http://google.com"), FAVICON,
669 GetDefaultFaviconSizes());
650 EXPECT_NE(0, id1); 670 EXPECT_NE(0, id1);
651 base::Time time = base::Time::Now(); 671 base::Time time = base::Time::Now();
652 db.AddFaviconBitmap(id1, favicon, time, gfx::Size()); 672 db.AddFaviconBitmap(id1, favicon, time, gfx::Size());
653 673
654 // Add another type of favicon 674 // Add another type of favicon
655 FaviconID id2 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON); 675 FaviconID id2 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON,
676 GetDefaultFaviconSizes());
656 EXPECT_NE(0, id2); 677 EXPECT_NE(0, id2);
657 time = base::Time::Now(); 678 time = base::Time::Now();
658 db.AddFaviconBitmap(id2, favicon, time, gfx::Size()); 679 db.AddFaviconBitmap(id2, favicon, time, gfx::Size());
659 680
660 // Add 3rd favicon 681 // Add 3rd favicon
661 FaviconID id3 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON); 682 FaviconID id3 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON,
683 GetDefaultFaviconSizes());
662 EXPECT_NE(0, id3); 684 EXPECT_NE(0, id3);
663 time = base::Time::Now(); 685 time = base::Time::Now();
664 db.AddFaviconBitmap(id3, favicon, time, gfx::Size()); 686 db.AddFaviconBitmap(id3, favicon, time, gfx::Size());
665 687
666 GURL page1_url("http://page1.com"); 688 GURL page1_url("http://page1.com");
667 EXPECT_TRUE(db.AddIconMapping(page1_url, id1)); 689 EXPECT_TRUE(db.AddIconMapping(page1_url, id1));
668 EXPECT_TRUE(db.AddIconMapping(page1_url, id2)); 690 EXPECT_TRUE(db.AddIconMapping(page1_url, id2));
669 691
670 GURL page2_url("http://page2.com"); 692 GURL page2_url("http://page2.com");
671 EXPECT_TRUE(db.AddIconMapping(page2_url, id3)); 693 EXPECT_TRUE(db.AddIconMapping(page2_url, id3));
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
753 775
754 TEST_F(ThumbnailDatabaseTest, IconMappingEnumerator) { 776 TEST_F(ThumbnailDatabaseTest, IconMappingEnumerator) {
755 ThumbnailDatabase db; 777 ThumbnailDatabase db;
756 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 778 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
757 db.BeginTransaction(); 779 db.BeginTransaction();
758 780
759 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 781 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
760 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 782 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
761 783
762 GURL url("http://google.com"); 784 GURL url("http://google.com");
763 FaviconID touch_icon_id1 = db.AddFavicon(url, TOUCH_ICON); 785 GURL icon_url1("http://google.com/favicon.ico");
786 FaviconID touch_icon_id1 = db.AddFavicon(icon_url1, TOUCH_ICON,
787 GetDefaultFaviconSizes(), favicon, base::Time::Now(), gfx::Size());
764 ASSERT_NE(0, touch_icon_id1); 788 ASSERT_NE(0, touch_icon_id1);
765 ASSERT_TRUE(db.AddFaviconBitmap(touch_icon_id1, favicon, base::Time::Now(),
766 gfx::Size()));
767 IconMappingID touch_mapping_id1 = db.AddIconMapping(url, touch_icon_id1); 789 IconMappingID touch_mapping_id1 = db.AddIconMapping(url, touch_icon_id1);
768 ASSERT_NE(0, touch_mapping_id1); 790 ASSERT_NE(0, touch_mapping_id1);
769 791
770 FaviconID favicon_id1 = db.AddFavicon(url, FAVICON); 792 FaviconID favicon_id1 = db.AddFavicon(icon_url1, FAVICON,
793 GetDefaultFaviconSizes(), favicon, base::Time::Now(), gfx::Size());
771 ASSERT_NE(0, favicon_id1); 794 ASSERT_NE(0, favicon_id1);
772 ASSERT_TRUE(db.AddFaviconBitmap(favicon_id1, favicon, base::Time::Now(),
773 gfx::Size()));
774 IconMappingID favicon_mapping_id1 = db.AddIconMapping(url, favicon_id1); 795 IconMappingID favicon_mapping_id1 = db.AddIconMapping(url, favicon_id1);
775 ASSERT_NE(0, favicon_mapping_id1); 796 ASSERT_NE(0, favicon_mapping_id1);
776 797
777 GURL url2("http://chromium.org"); 798 GURL url2("http://chromium.org");
778 FaviconID favicon_id2 = db.AddFavicon(url2, FAVICON); 799 GURL icon_url2("http://chromium.org/favicon.ico");
800 FaviconID favicon_id2 = db.AddFavicon(icon_url2, FAVICON,
801 GetDefaultFaviconSizes(), favicon, base::Time::Now(), gfx::Size());
779 ASSERT_NE(0, favicon_id2); 802 ASSERT_NE(0, favicon_id2);
780 ASSERT_TRUE(db.AddFaviconBitmap(favicon_id2, favicon, base::Time::Now(),
781 gfx::Size()));
782 IconMappingID favicon_mapping_id2 = db.AddIconMapping(url2, favicon_id2); 803 IconMappingID favicon_mapping_id2 = db.AddIconMapping(url2, favicon_id2);
783 ASSERT_NE(0, favicon_mapping_id2); 804 ASSERT_NE(0, favicon_mapping_id2);
784 805
785 IconMapping icon_mapping; 806 IconMapping icon_mapping;
786 ThumbnailDatabase::IconMappingEnumerator enumerator1; 807 ThumbnailDatabase::IconMappingEnumerator enumerator1;
787 ASSERT_TRUE(db.InitIconMappingEnumerator(FAVICON, &enumerator1)); 808 ASSERT_TRUE(db.InitIconMappingEnumerator(FAVICON, &enumerator1));
788 // There are 2 favicon mappings. 809 // There are 2 favicon mappings.
789 bool has_favicon_mapping1 = false; 810 bool has_favicon_mapping1 = false;
790 bool has_favicon_mapping2 = false; 811 bool has_favicon_mapping2 = false;
791 int mapping_count = 0; 812 int mapping_count = 0;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
846 } 867 }
847 868
848 std::string sizes_as_string; 869 std::string sizes_as_string;
849 ThumbnailDatabase::FaviconSizesToDatabaseString(sizes_valid, 870 ThumbnailDatabase::FaviconSizesToDatabaseString(sizes_valid,
850 &sizes_as_string); 871 &sizes_as_string);
851 EXPECT_TRUE(sizes_as_string == "10 15 20 25" || 872 EXPECT_TRUE(sizes_as_string == "10 15 20 25" ||
852 sizes_as_string == "20 25 10 15"); 873 sizes_as_string == "20 25 10 15");
853 } 874 }
854 875
855 } // namespace history 876 } // namespace history
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698