OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <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 508 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
519 | 519 |
520 FaviconID id = db.AddFavicon(icon_url, FAVICON, GetDefaultFaviconSizes(), | 520 FaviconID id = db.AddFavicon(icon_url, FAVICON, GetDefaultFaviconSizes(), |
521 favicon, time, gfx::Size()); | 521 favicon, time, gfx::Size()); |
522 EXPECT_NE(0, db.AddIconMapping(page_url, id)); | 522 EXPECT_NE(0, db.AddIconMapping(page_url, id)); |
523 std::vector<IconMapping> icon_mappings; | 523 std::vector<IconMapping> icon_mappings; |
524 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url, &icon_mappings)); | 524 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url, &icon_mappings)); |
525 | 525 |
526 EXPECT_EQ(page_url, icon_mappings.front().page_url); | 526 EXPECT_EQ(page_url, icon_mappings.front().page_url); |
527 EXPECT_EQ(id, icon_mappings.front().icon_id); | 527 EXPECT_EQ(id, icon_mappings.front().icon_id); |
528 EXPECT_EQ(FAVICON, icon_mappings.front().icon_type); | 528 EXPECT_EQ(FAVICON, icon_mappings.front().icon_type); |
| 529 EXPECT_EQ(icon_url, icon_mappings.front().icon_url); |
529 | 530 |
530 // Add a touch icon | 531 // Add a touch icon |
531 std::vector<unsigned char> data2(blob2, blob2 + sizeof(blob2)); | 532 std::vector<unsigned char> data2(blob2, blob2 + sizeof(blob2)); |
532 scoped_refptr<base::RefCountedBytes> favicon2 = | 533 scoped_refptr<base::RefCountedBytes> favicon2 = |
533 new base::RefCountedBytes(data); | 534 new base::RefCountedBytes(data); |
534 | 535 |
535 FaviconID id2 = db.AddFavicon(icon_url, TOUCH_ICON, | 536 FaviconID id2 = db.AddFavicon(icon_url, TOUCH_ICON, |
536 GetDefaultFaviconSizes(), favicon2, time, gfx::Size()); | 537 GetDefaultFaviconSizes(), favicon2, time, gfx::Size()); |
537 EXPECT_NE(0, db.AddIconMapping(page_url, id2)); | 538 EXPECT_NE(0, db.AddIconMapping(page_url, id2)); |
538 | 539 |
539 icon_mappings.clear(); | 540 icon_mappings.clear(); |
540 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url, &icon_mappings)); | 541 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url, &icon_mappings)); |
541 | 542 |
542 EXPECT_EQ(page_url, icon_mappings.front().page_url); | 543 EXPECT_EQ(page_url, icon_mappings.front().page_url); |
543 EXPECT_EQ(id2, icon_mappings.front().icon_id); | 544 EXPECT_EQ(id2, icon_mappings.front().icon_id); |
544 EXPECT_EQ(TOUCH_ICON, icon_mappings.front().icon_type); | 545 EXPECT_EQ(TOUCH_ICON, icon_mappings.front().icon_type); |
| 546 EXPECT_EQ(icon_url, icon_mappings.front().icon_url); |
545 | 547 |
546 // Add a touch precomposed icon | 548 // Add a touch precomposed icon |
547 scoped_refptr<base::RefCountedBytes> favicon3 = | 549 scoped_refptr<base::RefCountedBytes> favicon3 = |
548 new base::RefCountedBytes(data2); | 550 new base::RefCountedBytes(data2); |
549 | 551 |
550 FaviconID id3 = db.AddFavicon(icon_url, TOUCH_PRECOMPOSED_ICON, | 552 FaviconID id3 = db.AddFavicon(icon_url, TOUCH_PRECOMPOSED_ICON, |
551 GetDefaultFaviconSizes(), favicon3, time, gfx::Size()); | 553 GetDefaultFaviconSizes(), favicon3, time, gfx::Size()); |
552 EXPECT_NE(0, db.AddIconMapping(page_url, id3)); | 554 EXPECT_NE(0, db.AddIconMapping(page_url, id3)); |
553 | 555 |
554 icon_mappings.clear(); | 556 icon_mappings.clear(); |
555 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url, &icon_mappings)); | 557 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url, &icon_mappings)); |
556 | 558 |
557 EXPECT_EQ(page_url, icon_mappings.front().page_url); | 559 EXPECT_EQ(page_url, icon_mappings.front().page_url); |
558 EXPECT_EQ(id3, icon_mappings.front().icon_id); | 560 EXPECT_EQ(id3, icon_mappings.front().icon_id); |
559 EXPECT_EQ(TOUCH_PRECOMPOSED_ICON, icon_mappings.front().icon_type); | 561 EXPECT_EQ(TOUCH_PRECOMPOSED_ICON, icon_mappings.front().icon_type); |
| 562 EXPECT_EQ(icon_url, icon_mappings.front().icon_url); |
560 } | 563 } |
561 | 564 |
562 // Test result of GetIconMappingsForPageURL when an icon type is passed in. | 565 // Test result of GetIconMappingsForPageURL when an icon type is passed in. |
563 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURLWithIconType) { | 566 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURLWithIconType) { |
564 ThumbnailDatabase db; | 567 ThumbnailDatabase db; |
565 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | 568 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); |
566 db.BeginTransaction(); | 569 db.BeginTransaction(); |
567 | 570 |
568 GURL url("http://google.com"); | 571 GURL url("http://google.com"); |
569 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); | 572 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
733 | 736 |
734 // Migration should be done. | 737 // Migration should be done. |
735 // Test one icon_mapping. | 738 // Test one icon_mapping. |
736 GURL page_url1 = GURL("http://google.com/"); | 739 GURL page_url1 = GURL("http://google.com/"); |
737 std::vector<IconMapping> icon_mappings; | 740 std::vector<IconMapping> icon_mappings; |
738 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url1, &icon_mappings)); | 741 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url1, &icon_mappings)); |
739 ASSERT_EQ(1u, icon_mappings.size()); | 742 ASSERT_EQ(1u, icon_mappings.size()); |
740 EXPECT_EQ(FAVICON, icon_mappings[0].icon_type); | 743 EXPECT_EQ(FAVICON, icon_mappings[0].icon_type); |
741 EXPECT_EQ(page_url1, icon_mappings[0].page_url); | 744 EXPECT_EQ(page_url1, icon_mappings[0].page_url); |
742 EXPECT_EQ(1, icon_mappings[0].icon_id); | 745 EXPECT_EQ(1, icon_mappings[0].icon_id); |
743 GURL out_icon_url; | 746 EXPECT_EQ(icon1, icon_mappings[0].icon_url); |
744 ASSERT_TRUE(db.GetFaviconHeader( | |
745 icon_mappings[0].icon_id, &out_icon_url, NULL, NULL)); | |
746 EXPECT_EQ(icon1, out_icon_url); | |
747 | 747 |
748 // Test a page which has the same icon. | 748 // Test a page which has the same icon. |
749 GURL page_url3 = GURL("http://www.google.com/"); | 749 GURL page_url3 = GURL("http://www.google.com/"); |
750 icon_mappings.clear(); | 750 icon_mappings.clear(); |
751 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url3, &icon_mappings)); | 751 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url3, &icon_mappings)); |
752 ASSERT_EQ(1u, icon_mappings.size()); | 752 ASSERT_EQ(1u, icon_mappings.size()); |
753 EXPECT_EQ(FAVICON, icon_mappings[0].icon_type); | 753 EXPECT_EQ(FAVICON, icon_mappings[0].icon_type); |
754 EXPECT_EQ(page_url3, icon_mappings[0].page_url); | 754 EXPECT_EQ(page_url3, icon_mappings[0].page_url); |
755 EXPECT_EQ(1, icon_mappings[0].icon_id); | 755 EXPECT_EQ(1, icon_mappings[0].icon_id); |
| 756 EXPECT_EQ(icon1, icon_mappings[0].icon_url); |
756 | 757 |
757 // Test a icon_mapping with different IconID. | 758 // Test a icon_mapping with different IconID. |
758 GURL page_url2 = GURL("http://yahoo.com/"); | 759 GURL page_url2 = GURL("http://yahoo.com/"); |
759 icon_mappings.clear(); | 760 icon_mappings.clear(); |
760 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url2, &icon_mappings)); | 761 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url2, &icon_mappings)); |
761 ASSERT_EQ(1u, icon_mappings.size()); | 762 ASSERT_EQ(1u, icon_mappings.size()); |
762 EXPECT_EQ(FAVICON, icon_mappings[0].icon_type); | 763 EXPECT_EQ(FAVICON, icon_mappings[0].icon_type); |
763 EXPECT_EQ(page_url2, icon_mappings[0].page_url); | 764 EXPECT_EQ(page_url2, icon_mappings[0].page_url); |
764 EXPECT_EQ(2, icon_mappings[0].icon_id); | 765 EXPECT_EQ(2, icon_mappings[0].icon_id); |
765 ASSERT_TRUE(db.GetFaviconHeader( | 766 EXPECT_EQ(icon2, icon_mappings[0].icon_url); |
766 icon_mappings[0].icon_id, &out_icon_url, NULL, NULL)); | |
767 EXPECT_EQ(icon2, out_icon_url); | |
768 | 767 |
769 // Test a page without icon | 768 // Test a page without icon |
770 GURL page_url4 = GURL("http://www.google.com/blank.html"); | 769 GURL page_url4 = GURL("http://www.google.com/blank.html"); |
771 EXPECT_FALSE(db.GetIconMappingsForPageURL(page_url4, NULL)); | 770 EXPECT_FALSE(db.GetIconMappingsForPageURL(page_url4, NULL)); |
772 } | 771 } |
773 | 772 |
774 TEST_F(ThumbnailDatabaseTest, IconMappingEnumerator) { | 773 TEST_F(ThumbnailDatabaseTest, IconMappingEnumerator) { |
775 ThumbnailDatabase db; | 774 ThumbnailDatabase db; |
776 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | 775 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); |
777 db.BeginTransaction(); | 776 db.BeginTransaction(); |
(...skipping 29 matching lines...) Expand all Loading... |
807 // There are 2 favicon mappings. | 806 // There are 2 favicon mappings. |
808 bool has_favicon_mapping1 = false; | 807 bool has_favicon_mapping1 = false; |
809 bool has_favicon_mapping2 = false; | 808 bool has_favicon_mapping2 = false; |
810 int mapping_count = 0; | 809 int mapping_count = 0; |
811 while (enumerator1.GetNextIconMapping(&icon_mapping)) { | 810 while (enumerator1.GetNextIconMapping(&icon_mapping)) { |
812 mapping_count++; | 811 mapping_count++; |
813 if (favicon_mapping_id1 == icon_mapping.mapping_id) { | 812 if (favicon_mapping_id1 == icon_mapping.mapping_id) { |
814 has_favicon_mapping1 = true; | 813 has_favicon_mapping1 = true; |
815 EXPECT_EQ(url, icon_mapping.page_url); | 814 EXPECT_EQ(url, icon_mapping.page_url); |
816 EXPECT_EQ(favicon_id1, icon_mapping.icon_id); | 815 EXPECT_EQ(favicon_id1, icon_mapping.icon_id); |
| 816 EXPECT_EQ(icon_url1, icon_mapping.icon_url); |
817 EXPECT_EQ(FAVICON, icon_mapping.icon_type); | 817 EXPECT_EQ(FAVICON, icon_mapping.icon_type); |
818 } else if (favicon_mapping_id2 == icon_mapping.mapping_id) { | 818 } else if (favicon_mapping_id2 == icon_mapping.mapping_id) { |
819 has_favicon_mapping2 = true; | 819 has_favicon_mapping2 = true; |
820 EXPECT_EQ(url2, icon_mapping.page_url); | 820 EXPECT_EQ(url2, icon_mapping.page_url); |
821 EXPECT_EQ(favicon_id2, icon_mapping.icon_id); | 821 EXPECT_EQ(favicon_id2, icon_mapping.icon_id); |
| 822 EXPECT_EQ(icon_url2, icon_mapping.icon_url); |
822 EXPECT_EQ(FAVICON, icon_mapping.icon_type); | 823 EXPECT_EQ(FAVICON, icon_mapping.icon_type); |
823 } | 824 } |
824 } | 825 } |
825 EXPECT_EQ(2, mapping_count); | 826 EXPECT_EQ(2, mapping_count); |
826 EXPECT_TRUE(has_favicon_mapping1); | 827 EXPECT_TRUE(has_favicon_mapping1); |
827 EXPECT_TRUE(has_favicon_mapping2); | 828 EXPECT_TRUE(has_favicon_mapping2); |
828 | 829 |
829 ThumbnailDatabase::IconMappingEnumerator enumerator2; | 830 ThumbnailDatabase::IconMappingEnumerator enumerator2; |
830 ASSERT_TRUE(db.InitIconMappingEnumerator(TOUCH_ICON, &enumerator2)); | 831 ASSERT_TRUE(db.InitIconMappingEnumerator(TOUCH_ICON, &enumerator2)); |
831 ASSERT_TRUE(enumerator2.GetNextIconMapping(&icon_mapping)); | 832 ASSERT_TRUE(enumerator2.GetNextIconMapping(&icon_mapping)); |
832 EXPECT_EQ(touch_mapping_id1, icon_mapping.mapping_id); | 833 EXPECT_EQ(touch_mapping_id1, icon_mapping.mapping_id); |
833 EXPECT_EQ(url, icon_mapping.page_url); | 834 EXPECT_EQ(url, icon_mapping.page_url); |
834 EXPECT_EQ(touch_icon_id1, icon_mapping.icon_id); | 835 EXPECT_EQ(touch_icon_id1, icon_mapping.icon_id); |
| 836 EXPECT_EQ(icon_url1, icon_mapping.icon_url); |
835 EXPECT_EQ(TOUCH_ICON, icon_mapping.icon_type); | 837 EXPECT_EQ(TOUCH_ICON, icon_mapping.icon_type); |
836 | 838 |
837 EXPECT_FALSE(enumerator2.GetNextIconMapping(&icon_mapping)); | 839 EXPECT_FALSE(enumerator2.GetNextIconMapping(&icon_mapping)); |
838 } | 840 } |
839 | 841 |
840 TEST_F(ThumbnailDatabaseTest, FaviconSizesToAndFromString) { | 842 TEST_F(ThumbnailDatabaseTest, FaviconSizesToAndFromString) { |
841 // Invalid input. | 843 // Invalid input. |
842 FaviconSizes sizes_missing_height; | 844 FaviconSizes sizes_missing_height; |
843 ThumbnailDatabase::DatabaseStringToFaviconSizes("0 0 10", | 845 ThumbnailDatabase::DatabaseStringToFaviconSizes("0 0 10", |
844 &sizes_missing_height); | 846 &sizes_missing_height); |
(...skipping 20 matching lines...) Expand all Loading... |
865 } | 867 } |
866 | 868 |
867 std::string sizes_as_string; | 869 std::string sizes_as_string; |
868 ThumbnailDatabase::FaviconSizesToDatabaseString(sizes_valid, | 870 ThumbnailDatabase::FaviconSizesToDatabaseString(sizes_valid, |
869 &sizes_as_string); | 871 &sizes_as_string); |
870 EXPECT_TRUE(sizes_as_string == "10 15 20 25" || | 872 EXPECT_TRUE(sizes_as_string == "10 15 20 25" || |
871 sizes_as_string == "20 25 10 15"); | 873 sizes_as_string == "20 25 10 15"); |
872 } | 874 } |
873 | 875 |
874 } // namespace history | 876 } // namespace history |
OLD | NEW |