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

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, 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 <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 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 EXPECT_EQ(FAVICON, icon_type_out); 144 EXPECT_EQ(FAVICON, icon_type_out);
145 EXPECT_STREQ(kSizesSmallAndLarge.c_str(), sizes_out.c_str()); 145 EXPECT_STREQ(kSizesSmallAndLarge.c_str(), sizes_out.c_str());
146 146
147 std::vector<FaviconBitmap> favicon_bitmaps_out; 147 std::vector<FaviconBitmap> favicon_bitmaps_out;
148 EXPECT_TRUE(db.GetFaviconBitmaps(icon_id, &favicon_bitmaps_out)); 148 EXPECT_TRUE(db.GetFaviconBitmaps(icon_id, &favicon_bitmaps_out));
149 EXPECT_EQ(2u, favicon_bitmaps_out.size()); 149 EXPECT_EQ(2u, favicon_bitmaps_out.size());
150 150
151 FaviconBitmap favicon_bitmap1 = favicon_bitmaps_out[0]; 151 FaviconBitmap favicon_bitmap1 = favicon_bitmaps_out[0];
152 FaviconBitmap favicon_bitmap2 = favicon_bitmaps_out[1]; 152 FaviconBitmap favicon_bitmap2 = favicon_bitmaps_out[1];
153 153
154 // Bitmaps do not need to be in particular order. 154 // Favicon bitmaps do not need to be in particular order.
155 if (favicon_bitmap1.bitmap_id == bitmap2_id) { 155 if (favicon_bitmap1.bitmap_id == bitmap2_id) {
156 FaviconBitmap tmp_favicon_bitmap = favicon_bitmap1; 156 FaviconBitmap tmp_favicon_bitmap = favicon_bitmap1;
157 favicon_bitmap1 = favicon_bitmap2; 157 favicon_bitmap1 = favicon_bitmap2;
158 favicon_bitmap2 = tmp_favicon_bitmap; 158 favicon_bitmap2 = tmp_favicon_bitmap;
159 } 159 }
160 160
161 EXPECT_EQ(bitmap1_id, favicon_bitmap1.bitmap_id); 161 EXPECT_EQ(bitmap1_id, favicon_bitmap1.bitmap_id);
162 EXPECT_EQ(icon_id, favicon_bitmap1.icon_id); 162 EXPECT_EQ(icon_id, favicon_bitmap1.icon_id);
163 EXPECT_EQ(time.ToTimeT(), favicon_bitmap1.last_updated.ToTimeT()); 163 EXPECT_EQ(time.ToTimeT(), favicon_bitmap1.last_updated.ToTimeT());
164 EXPECT_EQ(data.size(), favicon_bitmap1.bitmap_data->size()); 164 EXPECT_EQ(data.size(), favicon_bitmap1.bitmap_data->size());
(...skipping 20 matching lines...) Expand all
185 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 185 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
186 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 186 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
187 187
188 GURL url("http://google.com"); 188 GURL url("http://google.com");
189 FaviconID id = db.AddFavicon(url, TOUCH_ICON); 189 FaviconID id = db.AddFavicon(url, TOUCH_ICON);
190 EXPECT_NE(0, id); 190 EXPECT_NE(0, id);
191 base::Time time = base::Time::Now(); 191 base::Time time = base::Time::Now();
192 db.AddFaviconBitmap(id, favicon, time, gfx::Size()); 192 db.AddFaviconBitmap(id, favicon, time, gfx::Size());
193 193
194 EXPECT_NE(0, db.AddIconMapping(url, id)); 194 EXPECT_NE(0, db.AddIconMapping(url, id));
195 std::vector<IconMapping> icon_mapping; 195 std::vector<IconMapping> icon_mappings;
196 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); 196 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mappings));
197 EXPECT_EQ(1u, icon_mapping.size()); 197 EXPECT_EQ(1u, icon_mappings.size());
198 EXPECT_EQ(url, icon_mapping.front().page_url); 198 EXPECT_EQ(url, icon_mappings.front().page_url);
199 EXPECT_EQ(id, icon_mapping.front().icon_id); 199 EXPECT_EQ(id, icon_mappings.front().icon_id);
200 } 200 }
201 201
202 TEST_F(ThumbnailDatabaseTest, UpdateIconMapping) { 202 TEST_F(ThumbnailDatabaseTest, UpdateIconMapping) {
203 ThumbnailDatabase db; 203 ThumbnailDatabase db;
204 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 204 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
205 db.BeginTransaction(); 205 db.BeginTransaction();
206 206
207 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 207 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
208 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 208 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
209 209
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 247
248 FaviconID id2 = db.AddFavicon(url, FAVICON); 248 FaviconID id2 = db.AddFavicon(url, FAVICON);
249 db.AddFaviconBitmap(id2, favicon, time, gfx::Size()); 249 db.AddFaviconBitmap(id2, favicon, time, gfx::Size());
250 EXPECT_TRUE(0 < db.AddIconMapping(url, id2)); 250 EXPECT_TRUE(0 < db.AddIconMapping(url, id2));
251 ASSERT_NE(id, id2); 251 ASSERT_NE(id, id2);
252 252
253 std::vector<IconMapping> icon_mapping; 253 std::vector<IconMapping> icon_mapping;
254 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); 254 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping));
255 ASSERT_EQ(2u, icon_mapping.size()); 255 ASSERT_EQ(2u, icon_mapping.size());
256 EXPECT_EQ(icon_mapping.front().icon_type, TOUCH_ICON); 256 EXPECT_EQ(icon_mapping.front().icon_type, TOUCH_ICON);
257 EXPECT_TRUE(db.GetIconMappingForPageURL(url, FAVICON, NULL)); 257 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, FAVICON, NULL));
258 258
259 db.DeleteIconMappings(url); 259 db.DeleteIconMappings(url);
260 260
261 EXPECT_FALSE(db.GetIconMappingsForPageURL(url, NULL)); 261 EXPECT_FALSE(db.GetIconMappingsForPageURL(url, NULL));
262 EXPECT_FALSE(db.GetIconMappingForPageURL(url, FAVICON, NULL)); 262 EXPECT_FALSE(db.GetIconMappingsForPageURL(url, FAVICON, NULL));
263 } 263 }
264 264
265 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURL) { 265 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURL) {
266 ThumbnailDatabase db; 266 ThumbnailDatabase db;
267 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 267 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
268 db.BeginTransaction(); 268 db.BeginTransaction();
269 269
270 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 270 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
271 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 271 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
272 272
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
453 db.AddIconMapping(page_url, kept_id); 453 db.AddIconMapping(page_url, kept_id);
454 454
455 FaviconID new_favicon_id = 455 FaviconID new_favicon_id =
456 db.CopyFaviconAndFaviconBitmapsToTemporaryTables(kept_id); 456 db.CopyFaviconAndFaviconBitmapsToTemporaryTables(kept_id);
457 EXPECT_NE(0, new_favicon_id); 457 EXPECT_NE(0, new_favicon_id);
458 EXPECT_TRUE(db.AddToTemporaryIconMappingTable(page_url, new_favicon_id)); 458 EXPECT_TRUE(db.AddToTemporaryIconMappingTable(page_url, new_favicon_id));
459 459
460 EXPECT_TRUE(db.CommitTemporaryTables()); 460 EXPECT_TRUE(db.CommitTemporaryTables());
461 461
462 // Only copied data should be left. 462 // Only copied data should be left.
463 IconMapping icon_mapping; 463 std::vector<IconMapping> icon_mappings;
464 EXPECT_TRUE(db.GetIconMappingForPageURL(page_url, FAVICON, &icon_mapping)); 464 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url, FAVICON, &icon_mappings));
465 EXPECT_EQ(new_favicon_id, icon_mapping.icon_id); 465 EXPECT_EQ(1u, icon_mappings.size());
466 EXPECT_EQ(page_url, icon_mapping.page_url); 466 EXPECT_EQ(new_favicon_id, icon_mappings[0].icon_id);
467 EXPECT_EQ(page_url, icon_mappings[0].page_url);
467 468
468 std::vector<FaviconBitmap> favicon_bitmaps; 469 std::vector<FaviconBitmap> favicon_bitmaps;
469 EXPECT_TRUE(db.GetFaviconBitmaps(icon_mapping.icon_id, &favicon_bitmaps)); 470 EXPECT_TRUE(db.GetFaviconBitmaps(icon_mappings[0].icon_id, &favicon_bitmaps));
470 EXPECT_EQ(1u, favicon_bitmaps.size()); 471 EXPECT_EQ(1u, favicon_bitmaps.size());
471 EXPECT_EQ(kLargeSize, favicon_bitmaps[0].pixel_size); 472 EXPECT_EQ(kLargeSize, favicon_bitmaps[0].pixel_size);
472 473
473 EXPECT_FALSE(db.GetFaviconIDForFaviconURL(unkept_url, false, NULL)); 474 EXPECT_FALSE(db.GetFaviconIDForFaviconURL(unkept_url, false));
474 } 475 }
475 476
476 // Tests that deleting a favicon deletes the favicon row and favicon bitmap 477 // Tests that deleting a favicon deletes the favicon row and favicon bitmap
477 // rows from the database. 478 // rows from the database.
478 TEST_F(ThumbnailDatabaseTest, DeleteFavicon) { 479 TEST_F(ThumbnailDatabaseTest, DeleteFavicon) {
479 ThumbnailDatabase db; 480 ThumbnailDatabase db;
480 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 481 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
481 db.BeginTransaction(); 482 db.BeginTransaction();
482 483
483 std::vector<unsigned char> data1(blob1, blob1 + sizeof(blob1)); 484 std::vector<unsigned char> data1(blob1, blob1 + sizeof(blob1));
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
546 EXPECT_NE(0, db.AddIconMapping(url, id3)); 547 EXPECT_NE(0, db.AddIconMapping(url, id3));
547 548
548 icon_mapping.clear(); 549 icon_mapping.clear();
549 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); 550 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping));
550 551
551 EXPECT_EQ(url, icon_mapping.front().page_url); 552 EXPECT_EQ(url, icon_mapping.front().page_url);
552 EXPECT_EQ(id3, icon_mapping.front().icon_id); 553 EXPECT_EQ(id3, icon_mapping.front().icon_id);
553 EXPECT_EQ(TOUCH_PRECOMPOSED_ICON, icon_mapping.front().icon_type); 554 EXPECT_EQ(TOUCH_PRECOMPOSED_ICON, icon_mapping.front().icon_type);
554 } 555 }
555 556
557 // Test result of GetIconMappingsForPageURL when an icon type is passed in.
558 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURLWithIconType) {
559 ThumbnailDatabase db;
560 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
561 db.BeginTransaction();
562
563 GURL url("http://google.com");
564 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
565 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
566 base::Time time = base::Time::Now();
567
568 FaviconID id1 = db.AddFavicon(url, FAVICON, "0 0", favicon, time,
569 gfx::Size());
570 EXPECT_NE(0, db.AddIconMapping(url, id1));
571
572 FaviconID id2 = db.AddFavicon(url, TOUCH_ICON, "0 0", favicon, time,
573 gfx::Size());
574 EXPECT_NE(0, db.AddIconMapping(url, id2));
575
576 std::vector<IconMapping> icon_mappings;
577 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, FAVICON | TOUCH_ICON,
578 &icon_mappings));
579 EXPECT_EQ(2u, icon_mappings.size());
580 EXPECT_EQ(id2, icon_mappings[0].icon_id);
581 EXPECT_EQ(id1, icon_mappings[1].icon_id);
582
583 icon_mappings.clear();
584 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, TOUCH_ICON, &icon_mappings));
585 EXPECT_EQ(1u, icon_mappings.size());
586 EXPECT_EQ(id2, icon_mappings[0].icon_id);
587 }
588
556 TEST_F(ThumbnailDatabaseTest, HasMappingFor) { 589 TEST_F(ThumbnailDatabaseTest, HasMappingFor) {
557 ThumbnailDatabase db; 590 ThumbnailDatabase db;
558 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 591 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
559 db.BeginTransaction(); 592 db.BeginTransaction();
560 593
561 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 594 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
562 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 595 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
563 596
564 // Add a favicon which will have icon_mappings 597 // Add a favicon which will have icon_mappings
565 FaviconID id1 = db.AddFavicon(GURL("http://google.com"), FAVICON); 598 FaviconID id1 = db.AddFavicon(GURL("http://google.com"), FAVICON);
(...skipping 22 matching lines...) Expand all
588 EXPECT_TRUE(db.HasMappingFor(id2)); 621 EXPECT_TRUE(db.HasMappingFor(id2));
589 EXPECT_FALSE(db.HasMappingFor(id3)); 622 EXPECT_FALSE(db.HasMappingFor(id3));
590 623
591 // Remove all mappings 624 // Remove all mappings
592 db.DeleteIconMappings(page_url); 625 db.DeleteIconMappings(page_url);
593 EXPECT_FALSE(db.HasMappingFor(id1)); 626 EXPECT_FALSE(db.HasMappingFor(id1));
594 EXPECT_FALSE(db.HasMappingFor(id2)); 627 EXPECT_FALSE(db.HasMappingFor(id2));
595 EXPECT_FALSE(db.HasMappingFor(id3)); 628 EXPECT_FALSE(db.HasMappingFor(id3));
596 } 629 }
597 630
598 TEST_F(ThumbnailDatabaseTest, CloneIconMapping) { 631 TEST_F(ThumbnailDatabaseTest, CloneIconMappings) {
599 ThumbnailDatabase db; 632 ThumbnailDatabase db;
600 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 633 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
601 db.BeginTransaction(); 634 db.BeginTransaction();
602 635
603 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 636 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
604 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 637 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
605 638
606 // Add a favicon which will have icon_mappings 639 // Add a favicon which will have icon_mappings
607 FaviconID id1 = db.AddFavicon(GURL("http://google.com"), FAVICON); 640 FaviconID id1 = db.AddFavicon(GURL("http://google.com"), FAVICON);
608 EXPECT_NE(0, id1); 641 EXPECT_NE(0, id1);
(...skipping 17 matching lines...) Expand all
626 EXPECT_TRUE(db.AddIconMapping(page1_url, id2)); 659 EXPECT_TRUE(db.AddIconMapping(page1_url, id2));
627 660
628 GURL page2_url("http://page2.com"); 661 GURL page2_url("http://page2.com");
629 EXPECT_TRUE(db.AddIconMapping(page2_url, id3)); 662 EXPECT_TRUE(db.AddIconMapping(page2_url, id3));
630 663
631 // Test we do nothing with existing mappings. 664 // Test we do nothing with existing mappings.
632 std::vector<IconMapping> icon_mapping; 665 std::vector<IconMapping> icon_mapping;
633 EXPECT_TRUE(db.GetIconMappingsForPageURL(page2_url, &icon_mapping)); 666 EXPECT_TRUE(db.GetIconMappingsForPageURL(page2_url, &icon_mapping));
634 ASSERT_EQ(1U, icon_mapping.size()); 667 ASSERT_EQ(1U, icon_mapping.size());
635 668
636 EXPECT_TRUE(db.CloneIconMapping(page1_url, page2_url)); 669 EXPECT_TRUE(db.CloneIconMappings(page1_url, page2_url));
637 670
638 icon_mapping.clear(); 671 icon_mapping.clear();
639 EXPECT_TRUE(db.GetIconMappingsForPageURL(page2_url, &icon_mapping)); 672 EXPECT_TRUE(db.GetIconMappingsForPageURL(page2_url, &icon_mapping));
640 ASSERT_EQ(1U, icon_mapping.size()); 673 ASSERT_EQ(1U, icon_mapping.size());
641 EXPECT_EQ(page2_url, icon_mapping[0].page_url); 674 EXPECT_EQ(page2_url, icon_mapping[0].page_url);
642 EXPECT_EQ(id3, icon_mapping[0].icon_id); 675 EXPECT_EQ(id3, icon_mapping[0].icon_id);
643 676
644 // Test we clone if the new page has no mappings. 677 // Test we clone if the new page has no mappings.
645 GURL page3_url("http://page3.com"); 678 GURL page3_url("http://page3.com");
646 EXPECT_TRUE(db.CloneIconMapping(page1_url, page3_url)); 679 EXPECT_TRUE(db.CloneIconMappings(page1_url, page3_url));
647 680
648 icon_mapping.clear(); 681 icon_mapping.clear();
649 EXPECT_TRUE(db.GetIconMappingsForPageURL(page3_url, &icon_mapping)); 682 EXPECT_TRUE(db.GetIconMappingsForPageURL(page3_url, &icon_mapping));
650 683
651 ASSERT_EQ(2U, icon_mapping.size()); 684 ASSERT_EQ(2U, icon_mapping.size());
652 if (icon_mapping[0].icon_id == id2) 685 if (icon_mapping[0].icon_id == id2)
653 std::swap(icon_mapping[0], icon_mapping[1]); 686 std::swap(icon_mapping[0], icon_mapping[1]);
654 EXPECT_EQ(page3_url, icon_mapping[0].page_url); 687 EXPECT_EQ(page3_url, icon_mapping[0].page_url);
655 EXPECT_EQ(id1, icon_mapping[0].icon_id); 688 EXPECT_EQ(id1, icon_mapping[0].icon_id);
656 EXPECT_EQ(page3_url, icon_mapping[1].page_url); 689 EXPECT_EQ(page3_url, icon_mapping[1].page_url);
(...skipping 14 matching lines...) Expand all
671 704
672 // Migration should be done. 705 // Migration should be done.
673 // Test one icon_mapping. 706 // Test one icon_mapping.
674 GURL page_url1 = GURL("http://google.com/"); 707 GURL page_url1 = GURL("http://google.com/");
675 std::vector<IconMapping> icon_mappings; 708 std::vector<IconMapping> icon_mappings;
676 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url1, &icon_mappings)); 709 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url1, &icon_mappings));
677 ASSERT_EQ(1u, icon_mappings.size()); 710 ASSERT_EQ(1u, icon_mappings.size());
678 EXPECT_EQ(FAVICON, icon_mappings[0].icon_type); 711 EXPECT_EQ(FAVICON, icon_mappings[0].icon_type);
679 EXPECT_EQ(page_url1, icon_mappings[0].page_url); 712 EXPECT_EQ(page_url1, icon_mappings[0].page_url);
680 EXPECT_EQ(1, icon_mappings[0].icon_id); 713 EXPECT_EQ(1, icon_mappings[0].icon_id);
681 base::Time time; 714 EXPECT_EQ(icon1, icon_mappings[0].icon_url);
682 scoped_refptr<base::RefCountedMemory> out_data;
683 GURL out_icon_url;
684 ASSERT_TRUE(db.GetFavicon(
685 icon_mappings[0].icon_id, &time, &out_data, &out_icon_url, NULL));
686 EXPECT_EQ(icon1, out_icon_url);
687 715
688 // Test a page which has the same icon. 716 // Test a page which has the same icon.
689 GURL page_url3 = GURL("http://www.google.com/"); 717 GURL page_url3 = GURL("http://www.google.com/");
690 icon_mappings.clear(); 718 icon_mappings.clear();
691 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url3, &icon_mappings)); 719 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url3, &icon_mappings));
692 ASSERT_EQ(1u, icon_mappings.size()); 720 ASSERT_EQ(1u, icon_mappings.size());
693 EXPECT_EQ(FAVICON, icon_mappings[0].icon_type); 721 EXPECT_EQ(FAVICON, icon_mappings[0].icon_type);
694 EXPECT_EQ(page_url3, icon_mappings[0].page_url); 722 EXPECT_EQ(page_url3, icon_mappings[0].page_url);
695 EXPECT_EQ(1, icon_mappings[0].icon_id); 723 EXPECT_EQ(1, icon_mappings[0].icon_id);
724 EXPECT_EQ(icon1, icon_mappings[0].icon_url);
696 725
697 // Test a icon_mapping with different IconID. 726 // Test a icon_mapping with different IconID.
698 GURL page_url2 = GURL("http://yahoo.com/"); 727 GURL page_url2 = GURL("http://yahoo.com/");
699 icon_mappings.clear(); 728 icon_mappings.clear();
700 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url2, &icon_mappings)); 729 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url2, &icon_mappings));
701 ASSERT_EQ(1u, icon_mappings.size()); 730 ASSERT_EQ(1u, icon_mappings.size());
702 EXPECT_EQ(FAVICON, icon_mappings[0].icon_type); 731 EXPECT_EQ(FAVICON, icon_mappings[0].icon_type);
703 EXPECT_EQ(page_url2, icon_mappings[0].page_url); 732 EXPECT_EQ(page_url2, icon_mappings[0].page_url);
704 EXPECT_EQ(2, icon_mappings[0].icon_id); 733 EXPECT_EQ(2, icon_mappings[0].icon_id);
705 ASSERT_TRUE(db.GetFavicon( 734 EXPECT_EQ(icon2, icon_mappings[0].icon_url);
706 icon_mappings[0].icon_id, &time, &out_data, &out_icon_url, NULL));
707 EXPECT_EQ(icon2, out_icon_url);
708 735
709 // Test a page without icon 736 // Test a page without icon
710 GURL page_url4 = GURL("http://www.google.com/blank.html"); 737 GURL page_url4 = GURL("http://www.google.com/blank.html");
711 EXPECT_FALSE(db.GetIconMappingsForPageURL(page_url4, NULL)); 738 EXPECT_FALSE(db.GetIconMappingsForPageURL(page_url4, NULL));
712 } 739 }
713 740
714 TEST_F(ThumbnailDatabaseTest, IconMappingEnumerator) { 741 TEST_F(ThumbnailDatabaseTest, IconMappingEnumerator) {
715 ThumbnailDatabase db; 742 ThumbnailDatabase db;
716 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); 743 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL));
717 db.BeginTransaction(); 744 db.BeginTransaction();
718 745
719 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 746 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
720 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 747 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
721 748
722 GURL url("http://google.com"); 749 GURL url("http://google.com");
723 FaviconID touch_icon_id1 = db.AddFavicon(url, TOUCH_ICON); 750 GURL icon_url1("http://google.com/favicon.ico");
751 FaviconID touch_icon_id1 = db.AddFavicon(icon_url1, TOUCH_ICON,
752 kSizesSmallAndLarge, favicon, base::Time::Now(), kSmallSize);
724 ASSERT_NE(0, touch_icon_id1); 753 ASSERT_NE(0, touch_icon_id1);
725 ASSERT_TRUE(db.AddFaviconBitmap(touch_icon_id1, favicon, base::Time::Now(),
726 gfx::Size()));
727 IconMappingID touch_mapping_id1 = db.AddIconMapping(url, touch_icon_id1); 754 IconMappingID touch_mapping_id1 = db.AddIconMapping(url, touch_icon_id1);
728 ASSERT_NE(0, touch_mapping_id1); 755 ASSERT_NE(0, touch_mapping_id1);
729 756
730 FaviconID favicon_id1 = db.AddFavicon(url, FAVICON); 757 FaviconID favicon_id1 = db.AddFavicon(icon_url1, FAVICON, kSizesSmallAndLarge,
758 favicon, base::Time::Now(), kSmallSize);
731 ASSERT_NE(0, favicon_id1); 759 ASSERT_NE(0, favicon_id1);
732 ASSERT_TRUE(db.AddFaviconBitmap(favicon_id1, favicon, base::Time::Now(),
733 gfx::Size()));
734 IconMappingID favicon_mapping_id1 = db.AddIconMapping(url, favicon_id1); 760 IconMappingID favicon_mapping_id1 = db.AddIconMapping(url, favicon_id1);
735 ASSERT_NE(0, favicon_mapping_id1); 761 ASSERT_NE(0, favicon_mapping_id1);
736 762
737 GURL url2("http://chromium.org"); 763 GURL url2("http://chromium.org");
738 FaviconID favicon_id2 = db.AddFavicon(url2, FAVICON); 764 GURL icon_url2("http://chromium.org/favicon.ico");
765 FaviconID favicon_id2 = db.AddFavicon(icon_url2, FAVICON, kSizesSmallAndLarge,
766 favicon, base::Time::Now(), kSmallSize);
739 ASSERT_NE(0, favicon_id2); 767 ASSERT_NE(0, favicon_id2);
740 ASSERT_TRUE(db.AddFaviconBitmap(favicon_id2, favicon, base::Time::Now(),
741 gfx::Size()));
742 IconMappingID favicon_mapping_id2 = db.AddIconMapping(url2, favicon_id2); 768 IconMappingID favicon_mapping_id2 = db.AddIconMapping(url2, favicon_id2);
743 ASSERT_NE(0, favicon_mapping_id2); 769 ASSERT_NE(0, favicon_mapping_id2);
744 770
745 IconMapping icon_mapping; 771 IconMapping icon_mapping;
746 ThumbnailDatabase::IconMappingEnumerator enumerator1; 772 ThumbnailDatabase::IconMappingEnumerator enumerator1;
747 ASSERT_TRUE(db.InitIconMappingEnumerator(FAVICON, &enumerator1)); 773 ASSERT_TRUE(db.InitIconMappingEnumerator(FAVICON, &enumerator1));
748 // There are 2 favicon mappings. 774 // There are 2 favicon mappings.
749 bool has_favicon_mapping1 = false; 775 bool has_favicon_mapping1 = false;
750 bool has_favicon_mapping2 = false; 776 bool has_favicon_mapping2 = false;
751 int mapping_count = 0; 777 int mapping_count = 0;
752 while (enumerator1.GetNextIconMapping(&icon_mapping)) { 778 while (enumerator1.GetNextIconMapping(&icon_mapping)) {
753 mapping_count++; 779 mapping_count++;
754 if (favicon_mapping_id1 == icon_mapping.mapping_id) { 780 if (favicon_mapping_id1 == icon_mapping.mapping_id) {
755 has_favicon_mapping1 = true; 781 has_favicon_mapping1 = true;
756 EXPECT_EQ(url, icon_mapping.page_url); 782 EXPECT_EQ(url, icon_mapping.page_url);
757 EXPECT_EQ(favicon_id1, icon_mapping.icon_id); 783 EXPECT_EQ(favicon_id1, icon_mapping.icon_id);
784 EXPECT_EQ(icon_url1, icon_mapping.icon_url);
758 EXPECT_EQ(FAVICON, icon_mapping.icon_type); 785 EXPECT_EQ(FAVICON, icon_mapping.icon_type);
759 } else if (favicon_mapping_id2 == icon_mapping.mapping_id) { 786 } else if (favicon_mapping_id2 == icon_mapping.mapping_id) {
760 has_favicon_mapping2 = true; 787 has_favicon_mapping2 = true;
761 EXPECT_EQ(url2, icon_mapping.page_url); 788 EXPECT_EQ(url2, icon_mapping.page_url);
762 EXPECT_EQ(favicon_id2, icon_mapping.icon_id); 789 EXPECT_EQ(favicon_id2, icon_mapping.icon_id);
790 EXPECT_EQ(icon_url2, icon_mapping.icon_url);
763 EXPECT_EQ(FAVICON, icon_mapping.icon_type); 791 EXPECT_EQ(FAVICON, icon_mapping.icon_type);
764 } 792 }
765 } 793 }
766 EXPECT_EQ(2, mapping_count); 794 EXPECT_EQ(2, mapping_count);
767 EXPECT_TRUE(has_favicon_mapping1); 795 EXPECT_TRUE(has_favicon_mapping1);
768 EXPECT_TRUE(has_favicon_mapping2); 796 EXPECT_TRUE(has_favicon_mapping2);
769 797
770 ThumbnailDatabase::IconMappingEnumerator enumerator2; 798 ThumbnailDatabase::IconMappingEnumerator enumerator2;
771 ASSERT_TRUE(db.InitIconMappingEnumerator(TOUCH_ICON, &enumerator2)); 799 ASSERT_TRUE(db.InitIconMappingEnumerator(TOUCH_ICON, &enumerator2));
772 ASSERT_TRUE(enumerator2.GetNextIconMapping(&icon_mapping)); 800 ASSERT_TRUE(enumerator2.GetNextIconMapping(&icon_mapping));
773 EXPECT_EQ(touch_mapping_id1, icon_mapping.mapping_id); 801 EXPECT_EQ(touch_mapping_id1, icon_mapping.mapping_id);
774 EXPECT_EQ(url, icon_mapping.page_url); 802 EXPECT_EQ(url, icon_mapping.page_url);
775 EXPECT_EQ(touch_icon_id1, icon_mapping.icon_id); 803 EXPECT_EQ(touch_icon_id1, icon_mapping.icon_id);
804 EXPECT_EQ(icon_url1, icon_mapping.icon_url);
776 EXPECT_EQ(TOUCH_ICON, icon_mapping.icon_type); 805 EXPECT_EQ(TOUCH_ICON, icon_mapping.icon_type);
777 806
778 EXPECT_FALSE(enumerator2.GetNextIconMapping(&icon_mapping)); 807 EXPECT_FALSE(enumerator2.GetNextIconMapping(&icon_mapping));
779 } 808 }
780 809
781 } // namespace history 810 } // namespace history
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698