OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/sync/glue/favicon_cache.h" | 5 #include "chrome/browser/sync/glue/favicon_cache.h" |
6 | 6 |
7 #include "base/message_loop/message_loop.h" | 7 #include "base/message_loop/message_loop.h" |
8 #include "base/strings/string_number_conversions.h" | 8 #include "base/strings/string_number_conversions.h" |
9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
10 #include "base/time/time.h" | 10 #include "base/time/time.h" |
11 #include "chrome/browser/chrome_notification_types.h" | 11 #include "chrome/browser/chrome_notification_types.h" |
12 #include "chrome/browser/history/history_notifications.h" | 12 #include "chrome/browser/history/history_notifications.h" |
13 #include "content/public/browser/notification_service.h" | 13 #include "content/public/browser/notification_service.h" |
| 14 #include "sync/api/attachments/attachment_id.h" |
| 15 #include "sync/api/attachments/attachment_service_proxy_for_test.h" |
14 #include "sync/api/sync_change_processor_wrapper_for_test.h" | 16 #include "sync/api/sync_change_processor_wrapper_for_test.h" |
15 #include "sync/api/sync_error_factory_mock.h" | 17 #include "sync/api/sync_error_factory_mock.h" |
16 #include "sync/api/time.h" | 18 #include "sync/api/time.h" |
17 #include "sync/protocol/favicon_image_specifics.pb.h" | 19 #include "sync/protocol/favicon_image_specifics.pb.h" |
18 #include "sync/protocol/favicon_tracking_specifics.pb.h" | 20 #include "sync/protocol/favicon_tracking_specifics.pb.h" |
19 #include "sync/protocol/sync.pb.h" | 21 #include "sync/protocol/sync.pb.h" |
20 #include "testing/gtest/include/gtest/gtest.h" | 22 #include "testing/gtest/include/gtest/gtest.h" |
21 | 23 |
22 namespace browser_sync { | 24 namespace browser_sync { |
23 | 25 |
(...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
607 // Setting up sync with existing sync data should load that data into the local | 609 // Setting up sync with existing sync data should load that data into the local |
608 // cache. | 610 // cache. |
609 TEST_F(SyncFaviconCacheTest, SyncExistingRemote) { | 611 TEST_F(SyncFaviconCacheTest, SyncExistingRemote) { |
610 syncer::SyncDataList initial_image_data, initial_tracking_data; | 612 syncer::SyncDataList initial_image_data, initial_tracking_data; |
611 std::vector<int> expected_icons; | 613 std::vector<int> expected_icons; |
612 for (int i = 0; i < kFaviconBatchSize; ++i) { | 614 for (int i = 0; i < kFaviconBatchSize; ++i) { |
613 expected_icons.push_back(i); | 615 expected_icons.push_back(i); |
614 sync_pb::EntitySpecifics image_specifics, tracking_specifics; | 616 sync_pb::EntitySpecifics image_specifics, tracking_specifics; |
615 FillImageSpecifics(BuildFaviconData(i), | 617 FillImageSpecifics(BuildFaviconData(i), |
616 image_specifics.mutable_favicon_image()); | 618 image_specifics.mutable_favicon_image()); |
617 initial_image_data.push_back( | 619 initial_image_data.push_back(syncer::SyncData::CreateRemoteData( |
618 syncer::SyncData::CreateRemoteData(1, | 620 1, |
619 image_specifics, | 621 image_specifics, |
620 base::Time())); | 622 base::Time(), |
| 623 syncer::AttachmentIdList(), |
| 624 syncer::AttachmentServiceProxyForTest::Create())); |
621 FillTrackingSpecifics(BuildFaviconData(i), | 625 FillTrackingSpecifics(BuildFaviconData(i), |
622 tracking_specifics.mutable_favicon_tracking()); | 626 tracking_specifics.mutable_favicon_tracking()); |
623 initial_tracking_data.push_back( | 627 initial_tracking_data.push_back(syncer::SyncData::CreateRemoteData( |
624 syncer::SyncData::CreateRemoteData(1, | 628 1, |
625 tracking_specifics, | 629 tracking_specifics, |
626 base::Time())); | 630 base::Time(), |
| 631 syncer::AttachmentIdList(), |
| 632 syncer::AttachmentServiceProxyForTest::Create())); |
627 } | 633 } |
628 | 634 |
629 syncer::SyncMergeResult merge_result = | 635 syncer::SyncMergeResult merge_result = |
630 cache()->MergeDataAndStartSyncing(syncer::FAVICON_IMAGES, | 636 cache()->MergeDataAndStartSyncing(syncer::FAVICON_IMAGES, |
631 initial_image_data, | 637 initial_image_data, |
632 CreateAndPassProcessor(), | 638 CreateAndPassProcessor(), |
633 CreateAndPassSyncErrorFactory()); | 639 CreateAndPassSyncErrorFactory()); |
634 EXPECT_EQ((unsigned long)kFaviconBatchSize, | 640 EXPECT_EQ((unsigned long)kFaviconBatchSize, |
635 cache()->GetAllSyncData(syncer::FAVICON_IMAGES).size()); | 641 cache()->GetAllSyncData(syncer::FAVICON_IMAGES).size()); |
636 EXPECT_EQ(0U, processor()->GetAndResetChangeList().size()); | 642 EXPECT_EQ(0U, processor()->GetAndResetChangeList().size()); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
682 test_data.image_16 = std::string(); | 688 test_data.image_16 = std::string(); |
683 expected_icons.push_back(i); | 689 expected_icons.push_back(i); |
684 expected_change_types.push_back(syncer::SyncChange::ACTION_UPDATE); | 690 expected_change_types.push_back(syncer::SyncChange::ACTION_UPDATE); |
685 } else { | 691 } else { |
686 test_data.image_16 += "custom"; | 692 test_data.image_16 += "custom"; |
687 expected_data.push_back(test_data); | 693 expected_data.push_back(test_data); |
688 } | 694 } |
689 FillImageSpecifics(test_data, | 695 FillImageSpecifics(test_data, |
690 image_specifics.mutable_favicon_image()); | 696 image_specifics.mutable_favicon_image()); |
691 | 697 |
692 initial_image_data.push_back( | 698 initial_image_data.push_back(syncer::SyncData::CreateRemoteData( |
693 syncer::SyncData::CreateRemoteData(1, | 699 1, |
694 image_specifics, | 700 image_specifics, |
695 base::Time())); | 701 base::Time(), |
| 702 syncer::AttachmentIdList(), |
| 703 syncer::AttachmentServiceProxyForTest::Create())); |
696 FillTrackingSpecifics(test_data, | 704 FillTrackingSpecifics(test_data, |
697 tracking_specifics.mutable_favicon_tracking()); | 705 tracking_specifics.mutable_favicon_tracking()); |
698 initial_tracking_data.push_back( | 706 initial_tracking_data.push_back(syncer::SyncData::CreateRemoteData( |
699 syncer::SyncData::CreateRemoteData(1, | 707 1, |
700 tracking_specifics, | 708 tracking_specifics, |
701 base::Time())); | 709 base::Time(), |
| 710 syncer::AttachmentIdList(), |
| 711 syncer::AttachmentServiceProxyForTest::Create())); |
702 } | 712 } |
703 | 713 |
704 syncer::SyncMergeResult merge_result = | 714 syncer::SyncMergeResult merge_result = |
705 cache()->MergeDataAndStartSyncing(syncer::FAVICON_IMAGES, | 715 cache()->MergeDataAndStartSyncing(syncer::FAVICON_IMAGES, |
706 initial_image_data, | 716 initial_image_data, |
707 CreateAndPassProcessor(), | 717 CreateAndPassProcessor(), |
708 CreateAndPassSyncErrorFactory()); | 718 CreateAndPassSyncErrorFactory()); |
709 EXPECT_EQ((unsigned long)kFaviconBatchSize, | 719 EXPECT_EQ((unsigned long)kFaviconBatchSize, |
710 cache()->GetAllSyncData(syncer::FAVICON_IMAGES).size()); | 720 cache()->GetAllSyncData(syncer::FAVICON_IMAGES).size()); |
711 syncer::SyncChangeList changes = processor()->GetAndResetChangeList(); | 721 syncer::SyncChangeList changes = processor()->GetAndResetChangeList(); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
763 test_data.last_visit_time = i-1; | 773 test_data.last_visit_time = i-1; |
764 expected_icons.push_back(i); | 774 expected_icons.push_back(i); |
765 expected_change_types.push_back(syncer::SyncChange::ACTION_UPDATE); | 775 expected_change_types.push_back(syncer::SyncChange::ACTION_UPDATE); |
766 } else { | 776 } else { |
767 test_data.last_visit_time = i+1; | 777 test_data.last_visit_time = i+1; |
768 expected_data.push_back(test_data); | 778 expected_data.push_back(test_data); |
769 } | 779 } |
770 FillImageSpecifics(test_data, | 780 FillImageSpecifics(test_data, |
771 image_specifics.mutable_favicon_image()); | 781 image_specifics.mutable_favicon_image()); |
772 | 782 |
773 initial_image_data.push_back( | 783 initial_image_data.push_back(syncer::SyncData::CreateRemoteData( |
774 syncer::SyncData::CreateRemoteData(1, | 784 1, |
775 image_specifics, | 785 image_specifics, |
776 base::Time())); | 786 base::Time(), |
| 787 syncer::AttachmentIdList(), |
| 788 syncer::AttachmentServiceProxyForTest::Create())); |
777 FillTrackingSpecifics(test_data, | 789 FillTrackingSpecifics(test_data, |
778 tracking_specifics.mutable_favicon_tracking()); | 790 tracking_specifics.mutable_favicon_tracking()); |
779 initial_tracking_data.push_back( | 791 initial_tracking_data.push_back(syncer::SyncData::CreateRemoteData( |
780 syncer::SyncData::CreateRemoteData(1, | 792 1, |
781 tracking_specifics, | 793 tracking_specifics, |
782 base::Time())); | 794 base::Time(), |
| 795 syncer::AttachmentIdList(), |
| 796 syncer::AttachmentServiceProxyForTest::Create())); |
783 } | 797 } |
784 | 798 |
785 syncer::SyncMergeResult merge_result = | 799 syncer::SyncMergeResult merge_result = |
786 cache()->MergeDataAndStartSyncing(syncer::FAVICON_IMAGES, | 800 cache()->MergeDataAndStartSyncing(syncer::FAVICON_IMAGES, |
787 initial_image_data, | 801 initial_image_data, |
788 CreateAndPassProcessor(), | 802 CreateAndPassProcessor(), |
789 CreateAndPassSyncErrorFactory()); | 803 CreateAndPassSyncErrorFactory()); |
790 EXPECT_EQ((unsigned long)kFaviconBatchSize, | 804 EXPECT_EQ((unsigned long)kFaviconBatchSize, |
791 cache()->GetAllSyncData(syncer::FAVICON_IMAGES).size()); | 805 cache()->GetAllSyncData(syncer::FAVICON_IMAGES).size()); |
792 EXPECT_EQ(0U, processor()->GetAndResetChangeList().size()); | 806 EXPECT_EQ(0U, processor()->GetAndResetChangeList().size()); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
824 TEST_F(SyncFaviconCacheTest, ReceiveStaleImages) { | 838 TEST_F(SyncFaviconCacheTest, ReceiveStaleImages) { |
825 syncer::SyncDataList initial_image_data, initial_tracking_data; | 839 syncer::SyncDataList initial_image_data, initial_tracking_data; |
826 syncer::SyncChangeList stale_changes; | 840 syncer::SyncChangeList stale_changes; |
827 std::vector<int> expected_icons; | 841 std::vector<int> expected_icons; |
828 std::vector<syncer::SyncChange::SyncChangeType> expected_change_types; | 842 std::vector<syncer::SyncChange::SyncChangeType> expected_change_types; |
829 for (int i = 0; i < kFaviconBatchSize; ++i) { | 843 for (int i = 0; i < kFaviconBatchSize; ++i) { |
830 expected_icons.push_back(i); | 844 expected_icons.push_back(i); |
831 sync_pb::EntitySpecifics image_specifics, tracking_specifics; | 845 sync_pb::EntitySpecifics image_specifics, tracking_specifics; |
832 FillImageSpecifics(BuildFaviconData(i), | 846 FillImageSpecifics(BuildFaviconData(i), |
833 image_specifics.mutable_favicon_image()); | 847 image_specifics.mutable_favicon_image()); |
834 initial_image_data.push_back( | 848 initial_image_data.push_back(syncer::SyncData::CreateRemoteData( |
835 syncer::SyncData::CreateRemoteData(1, | 849 1, |
836 image_specifics, | 850 image_specifics, |
837 base::Time())); | 851 base::Time(), |
| 852 syncer::AttachmentIdList(), |
| 853 syncer::AttachmentServiceProxyForTest::Create())); |
838 expected_change_types.push_back(syncer::SyncChange::ACTION_UPDATE); | 854 expected_change_types.push_back(syncer::SyncChange::ACTION_UPDATE); |
839 image_specifics.mutable_favicon_image()->clear_favicon_web(); | 855 image_specifics.mutable_favicon_image()->clear_favicon_web(); |
840 stale_changes.push_back( | 856 stale_changes.push_back(syncer::SyncChange( |
841 syncer::SyncChange( | 857 FROM_HERE, |
842 FROM_HERE, | 858 syncer::SyncChange::ACTION_UPDATE, |
843 syncer::SyncChange::ACTION_UPDATE, | 859 syncer::SyncData::CreateRemoteData( |
844 syncer::SyncData::CreateRemoteData(1, | 860 1, |
845 image_specifics, | 861 image_specifics, |
846 base::Time()))); | 862 base::Time(), |
| 863 syncer::AttachmentIdList(), |
| 864 syncer::AttachmentServiceProxyForTest::Create()))); |
847 FillTrackingSpecifics(BuildFaviconData(i), | 865 FillTrackingSpecifics(BuildFaviconData(i), |
848 tracking_specifics.mutable_favicon_tracking()); | 866 tracking_specifics.mutable_favicon_tracking()); |
849 initial_tracking_data.push_back( | 867 initial_tracking_data.push_back(syncer::SyncData::CreateRemoteData( |
850 syncer::SyncData::CreateRemoteData(1, | 868 1, |
851 tracking_specifics, | 869 tracking_specifics, |
852 base::Time())); | 870 base::Time(), |
| 871 syncer::AttachmentIdList(), |
| 872 syncer::AttachmentServiceProxyForTest::Create())); |
853 } | 873 } |
854 | 874 |
855 SetUpInitialSync(initial_image_data, initial_tracking_data); | 875 SetUpInitialSync(initial_image_data, initial_tracking_data); |
856 | 876 |
857 // Now receive the same icons as an update, but with missing image data. | 877 // Now receive the same icons as an update, but with missing image data. |
858 cache()->ProcessSyncChanges(FROM_HERE, stale_changes); | 878 cache()->ProcessSyncChanges(FROM_HERE, stale_changes); |
859 syncer::SyncChangeList changes = processor()->GetAndResetChangeList(); | 879 syncer::SyncChangeList changes = processor()->GetAndResetChangeList(); |
860 ASSERT_TRUE(VerifyLocalIcons(expected_icons)); | 880 ASSERT_TRUE(VerifyLocalIcons(expected_icons)); |
861 ASSERT_EQ((unsigned long)kFaviconBatchSize, changes.size()); | 881 ASSERT_EQ((unsigned long)kFaviconBatchSize, changes.size()); |
862 ASSERT_TRUE(VerifyChanges(syncer::FAVICON_IMAGES, | 882 ASSERT_TRUE(VerifyChanges(syncer::FAVICON_IMAGES, |
863 expected_change_types, | 883 expected_change_types, |
864 expected_icons, | 884 expected_icons, |
865 changes)); | 885 changes)); |
866 } | 886 } |
867 | 887 |
868 // New icons should be added locally without pushing anything back to the | 888 // New icons should be added locally without pushing anything back to the |
869 // remote syncer. | 889 // remote syncer. |
870 TEST_F(SyncFaviconCacheTest, ReceiveNewImages) { | 890 TEST_F(SyncFaviconCacheTest, ReceiveNewImages) { |
871 syncer::SyncDataList initial_image_data, initial_tracking_data; | 891 syncer::SyncDataList initial_image_data, initial_tracking_data; |
872 syncer::SyncChangeList new_changes; | 892 syncer::SyncChangeList new_changes; |
873 std::vector<int> expected_icons; | 893 std::vector<int> expected_icons; |
874 for (int i = 0; i < kFaviconBatchSize; ++i) { | 894 for (int i = 0; i < kFaviconBatchSize; ++i) { |
875 expected_icons.push_back(i); | 895 expected_icons.push_back(i); |
876 TestFaviconData test_data = BuildFaviconData(i); | 896 TestFaviconData test_data = BuildFaviconData(i); |
877 sync_pb::EntitySpecifics image_specifics, tracking_specifics; | 897 sync_pb::EntitySpecifics image_specifics, tracking_specifics; |
878 FillImageSpecifics(test_data, | 898 FillImageSpecifics(test_data, |
879 image_specifics.mutable_favicon_image()); | 899 image_specifics.mutable_favicon_image()); |
880 new_changes.push_back( | 900 new_changes.push_back(syncer::SyncChange( |
881 syncer::SyncChange( | 901 FROM_HERE, |
882 FROM_HERE, | 902 syncer::SyncChange::ACTION_UPDATE, |
883 syncer::SyncChange::ACTION_UPDATE, | 903 syncer::SyncData::CreateRemoteData( |
884 syncer::SyncData::CreateRemoteData(1, | 904 1, |
885 image_specifics, | 905 image_specifics, |
886 base::Time()))); | 906 base::Time(), |
887 image_specifics.mutable_favicon_image()->mutable_favicon_web()-> | 907 syncer::AttachmentIdList(), |
888 mutable_favicon()->append("old"); | 908 syncer::AttachmentServiceProxyForTest::Create()))); |
889 initial_image_data.push_back( | 909 image_specifics.mutable_favicon_image() |
890 syncer::SyncData::CreateRemoteData(1, | 910 ->mutable_favicon_web() |
891 image_specifics, | 911 ->mutable_favicon() |
892 base::Time())); | 912 ->append("old"); |
| 913 initial_image_data.push_back(syncer::SyncData::CreateRemoteData( |
| 914 1, |
| 915 image_specifics, |
| 916 base::Time(), |
| 917 syncer::AttachmentIdList(), |
| 918 syncer::AttachmentServiceProxyForTest::Create())); |
893 FillTrackingSpecifics(BuildFaviconData(i), | 919 FillTrackingSpecifics(BuildFaviconData(i), |
894 tracking_specifics.mutable_favicon_tracking()); | 920 tracking_specifics.mutable_favicon_tracking()); |
895 initial_tracking_data.push_back( | 921 initial_tracking_data.push_back(syncer::SyncData::CreateRemoteData( |
896 syncer::SyncData::CreateRemoteData(1, | 922 1, |
897 tracking_specifics, | 923 tracking_specifics, |
898 base::Time())); | 924 base::Time(), |
| 925 syncer::AttachmentIdList(), |
| 926 syncer::AttachmentServiceProxyForTest::Create())); |
899 } | 927 } |
900 | 928 |
901 SetUpInitialSync(initial_image_data, initial_tracking_data); | 929 SetUpInitialSync(initial_image_data, initial_tracking_data); |
902 | 930 |
903 // Now receive the new icons as an update. | 931 // Now receive the new icons as an update. |
904 cache()->ProcessSyncChanges(FROM_HERE, new_changes); | 932 cache()->ProcessSyncChanges(FROM_HERE, new_changes); |
905 EXPECT_EQ(0U, processor()->GetAndResetChangeList().size()); | 933 EXPECT_EQ(0U, processor()->GetAndResetChangeList().size()); |
906 ASSERT_TRUE(VerifyLocalIcons(expected_icons)); | 934 ASSERT_TRUE(VerifyLocalIcons(expected_icons)); |
907 } | 935 } |
908 | 936 |
909 // Recieving the same icons as the local data should have no effect. | 937 // Recieving the same icons as the local data should have no effect. |
910 TEST_F(SyncFaviconCacheTest, ReceiveSameImages) { | 938 TEST_F(SyncFaviconCacheTest, ReceiveSameImages) { |
911 syncer::SyncDataList initial_image_data, initial_tracking_data; | 939 syncer::SyncDataList initial_image_data, initial_tracking_data; |
912 syncer::SyncChangeList same_changes; | 940 syncer::SyncChangeList same_changes; |
913 std::vector<int> expected_icons; | 941 std::vector<int> expected_icons; |
914 for (int i = 0; i < kFaviconBatchSize; ++i) { | 942 for (int i = 0; i < kFaviconBatchSize; ++i) { |
915 expected_icons.push_back(i); | 943 expected_icons.push_back(i); |
916 TestFaviconData test_data = BuildFaviconData(i); | 944 TestFaviconData test_data = BuildFaviconData(i); |
917 sync_pb::EntitySpecifics image_specifics, tracking_specifics; | 945 sync_pb::EntitySpecifics image_specifics, tracking_specifics; |
918 FillImageSpecifics(test_data, | 946 FillImageSpecifics(test_data, |
919 image_specifics.mutable_favicon_image()); | 947 image_specifics.mutable_favicon_image()); |
920 same_changes.push_back( | 948 same_changes.push_back(syncer::SyncChange( |
921 syncer::SyncChange( | 949 FROM_HERE, |
922 FROM_HERE, | 950 syncer::SyncChange::ACTION_UPDATE, |
923 syncer::SyncChange::ACTION_UPDATE, | 951 syncer::SyncData::CreateRemoteData( |
924 syncer::SyncData::CreateRemoteData(1, | 952 1, |
925 image_specifics, | 953 image_specifics, |
926 base::Time()))); | 954 base::Time(), |
927 initial_image_data.push_back( | 955 syncer::AttachmentIdList(), |
928 syncer::SyncData::CreateRemoteData(1, | 956 syncer::AttachmentServiceProxyForTest::Create()))); |
929 image_specifics, | 957 initial_image_data.push_back(syncer::SyncData::CreateRemoteData( |
930 base::Time())); | 958 1, |
| 959 image_specifics, |
| 960 base::Time(), |
| 961 syncer::AttachmentIdList(), |
| 962 syncer::AttachmentServiceProxyForTest::Create())); |
931 FillTrackingSpecifics(BuildFaviconData(i), | 963 FillTrackingSpecifics(BuildFaviconData(i), |
932 tracking_specifics.mutable_favicon_tracking()); | 964 tracking_specifics.mutable_favicon_tracking()); |
933 initial_tracking_data.push_back( | 965 initial_tracking_data.push_back(syncer::SyncData::CreateRemoteData( |
934 syncer::SyncData::CreateRemoteData(1, | 966 1, |
935 tracking_specifics, | 967 tracking_specifics, |
936 base::Time())); | 968 base::Time(), |
| 969 syncer::AttachmentIdList(), |
| 970 syncer::AttachmentServiceProxyForTest::Create())); |
937 } | 971 } |
938 | 972 |
939 SetUpInitialSync(initial_image_data, initial_tracking_data); | 973 SetUpInitialSync(initial_image_data, initial_tracking_data); |
940 | 974 |
941 // Now receive the new icons as an update. | 975 // Now receive the new icons as an update. |
942 cache()->ProcessSyncChanges(FROM_HERE, same_changes); | 976 cache()->ProcessSyncChanges(FROM_HERE, same_changes); |
943 EXPECT_EQ(0U, processor()->GetAndResetChangeList().size()); | 977 EXPECT_EQ(0U, processor()->GetAndResetChangeList().size()); |
944 ASSERT_TRUE(VerifyLocalIcons(expected_icons)); | 978 ASSERT_TRUE(VerifyLocalIcons(expected_icons)); |
945 } | 979 } |
946 | 980 |
947 // Receiving stale tracking (old visit times) should result in pushing back | 981 // Receiving stale tracking (old visit times) should result in pushing back |
948 // the newer visit times to the remote syncer. | 982 // the newer visit times to the remote syncer. |
949 TEST_F(SyncFaviconCacheTest, ReceiveStaleTracking) { | 983 TEST_F(SyncFaviconCacheTest, ReceiveStaleTracking) { |
950 syncer::SyncDataList initial_image_data, initial_tracking_data; | 984 syncer::SyncDataList initial_image_data, initial_tracking_data; |
951 syncer::SyncChangeList stale_changes; | 985 syncer::SyncChangeList stale_changes; |
952 std::vector<int> expected_icons; | 986 std::vector<int> expected_icons; |
953 std::vector<syncer::SyncChange::SyncChangeType> expected_change_types; | 987 std::vector<syncer::SyncChange::SyncChangeType> expected_change_types; |
954 for (int i = 0; i < kFaviconBatchSize; ++i) { | 988 for (int i = 0; i < kFaviconBatchSize; ++i) { |
955 expected_icons.push_back(i); | 989 expected_icons.push_back(i); |
956 sync_pb::EntitySpecifics image_specifics, tracking_specifics; | 990 sync_pb::EntitySpecifics image_specifics, tracking_specifics; |
957 FillImageSpecifics(BuildFaviconData(i), | 991 FillImageSpecifics(BuildFaviconData(i), |
958 image_specifics.mutable_favicon_image()); | 992 image_specifics.mutable_favicon_image()); |
959 initial_image_data.push_back( | 993 initial_image_data.push_back(syncer::SyncData::CreateRemoteData( |
960 syncer::SyncData::CreateRemoteData(1, | 994 1, |
961 image_specifics, | 995 image_specifics, |
962 base::Time())); | 996 base::Time(), |
| 997 syncer::AttachmentIdList(), |
| 998 syncer::AttachmentServiceProxyForTest::Create())); |
963 expected_change_types.push_back(syncer::SyncChange::ACTION_UPDATE); | 999 expected_change_types.push_back(syncer::SyncChange::ACTION_UPDATE); |
964 FillTrackingSpecifics(BuildFaviconData(i), | 1000 FillTrackingSpecifics(BuildFaviconData(i), |
965 tracking_specifics.mutable_favicon_tracking()); | 1001 tracking_specifics.mutable_favicon_tracking()); |
966 initial_tracking_data.push_back( | 1002 initial_tracking_data.push_back(syncer::SyncData::CreateRemoteData( |
967 syncer::SyncData::CreateRemoteData(1, | 1003 1, |
968 tracking_specifics, | 1004 tracking_specifics, |
969 base::Time())); | 1005 base::Time(), |
| 1006 syncer::AttachmentIdList(), |
| 1007 syncer::AttachmentServiceProxyForTest::Create())); |
970 tracking_specifics.mutable_favicon_tracking()->set_last_visit_time_ms(-1); | 1008 tracking_specifics.mutable_favicon_tracking()->set_last_visit_time_ms(-1); |
971 stale_changes.push_back( | 1009 stale_changes.push_back(syncer::SyncChange( |
972 syncer::SyncChange( | 1010 FROM_HERE, |
973 FROM_HERE, | 1011 syncer::SyncChange::ACTION_UPDATE, |
974 syncer::SyncChange::ACTION_UPDATE, | 1012 syncer::SyncData::CreateRemoteData( |
975 syncer::SyncData::CreateRemoteData(1, | 1013 1, |
976 tracking_specifics, | 1014 tracking_specifics, |
977 base::Time()))); | 1015 base::Time(), |
| 1016 syncer::AttachmentIdList(), |
| 1017 syncer::AttachmentServiceProxyForTest::Create()))); |
978 } | 1018 } |
979 | 1019 |
980 SetUpInitialSync(initial_image_data, initial_tracking_data); | 1020 SetUpInitialSync(initial_image_data, initial_tracking_data); |
981 | 1021 |
982 // Now receive the same icons as an update, but with missing image data. | 1022 // Now receive the same icons as an update, but with missing image data. |
983 cache()->ProcessSyncChanges(FROM_HERE, stale_changes); | 1023 cache()->ProcessSyncChanges(FROM_HERE, stale_changes); |
984 syncer::SyncChangeList changes = processor()->GetAndResetChangeList(); | 1024 syncer::SyncChangeList changes = processor()->GetAndResetChangeList(); |
985 ASSERT_TRUE(VerifyLocalIcons(expected_icons)); | 1025 ASSERT_TRUE(VerifyLocalIcons(expected_icons)); |
986 ASSERT_EQ((unsigned long)kFaviconBatchSize, changes.size()); | 1026 ASSERT_EQ((unsigned long)kFaviconBatchSize, changes.size()); |
987 ASSERT_TRUE(VerifyChanges(syncer::FAVICON_TRACKING, | 1027 ASSERT_TRUE(VerifyChanges(syncer::FAVICON_TRACKING, |
988 expected_change_types, | 1028 expected_change_types, |
989 expected_icons, | 1029 expected_icons, |
990 changes)); | 1030 changes)); |
991 } | 1031 } |
992 | 1032 |
993 // New tracking information should be added locally without pushing anything | 1033 // New tracking information should be added locally without pushing anything |
994 // back to the remote syncer. | 1034 // back to the remote syncer. |
995 TEST_F(SyncFaviconCacheTest, ReceiveNewTracking) { | 1035 TEST_F(SyncFaviconCacheTest, ReceiveNewTracking) { |
996 syncer::SyncDataList initial_image_data, initial_tracking_data; | 1036 syncer::SyncDataList initial_image_data, initial_tracking_data; |
997 syncer::SyncChangeList new_changes; | 1037 syncer::SyncChangeList new_changes; |
998 std::vector<int> expected_icons; | 1038 std::vector<int> expected_icons; |
999 // We start from one here so that we don't have to deal with a -1 visit time. | 1039 // We start from one here so that we don't have to deal with a -1 visit time. |
1000 for (int i = 1; i <= kFaviconBatchSize; ++i) { | 1040 for (int i = 1; i <= kFaviconBatchSize; ++i) { |
1001 expected_icons.push_back(i); | 1041 expected_icons.push_back(i); |
1002 sync_pb::EntitySpecifics image_specifics, tracking_specifics; | 1042 sync_pb::EntitySpecifics image_specifics, tracking_specifics; |
1003 FillImageSpecifics(BuildFaviconData(i), | 1043 FillImageSpecifics(BuildFaviconData(i), |
1004 image_specifics.mutable_favicon_image()); | 1044 image_specifics.mutable_favicon_image()); |
1005 initial_image_data.push_back( | 1045 initial_image_data.push_back(syncer::SyncData::CreateRemoteData( |
1006 syncer::SyncData::CreateRemoteData(1, | 1046 1, |
1007 image_specifics, | 1047 image_specifics, |
1008 base::Time())); | 1048 base::Time(), |
| 1049 syncer::AttachmentIdList(), |
| 1050 syncer::AttachmentServiceProxyForTest::Create())); |
1009 FillTrackingSpecifics(BuildFaviconData(i), | 1051 FillTrackingSpecifics(BuildFaviconData(i), |
1010 tracking_specifics.mutable_favicon_tracking()); | 1052 tracking_specifics.mutable_favicon_tracking()); |
1011 new_changes.push_back( | 1053 new_changes.push_back(syncer::SyncChange( |
1012 syncer::SyncChange( | 1054 FROM_HERE, |
1013 FROM_HERE, | 1055 syncer::SyncChange::ACTION_UPDATE, |
1014 syncer::SyncChange::ACTION_UPDATE, | 1056 syncer::SyncData::CreateRemoteData( |
1015 syncer::SyncData::CreateRemoteData(1, | 1057 1, |
1016 tracking_specifics, | 1058 tracking_specifics, |
1017 base::Time()))); | 1059 base::Time(), |
| 1060 syncer::AttachmentIdList(), |
| 1061 syncer::AttachmentServiceProxyForTest::Create()))); |
1018 tracking_specifics.mutable_favicon_tracking()->set_last_visit_time_ms(i-1); | 1062 tracking_specifics.mutable_favicon_tracking()->set_last_visit_time_ms(i-1); |
1019 initial_tracking_data.push_back( | 1063 initial_tracking_data.push_back(syncer::SyncData::CreateRemoteData( |
1020 syncer::SyncData::CreateRemoteData(1, | 1064 1, |
1021 tracking_specifics, | 1065 tracking_specifics, |
1022 base::Time())); | 1066 base::Time(), |
| 1067 syncer::AttachmentIdList(), |
| 1068 syncer::AttachmentServiceProxyForTest::Create())); |
1023 } | 1069 } |
1024 | 1070 |
1025 SetUpInitialSync(initial_image_data, initial_tracking_data); | 1071 SetUpInitialSync(initial_image_data, initial_tracking_data); |
1026 | 1072 |
1027 // Now receive the new icons as an update. | 1073 // Now receive the new icons as an update. |
1028 cache()->ProcessSyncChanges(FROM_HERE, new_changes); | 1074 cache()->ProcessSyncChanges(FROM_HERE, new_changes); |
1029 EXPECT_EQ(0U, processor()->GetAndResetChangeList().size()); | 1075 EXPECT_EQ(0U, processor()->GetAndResetChangeList().size()); |
1030 ASSERT_TRUE(VerifyLocalIcons(expected_icons)); | 1076 ASSERT_TRUE(VerifyLocalIcons(expected_icons)); |
1031 } | 1077 } |
1032 | 1078 |
1033 // Receiving the same tracking information as the local data should have no | 1079 // Receiving the same tracking information as the local data should have no |
1034 // effect. | 1080 // effect. |
1035 TEST_F(SyncFaviconCacheTest, ReceiveSameTracking) { | 1081 TEST_F(SyncFaviconCacheTest, ReceiveSameTracking) { |
1036 syncer::SyncDataList initial_image_data, initial_tracking_data; | 1082 syncer::SyncDataList initial_image_data, initial_tracking_data; |
1037 syncer::SyncChangeList same_changes; | 1083 syncer::SyncChangeList same_changes; |
1038 std::vector<int> expected_icons; | 1084 std::vector<int> expected_icons; |
1039 for (int i = 0; i < kFaviconBatchSize; ++i) { | 1085 for (int i = 0; i < kFaviconBatchSize; ++i) { |
1040 expected_icons.push_back(i); | 1086 expected_icons.push_back(i); |
1041 sync_pb::EntitySpecifics image_specifics, tracking_specifics; | 1087 sync_pb::EntitySpecifics image_specifics, tracking_specifics; |
1042 FillImageSpecifics(BuildFaviconData(i), | 1088 FillImageSpecifics(BuildFaviconData(i), |
1043 image_specifics.mutable_favicon_image()); | 1089 image_specifics.mutable_favicon_image()); |
1044 initial_image_data.push_back( | 1090 initial_image_data.push_back(syncer::SyncData::CreateRemoteData( |
1045 syncer::SyncData::CreateRemoteData(1, | 1091 1, |
1046 image_specifics, | 1092 image_specifics, |
1047 base::Time())); | 1093 base::Time(), |
| 1094 syncer::AttachmentIdList(), |
| 1095 syncer::AttachmentServiceProxyForTest::Create())); |
1048 FillTrackingSpecifics(BuildFaviconData(i), | 1096 FillTrackingSpecifics(BuildFaviconData(i), |
1049 tracking_specifics.mutable_favicon_tracking()); | 1097 tracking_specifics.mutable_favicon_tracking()); |
1050 initial_tracking_data.push_back( | 1098 initial_tracking_data.push_back(syncer::SyncData::CreateRemoteData( |
1051 syncer::SyncData::CreateRemoteData(1, | 1099 1, |
1052 tracking_specifics, | 1100 tracking_specifics, |
1053 base::Time())); | 1101 base::Time(), |
1054 same_changes.push_back( | 1102 syncer::AttachmentIdList(), |
1055 syncer::SyncChange( | 1103 syncer::AttachmentServiceProxyForTest::Create())); |
1056 FROM_HERE, | 1104 same_changes.push_back(syncer::SyncChange( |
1057 syncer::SyncChange::ACTION_UPDATE, | 1105 FROM_HERE, |
1058 syncer::SyncData::CreateRemoteData(1, | 1106 syncer::SyncChange::ACTION_UPDATE, |
1059 tracking_specifics, | 1107 syncer::SyncData::CreateRemoteData( |
1060 base::Time()))); | 1108 1, |
| 1109 tracking_specifics, |
| 1110 base::Time(), |
| 1111 syncer::AttachmentIdList(), |
| 1112 syncer::AttachmentServiceProxyForTest::Create()))); |
1061 } | 1113 } |
1062 | 1114 |
1063 SetUpInitialSync(initial_image_data, initial_tracking_data); | 1115 SetUpInitialSync(initial_image_data, initial_tracking_data); |
1064 | 1116 |
1065 // Now receive the new icons as an update. | 1117 // Now receive the new icons as an update. |
1066 cache()->ProcessSyncChanges(FROM_HERE, same_changes); | 1118 cache()->ProcessSyncChanges(FROM_HERE, same_changes); |
1067 EXPECT_EQ(0U, processor()->GetAndResetChangeList().size()); | 1119 EXPECT_EQ(0U, processor()->GetAndResetChangeList().size()); |
1068 ASSERT_TRUE(VerifyLocalIcons(expected_icons)); | 1120 ASSERT_TRUE(VerifyLocalIcons(expected_icons)); |
1069 } | 1121 } |
1070 | 1122 |
1071 // Verify we can delete favicons after setting up sync. | 1123 // Verify we can delete favicons after setting up sync. |
1072 TEST_F(SyncFaviconCacheTest, DeleteFavicons) { | 1124 TEST_F(SyncFaviconCacheTest, DeleteFavicons) { |
1073 syncer::SyncDataList initial_image_data, initial_tracking_data; | 1125 syncer::SyncDataList initial_image_data, initial_tracking_data; |
1074 syncer::SyncChangeList tracking_deletions, image_deletions; | 1126 syncer::SyncChangeList tracking_deletions, image_deletions; |
1075 for (int i = 0; i < kFaviconBatchSize; ++i) { | 1127 for (int i = 0; i < kFaviconBatchSize; ++i) { |
1076 sync_pb::EntitySpecifics image_specifics, tracking_specifics; | 1128 sync_pb::EntitySpecifics image_specifics, tracking_specifics; |
1077 FillImageSpecifics(BuildFaviconData(i), | 1129 FillImageSpecifics(BuildFaviconData(i), |
1078 image_specifics.mutable_favicon_image()); | 1130 image_specifics.mutable_favicon_image()); |
1079 initial_image_data.push_back( | 1131 initial_image_data.push_back(syncer::SyncData::CreateRemoteData( |
1080 syncer::SyncData::CreateRemoteData(1, | 1132 1, |
1081 image_specifics, | 1133 image_specifics, |
1082 base::Time())); | 1134 base::Time(), |
| 1135 syncer::AttachmentIdList(), |
| 1136 syncer::AttachmentServiceProxyForTest::Create())); |
1083 FillTrackingSpecifics(BuildFaviconData(i), | 1137 FillTrackingSpecifics(BuildFaviconData(i), |
1084 tracking_specifics.mutable_favicon_tracking()); | 1138 tracking_specifics.mutable_favicon_tracking()); |
1085 initial_tracking_data.push_back( | 1139 initial_tracking_data.push_back(syncer::SyncData::CreateRemoteData( |
1086 syncer::SyncData::CreateRemoteData(1, | 1140 1, |
1087 tracking_specifics, | 1141 tracking_specifics, |
1088 base::Time())); | 1142 base::Time(), |
1089 tracking_deletions.push_back( | 1143 syncer::AttachmentIdList(), |
1090 syncer::SyncChange( | 1144 syncer::AttachmentServiceProxyForTest::Create())); |
1091 FROM_HERE, | 1145 tracking_deletions.push_back(syncer::SyncChange( |
1092 syncer::SyncChange::ACTION_DELETE, | 1146 FROM_HERE, |
1093 syncer::SyncData::CreateRemoteData(1, | 1147 syncer::SyncChange::ACTION_DELETE, |
1094 tracking_specifics, | 1148 syncer::SyncData::CreateRemoteData( |
1095 base::Time()))); | 1149 1, |
1096 image_deletions.push_back( | 1150 tracking_specifics, |
1097 syncer::SyncChange( | 1151 base::Time(), |
1098 FROM_HERE, | 1152 syncer::AttachmentIdList(), |
1099 syncer::SyncChange::ACTION_DELETE, | 1153 syncer::AttachmentServiceProxyForTest::Create()))); |
1100 syncer::SyncData::CreateRemoteData(1, | 1154 image_deletions.push_back(syncer::SyncChange( |
1101 image_specifics, | 1155 FROM_HERE, |
1102 base::Time()))); | 1156 syncer::SyncChange::ACTION_DELETE, |
| 1157 syncer::SyncData::CreateRemoteData( |
| 1158 1, |
| 1159 image_specifics, |
| 1160 base::Time(), |
| 1161 syncer::AttachmentIdList(), |
| 1162 syncer::AttachmentServiceProxyForTest::Create()))); |
1103 } | 1163 } |
1104 | 1164 |
1105 SetUpInitialSync(initial_image_data, initial_tracking_data); | 1165 SetUpInitialSync(initial_image_data, initial_tracking_data); |
1106 | 1166 |
1107 // Now receive the tracking deletions. Since we'll still have orphan data, | 1167 // Now receive the tracking deletions. Since we'll still have orphan data, |
1108 // the favicon count should remain the same. | 1168 // the favicon count should remain the same. |
1109 EXPECT_EQ((unsigned long)kFaviconBatchSize, GetFaviconCount()); | 1169 EXPECT_EQ((unsigned long)kFaviconBatchSize, GetFaviconCount()); |
1110 cache()->ProcessSyncChanges(FROM_HERE, tracking_deletions); | 1170 cache()->ProcessSyncChanges(FROM_HERE, tracking_deletions); |
1111 EXPECT_EQ(0U, processor()->GetAndResetChangeList().size()); | 1171 EXPECT_EQ(0U, processor()->GetAndResetChangeList().size()); |
1112 EXPECT_EQ((unsigned long)kFaviconBatchSize, GetFaviconCount()); | 1172 EXPECT_EQ((unsigned long)kFaviconBatchSize, GetFaviconCount()); |
1113 | 1173 |
1114 // Once the image deletions arrive, the favicon count should be 0 again. | 1174 // Once the image deletions arrive, the favicon count should be 0 again. |
1115 cache()->ProcessSyncChanges(FROM_HERE, image_deletions); | 1175 cache()->ProcessSyncChanges(FROM_HERE, image_deletions); |
1116 EXPECT_EQ(0U, processor()->GetAndResetChangeList().size()); | 1176 EXPECT_EQ(0U, processor()->GetAndResetChangeList().size()); |
1117 EXPECT_EQ(0U, GetFaviconCount()); | 1177 EXPECT_EQ(0U, GetFaviconCount()); |
1118 } | 1178 } |
1119 | 1179 |
1120 // Ensure that MergeDataAndStartSyncing enforces the sync favicon limit by | 1180 // Ensure that MergeDataAndStartSyncing enforces the sync favicon limit by |
1121 // dropping local icons. | 1181 // dropping local icons. |
1122 TEST_F(SyncFaviconCacheTest, ExpireOnMergeData) { | 1182 TEST_F(SyncFaviconCacheTest, ExpireOnMergeData) { |
1123 std::vector<int> expected_icons; | 1183 std::vector<int> expected_icons; |
1124 syncer::SyncDataList initial_image_data, initial_tracking_data; | 1184 syncer::SyncDataList initial_image_data, initial_tracking_data; |
1125 | 1185 |
1126 // Set up sync so it has the maximum number of favicons, while the local has | 1186 // Set up sync so it has the maximum number of favicons, while the local has |
1127 // the same amount of different favicons. | 1187 // the same amount of different favicons. |
1128 for (int i = 0; i < kMaxSyncFavicons; ++i) { | 1188 for (int i = 0; i < kMaxSyncFavicons; ++i) { |
1129 sync_pb::EntitySpecifics image_specifics, tracking_specifics; | 1189 sync_pb::EntitySpecifics image_specifics, tracking_specifics; |
1130 FillImageSpecifics(BuildFaviconData(i), | 1190 FillImageSpecifics(BuildFaviconData(i), |
1131 image_specifics.mutable_favicon_image()); | 1191 image_specifics.mutable_favicon_image()); |
1132 initial_image_data.push_back( | 1192 initial_image_data.push_back(syncer::SyncData::CreateRemoteData( |
1133 syncer::SyncData::CreateRemoteData(1, | 1193 1, |
1134 image_specifics, | 1194 image_specifics, |
1135 base::Time())); | 1195 base::Time(), |
| 1196 syncer::AttachmentIdList(), |
| 1197 syncer::AttachmentServiceProxyForTest::Create())); |
1136 FillTrackingSpecifics(BuildFaviconData(i), | 1198 FillTrackingSpecifics(BuildFaviconData(i), |
1137 tracking_specifics.mutable_favicon_tracking()); | 1199 tracking_specifics.mutable_favicon_tracking()); |
1138 initial_tracking_data.push_back( | 1200 initial_tracking_data.push_back(syncer::SyncData::CreateRemoteData( |
1139 syncer::SyncData::CreateRemoteData(1, | 1201 1, |
1140 tracking_specifics, | 1202 tracking_specifics, |
1141 base::Time())); | 1203 base::Time(), |
| 1204 syncer::AttachmentIdList(), |
| 1205 syncer::AttachmentServiceProxyForTest::Create())); |
1142 expected_icons.push_back(i); | 1206 expected_icons.push_back(i); |
1143 | 1207 |
1144 TestFaviconData favicon = BuildFaviconData(i+kMaxSyncFavicons); | 1208 TestFaviconData favicon = BuildFaviconData(i+kMaxSyncFavicons); |
1145 TriggerSyncFaviconReceived(favicon.page_url, | 1209 TriggerSyncFaviconReceived(favicon.page_url, |
1146 favicon.icon_url, | 1210 favicon.icon_url, |
1147 favicon.image_16, | 1211 favicon.image_16, |
1148 i+kMaxSyncFavicons); | 1212 i+kMaxSyncFavicons); |
1149 } | 1213 } |
1150 | 1214 |
1151 EXPECT_FALSE(VerifyLocalIcons(expected_icons)); | 1215 EXPECT_FALSE(VerifyLocalIcons(expected_icons)); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1189 // expirations. | 1253 // expirations. |
1190 TEST_F(SyncFaviconCacheTest, NoExpireOnProcessSyncChanges) { | 1254 TEST_F(SyncFaviconCacheTest, NoExpireOnProcessSyncChanges) { |
1191 syncer::SyncDataList initial_image_data, initial_tracking_data; | 1255 syncer::SyncDataList initial_image_data, initial_tracking_data; |
1192 syncer::SyncChangeList image_changes, tracking_changes; | 1256 syncer::SyncChangeList image_changes, tracking_changes; |
1193 std::vector<int> expected_icons; | 1257 std::vector<int> expected_icons; |
1194 for (int i = 0; i < kMaxSyncFavicons; ++i) { | 1258 for (int i = 0; i < kMaxSyncFavicons; ++i) { |
1195 expected_icons.push_back(i); | 1259 expected_icons.push_back(i); |
1196 sync_pb::EntitySpecifics image_specifics, tracking_specifics; | 1260 sync_pb::EntitySpecifics image_specifics, tracking_specifics; |
1197 FillImageSpecifics(BuildFaviconData(i), | 1261 FillImageSpecifics(BuildFaviconData(i), |
1198 image_specifics.mutable_favicon_image()); | 1262 image_specifics.mutable_favicon_image()); |
1199 initial_image_data.push_back( | 1263 initial_image_data.push_back(syncer::SyncData::CreateRemoteData( |
1200 syncer::SyncData::CreateRemoteData(1, | 1264 1, |
1201 image_specifics, | 1265 image_specifics, |
1202 base::Time())); | 1266 base::Time(), |
| 1267 syncer::AttachmentIdList(), |
| 1268 syncer::AttachmentServiceProxyForTest::Create())); |
1203 FillTrackingSpecifics(BuildFaviconData(i), | 1269 FillTrackingSpecifics(BuildFaviconData(i), |
1204 tracking_specifics.mutable_favicon_tracking()); | 1270 tracking_specifics.mutable_favicon_tracking()); |
1205 initial_tracking_data.push_back( | 1271 initial_tracking_data.push_back(syncer::SyncData::CreateRemoteData( |
1206 syncer::SyncData::CreateRemoteData(1, | 1272 1, |
1207 tracking_specifics, | 1273 tracking_specifics, |
1208 base::Time())); | 1274 base::Time(), |
| 1275 syncer::AttachmentIdList(), |
| 1276 syncer::AttachmentServiceProxyForTest::Create())); |
1209 // Set up new tracking specifics for the icons received at change time. | 1277 // Set up new tracking specifics for the icons received at change time. |
1210 expected_icons.push_back(i + kMaxSyncFavicons); | 1278 expected_icons.push_back(i + kMaxSyncFavicons); |
1211 FillImageSpecifics(BuildFaviconData(i + kMaxSyncFavicons), | 1279 FillImageSpecifics(BuildFaviconData(i + kMaxSyncFavicons), |
1212 image_specifics.mutable_favicon_image()); | 1280 image_specifics.mutable_favicon_image()); |
1213 image_changes.push_back( | 1281 image_changes.push_back(syncer::SyncChange( |
1214 syncer::SyncChange( | 1282 FROM_HERE, |
1215 FROM_HERE, | 1283 syncer::SyncChange::ACTION_ADD, |
1216 syncer::SyncChange::ACTION_ADD, | 1284 syncer::SyncData::CreateRemoteData( |
1217 syncer::SyncData::CreateRemoteData(1, | 1285 1, |
1218 image_specifics, | 1286 image_specifics, |
1219 base::Time()))); | 1287 base::Time(), |
| 1288 syncer::AttachmentIdList(), |
| 1289 syncer::AttachmentServiceProxyForTest::Create()))); |
1220 FillTrackingSpecifics(BuildFaviconData(i + kMaxSyncFavicons), | 1290 FillTrackingSpecifics(BuildFaviconData(i + kMaxSyncFavicons), |
1221 tracking_specifics.mutable_favicon_tracking()); | 1291 tracking_specifics.mutable_favicon_tracking()); |
1222 tracking_changes.push_back( | 1292 tracking_changes.push_back(syncer::SyncChange( |
1223 syncer::SyncChange( | 1293 FROM_HERE, |
1224 FROM_HERE, | 1294 syncer::SyncChange::ACTION_ADD, |
1225 syncer::SyncChange::ACTION_ADD, | 1295 syncer::SyncData::CreateRemoteData( |
1226 syncer::SyncData::CreateRemoteData(1, | 1296 1, |
1227 tracking_specifics, | 1297 tracking_specifics, |
1228 base::Time()))); | 1298 base::Time(), |
| 1299 syncer::AttachmentIdList(), |
| 1300 syncer::AttachmentServiceProxyForTest::Create()))); |
1229 } | 1301 } |
1230 | 1302 |
1231 SetUpInitialSync(initial_image_data, initial_tracking_data); | 1303 SetUpInitialSync(initial_image_data, initial_tracking_data); |
1232 | 1304 |
1233 // Now receive the new icons as an update. | 1305 // Now receive the new icons as an update. |
1234 EXPECT_EQ((unsigned long)kMaxSyncFavicons, GetFaviconCount()); | 1306 EXPECT_EQ((unsigned long)kMaxSyncFavicons, GetFaviconCount()); |
1235 cache()->ProcessSyncChanges(FROM_HERE, image_changes); | 1307 cache()->ProcessSyncChanges(FROM_HERE, image_changes); |
1236 EXPECT_EQ(0U, processor()->GetAndResetChangeList().size()); | 1308 EXPECT_EQ(0U, processor()->GetAndResetChangeList().size()); |
1237 cache()->ProcessSyncChanges(FROM_HERE, tracking_changes); | 1309 cache()->ProcessSyncChanges(FROM_HERE, tracking_changes); |
1238 EXPECT_EQ(0U, processor()->GetAndResetChangeList().size()); | 1310 EXPECT_EQ(0U, processor()->GetAndResetChangeList().size()); |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1371 syncer::SyncDataList initial_image_data, initial_tracking_data; | 1443 syncer::SyncDataList initial_image_data, initial_tracking_data; |
1372 std::vector<int> expected_icons; | 1444 std::vector<int> expected_icons; |
1373 std::vector<syncer::SyncChange::SyncChangeType> expected_deletions; | 1445 std::vector<syncer::SyncChange::SyncChangeType> expected_deletions; |
1374 for (int i = 0; i < kFaviconBatchSize; ++i) { | 1446 for (int i = 0; i < kFaviconBatchSize; ++i) { |
1375 expected_icons.push_back(i); | 1447 expected_icons.push_back(i); |
1376 expected_deletions.push_back(syncer::SyncChange::ACTION_DELETE); | 1448 expected_deletions.push_back(syncer::SyncChange::ACTION_DELETE); |
1377 TestFaviconData test_data = BuildFaviconData(i); | 1449 TestFaviconData test_data = BuildFaviconData(i); |
1378 sync_pb::EntitySpecifics image_specifics, tracking_specifics; | 1450 sync_pb::EntitySpecifics image_specifics, tracking_specifics; |
1379 FillImageSpecifics(test_data, | 1451 FillImageSpecifics(test_data, |
1380 image_specifics.mutable_favicon_image()); | 1452 image_specifics.mutable_favicon_image()); |
1381 initial_image_data.push_back( | 1453 initial_image_data.push_back(syncer::SyncData::CreateRemoteData( |
1382 syncer::SyncData::CreateRemoteData(1, | 1454 1, |
1383 image_specifics, | 1455 image_specifics, |
1384 base::Time())); | 1456 base::Time(), |
| 1457 syncer::AttachmentIdList(), |
| 1458 syncer::AttachmentServiceProxyForTest::Create())); |
1385 FillTrackingSpecifics(BuildFaviconData(i), | 1459 FillTrackingSpecifics(BuildFaviconData(i), |
1386 tracking_specifics.mutable_favicon_tracking()); | 1460 tracking_specifics.mutable_favicon_tracking()); |
1387 initial_tracking_data.push_back( | 1461 initial_tracking_data.push_back(syncer::SyncData::CreateRemoteData( |
1388 syncer::SyncData::CreateRemoteData(1, | 1462 1, |
1389 tracking_specifics, | 1463 tracking_specifics, |
1390 base::Time())); | 1464 base::Time(), |
| 1465 syncer::AttachmentIdList(), |
| 1466 syncer::AttachmentServiceProxyForTest::Create())); |
1391 } | 1467 } |
1392 | 1468 |
1393 SetUpInitialSync(initial_image_data, initial_tracking_data); | 1469 SetUpInitialSync(initial_image_data, initial_tracking_data); |
1394 syncer::SyncChangeList changes = processor()->GetAndResetChangeList(); | 1470 syncer::SyncChangeList changes = processor()->GetAndResetChangeList(); |
1395 EXPECT_TRUE(changes.empty()); | 1471 EXPECT_TRUE(changes.empty()); |
1396 | 1472 |
1397 history::URLsDeletedDetails deletions; | 1473 history::URLsDeletedDetails deletions; |
1398 deletions.all_history = true; | 1474 deletions.all_history = true; |
1399 EXPECT_EQ((unsigned long)kFaviconBatchSize, GetFaviconCount()); | 1475 EXPECT_EQ((unsigned long)kFaviconBatchSize, GetFaviconCount()); |
1400 content::NotificationService::current()->Notify( | 1476 content::NotificationService::current()->Notify( |
(...skipping 28 matching lines...) Expand all Loading... |
1429 for (int i = 0; i < kFaviconBatchSize; ++i) { | 1505 for (int i = 0; i < kFaviconBatchSize; ++i) { |
1430 TestFaviconData test_data = BuildFaviconData(i); | 1506 TestFaviconData test_data = BuildFaviconData(i); |
1431 if (i < kFaviconBatchSize/2) { | 1507 if (i < kFaviconBatchSize/2) { |
1432 expected_icons.push_back(i); | 1508 expected_icons.push_back(i); |
1433 expected_deletions.push_back(syncer::SyncChange::ACTION_DELETE); | 1509 expected_deletions.push_back(syncer::SyncChange::ACTION_DELETE); |
1434 deletions.favicon_urls.insert(test_data.icon_url); | 1510 deletions.favicon_urls.insert(test_data.icon_url); |
1435 } | 1511 } |
1436 sync_pb::EntitySpecifics image_specifics, tracking_specifics; | 1512 sync_pb::EntitySpecifics image_specifics, tracking_specifics; |
1437 FillImageSpecifics(test_data, | 1513 FillImageSpecifics(test_data, |
1438 image_specifics.mutable_favicon_image()); | 1514 image_specifics.mutable_favicon_image()); |
1439 initial_image_data.push_back( | 1515 initial_image_data.push_back(syncer::SyncData::CreateRemoteData( |
1440 syncer::SyncData::CreateRemoteData(1, | 1516 1, |
1441 image_specifics, | 1517 image_specifics, |
1442 base::Time())); | 1518 base::Time(), |
| 1519 syncer::AttachmentIdList(), |
| 1520 syncer::AttachmentServiceProxyForTest::Create())); |
1443 FillTrackingSpecifics(BuildFaviconData(i), | 1521 FillTrackingSpecifics(BuildFaviconData(i), |
1444 tracking_specifics.mutable_favicon_tracking()); | 1522 tracking_specifics.mutable_favicon_tracking()); |
1445 initial_tracking_data.push_back( | 1523 initial_tracking_data.push_back(syncer::SyncData::CreateRemoteData( |
1446 syncer::SyncData::CreateRemoteData(1, | 1524 1, |
1447 tracking_specifics, | 1525 tracking_specifics, |
1448 base::Time())); | 1526 base::Time(), |
| 1527 syncer::AttachmentIdList(), |
| 1528 syncer::AttachmentServiceProxyForTest::Create())); |
1449 } | 1529 } |
1450 | 1530 |
1451 SetUpInitialSync(initial_image_data, initial_tracking_data); | 1531 SetUpInitialSync(initial_image_data, initial_tracking_data); |
1452 syncer::SyncChangeList changes = processor()->GetAndResetChangeList(); | 1532 syncer::SyncChangeList changes = processor()->GetAndResetChangeList(); |
1453 EXPECT_TRUE(changes.empty()); | 1533 EXPECT_TRUE(changes.empty()); |
1454 | 1534 |
1455 EXPECT_EQ((unsigned long)kFaviconBatchSize, GetFaviconCount()); | 1535 EXPECT_EQ((unsigned long)kFaviconBatchSize, GetFaviconCount()); |
1456 content::NotificationService::current()->Notify( | 1536 content::NotificationService::current()->Notify( |
1457 chrome::NOTIFICATION_HISTORY_URLS_DELETED, | 1537 chrome::NOTIFICATION_HISTORY_URLS_DELETED, |
1458 content::Source<Profile>(NULL), | 1538 content::Source<Profile>(NULL), |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1550 syncer::SyncChangeList initial_image_changes; | 1630 syncer::SyncChangeList initial_image_changes; |
1551 syncer::SyncChangeList initial_tracking_changes; | 1631 syncer::SyncChangeList initial_tracking_changes; |
1552 for (int i = 0; i < kFaviconBatchSize; ++i) { | 1632 for (int i = 0; i < kFaviconBatchSize; ++i) { |
1553 TestFaviconData test_data = BuildFaviconData(i); | 1633 TestFaviconData test_data = BuildFaviconData(i); |
1554 // Even favicons have image data but no tracking data. Odd favicons have | 1634 // Even favicons have image data but no tracking data. Odd favicons have |
1555 // tracking data but no image data. | 1635 // tracking data but no image data. |
1556 if (i % 2 == 0) { | 1636 if (i % 2 == 0) { |
1557 sync_pb::EntitySpecifics image_specifics; | 1637 sync_pb::EntitySpecifics image_specifics; |
1558 FillImageSpecifics(BuildFaviconData(i), | 1638 FillImageSpecifics(BuildFaviconData(i), |
1559 image_specifics.mutable_favicon_image()); | 1639 image_specifics.mutable_favicon_image()); |
1560 initial_image_changes.push_back( | 1640 initial_image_changes.push_back(syncer::SyncChange( |
1561 syncer::SyncChange(FROM_HERE, | 1641 FROM_HERE, |
1562 syncer::SyncChange::ACTION_ADD, | 1642 syncer::SyncChange::ACTION_ADD, |
1563 syncer::SyncData::CreateRemoteData( | 1643 syncer::SyncData::CreateRemoteData( |
1564 1, image_specifics, base::Time()))); | 1644 1, |
| 1645 image_specifics, |
| 1646 base::Time(), |
| 1647 syncer::AttachmentIdList(), |
| 1648 syncer::AttachmentServiceProxyForTest::Create()))); |
1565 } else { | 1649 } else { |
1566 sync_pb::EntitySpecifics tracking_specifics; | 1650 sync_pb::EntitySpecifics tracking_specifics; |
1567 FillTrackingSpecifics(BuildFaviconData(i), | 1651 FillTrackingSpecifics(BuildFaviconData(i), |
1568 tracking_specifics.mutable_favicon_tracking()); | 1652 tracking_specifics.mutable_favicon_tracking()); |
1569 initial_tracking_changes.push_back( | 1653 initial_tracking_changes.push_back(syncer::SyncChange( |
1570 syncer::SyncChange(FROM_HERE, | 1654 FROM_HERE, |
1571 syncer::SyncChange::ACTION_ADD, | 1655 syncer::SyncChange::ACTION_ADD, |
1572 syncer::SyncData::CreateRemoteData( | 1656 syncer::SyncData::CreateRemoteData( |
1573 1, tracking_specifics, base::Time()))); | 1657 1, |
| 1658 tracking_specifics, |
| 1659 base::Time(), |
| 1660 syncer::AttachmentIdList(), |
| 1661 syncer::AttachmentServiceProxyForTest::Create()))); |
1574 } | 1662 } |
1575 } | 1663 } |
1576 | 1664 |
1577 cache()->ProcessSyncChanges(FROM_HERE, initial_image_changes); | 1665 cache()->ProcessSyncChanges(FROM_HERE, initial_image_changes); |
1578 cache()->ProcessSyncChanges(FROM_HERE, initial_tracking_changes); | 1666 cache()->ProcessSyncChanges(FROM_HERE, initial_tracking_changes); |
1579 EXPECT_EQ(0U, processor()->GetAndResetChangeList().size()); | 1667 EXPECT_EQ(0U, processor()->GetAndResetChangeList().size()); |
1580 EXPECT_EQ((unsigned long)kFaviconBatchSize, GetFaviconCount()); | 1668 EXPECT_EQ((unsigned long)kFaviconBatchSize, GetFaviconCount()); |
1581 | 1669 |
1582 for (int i = 0; i < kFaviconBatchSize/2; ++i) { | 1670 for (int i = 0; i < kFaviconBatchSize/2; ++i) { |
1583 TestFaviconData test_data = BuildFaviconData(i); | 1671 TestFaviconData test_data = BuildFaviconData(i); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1622 } | 1710 } |
1623 | 1711 |
1624 // Verify that orphaned favicon images don't result in creating invalid | 1712 // Verify that orphaned favicon images don't result in creating invalid |
1625 // favicon tracking data. | 1713 // favicon tracking data. |
1626 TEST_F(SyncFaviconCacheTest, PartialAssociationInfo) { | 1714 TEST_F(SyncFaviconCacheTest, PartialAssociationInfo) { |
1627 syncer::SyncDataList initial_image_data, initial_tracking_data; | 1715 syncer::SyncDataList initial_image_data, initial_tracking_data; |
1628 for (int i = 0; i < kFaviconBatchSize; ++i) { | 1716 for (int i = 0; i < kFaviconBatchSize; ++i) { |
1629 sync_pb::EntitySpecifics image_specifics; | 1717 sync_pb::EntitySpecifics image_specifics; |
1630 FillImageSpecifics(BuildFaviconData(i), | 1718 FillImageSpecifics(BuildFaviconData(i), |
1631 image_specifics.mutable_favicon_image()); | 1719 image_specifics.mutable_favicon_image()); |
1632 initial_image_data.push_back( | 1720 initial_image_data.push_back(syncer::SyncData::CreateRemoteData( |
1633 syncer::SyncData::CreateRemoteData(1, | 1721 1, |
1634 image_specifics, | 1722 image_specifics, |
1635 base::Time())); | 1723 base::Time(), |
| 1724 syncer::AttachmentIdList(), |
| 1725 syncer::AttachmentServiceProxyForTest::Create())); |
1636 image_specifics.mutable_favicon_image()->clear_favicon_web(); | 1726 image_specifics.mutable_favicon_image()->clear_favicon_web(); |
1637 } | 1727 } |
1638 | 1728 |
1639 SetUpInitialSync(initial_image_data, initial_tracking_data); | 1729 SetUpInitialSync(initial_image_data, initial_tracking_data); |
1640 syncer::SyncChangeList change_list = processor()->GetAndResetChangeList(); | 1730 syncer::SyncChangeList change_list = processor()->GetAndResetChangeList(); |
1641 EXPECT_TRUE(change_list.empty()); | 1731 EXPECT_TRUE(change_list.empty()); |
1642 EXPECT_EQ((unsigned long)kFaviconBatchSize, GetFaviconCount()); | 1732 EXPECT_EQ((unsigned long)kFaviconBatchSize, GetFaviconCount()); |
1643 } | 1733 } |
1644 | 1734 |
1645 // Tests that we don't choke if a favicon visit node with a null visit time is | 1735 // Tests that we don't choke if a favicon visit node with a null visit time is |
1646 // present (see crbug.com/258196) and an update is made. | 1736 // present (see crbug.com/258196) and an update is made. |
1647 TEST_F(SyncFaviconCacheTest, NullFaviconVisitTime) { | 1737 TEST_F(SyncFaviconCacheTest, NullFaviconVisitTime) { |
1648 EXPECT_EQ(0U, GetFaviconCount()); | 1738 EXPECT_EQ(0U, GetFaviconCount()); |
1649 | 1739 |
1650 syncer::SyncDataList initial_image_data, initial_tracking_data; | 1740 syncer::SyncDataList initial_image_data, initial_tracking_data; |
1651 std::vector<int> expected_icons; | 1741 std::vector<int> expected_icons; |
1652 for (int i = 0; i < kFaviconBatchSize; ++i) { | 1742 for (int i = 0; i < kFaviconBatchSize; ++i) { |
1653 expected_icons.push_back(i); | 1743 expected_icons.push_back(i); |
1654 sync_pb::EntitySpecifics image_specifics, tracking_specifics; | 1744 sync_pb::EntitySpecifics image_specifics, tracking_specifics; |
1655 FillImageSpecifics(BuildFaviconData(i), | 1745 FillImageSpecifics(BuildFaviconData(i), |
1656 image_specifics.mutable_favicon_image()); | 1746 image_specifics.mutable_favicon_image()); |
1657 initial_image_data.push_back( | 1747 initial_image_data.push_back(syncer::SyncData::CreateRemoteData( |
1658 syncer::SyncData::CreateRemoteData(1, | 1748 1, |
1659 image_specifics, | 1749 image_specifics, |
1660 base::Time())); | 1750 base::Time(), |
| 1751 syncer::AttachmentIdList(), |
| 1752 syncer::AttachmentServiceProxyForTest::Create())); |
1661 FillTrackingSpecifics(BuildFaviconData(i), | 1753 FillTrackingSpecifics(BuildFaviconData(i), |
1662 tracking_specifics.mutable_favicon_tracking()); | 1754 tracking_specifics.mutable_favicon_tracking()); |
1663 tracking_specifics.mutable_favicon_tracking()->set_last_visit_time_ms( | 1755 tracking_specifics.mutable_favicon_tracking()->set_last_visit_time_ms( |
1664 syncer::TimeToProtoTime(base::Time())); | 1756 syncer::TimeToProtoTime(base::Time())); |
1665 initial_tracking_data.push_back( | 1757 initial_tracking_data.push_back(syncer::SyncData::CreateRemoteData( |
1666 syncer::SyncData::CreateRemoteData(1, | 1758 1, |
1667 tracking_specifics, | 1759 tracking_specifics, |
1668 base::Time())); | 1760 base::Time(), |
| 1761 syncer::AttachmentIdList(), |
| 1762 syncer::AttachmentServiceProxyForTest::Create())); |
1669 } | 1763 } |
1670 | 1764 |
1671 cache()->MergeDataAndStartSyncing(syncer::FAVICON_IMAGES, | 1765 cache()->MergeDataAndStartSyncing(syncer::FAVICON_IMAGES, |
1672 initial_image_data, | 1766 initial_image_data, |
1673 CreateAndPassProcessor(), | 1767 CreateAndPassProcessor(), |
1674 CreateAndPassSyncErrorFactory()); | 1768 CreateAndPassSyncErrorFactory()); |
1675 ASSERT_EQ(0U, processor()->GetAndResetChangeList().size()); | 1769 ASSERT_EQ(0U, processor()->GetAndResetChangeList().size()); |
1676 cache()->MergeDataAndStartSyncing(syncer::FAVICON_TRACKING, | 1770 cache()->MergeDataAndStartSyncing(syncer::FAVICON_TRACKING, |
1677 initial_tracking_data, | 1771 initial_tracking_data, |
1678 CreateAndPassProcessor(), | 1772 CreateAndPassProcessor(), |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1713 // future. | 1807 // future. |
1714 syncer::SyncDataList initial_image_data, initial_tracking_data; | 1808 syncer::SyncDataList initial_image_data, initial_tracking_data; |
1715 for (int i = 0; i < kMaxSyncFavicons; ++i) { | 1809 for (int i = 0; i < kMaxSyncFavicons; ++i) { |
1716 sync_pb::EntitySpecifics image_specifics, tracking_specifics; | 1810 sync_pb::EntitySpecifics image_specifics, tracking_specifics; |
1717 TestFaviconData test_data = BuildFaviconData(i); | 1811 TestFaviconData test_data = BuildFaviconData(i); |
1718 test_data.last_visit_time = | 1812 test_data.last_visit_time = |
1719 syncer::TimeToProtoTime( | 1813 syncer::TimeToProtoTime( |
1720 base::Time::Now() + base::TimeDelta::FromMinutes(kClockSkew)); | 1814 base::Time::Now() + base::TimeDelta::FromMinutes(kClockSkew)); |
1721 FillImageSpecifics(test_data, | 1815 FillImageSpecifics(test_data, |
1722 image_specifics.mutable_favicon_image()); | 1816 image_specifics.mutable_favicon_image()); |
1723 initial_image_data.push_back( | 1817 initial_image_data.push_back(syncer::SyncData::CreateRemoteData( |
1724 syncer::SyncData::CreateRemoteData(1, | 1818 1, |
1725 image_specifics, | 1819 image_specifics, |
1726 base::Time())); | 1820 base::Time(), |
| 1821 syncer::AttachmentIdList(), |
| 1822 syncer::AttachmentServiceProxyForTest::Create())); |
1727 FillTrackingSpecifics(test_data, | 1823 FillTrackingSpecifics(test_data, |
1728 tracking_specifics.mutable_favicon_tracking()); | 1824 tracking_specifics.mutable_favicon_tracking()); |
1729 initial_tracking_data.push_back( | 1825 initial_tracking_data.push_back(syncer::SyncData::CreateRemoteData( |
1730 syncer::SyncData::CreateRemoteData(1, | 1826 1, |
1731 tracking_specifics, | 1827 tracking_specifics, |
1732 base::Time())); | 1828 base::Time(), |
| 1829 syncer::AttachmentIdList(), |
| 1830 syncer::AttachmentServiceProxyForTest::Create())); |
1733 } | 1831 } |
1734 SetUpInitialSync(initial_image_data, initial_tracking_data); | 1832 SetUpInitialSync(initial_image_data, initial_tracking_data); |
1735 | 1833 |
1736 // Visit some new favicons with local time, which will be expired as they | 1834 // Visit some new favicons with local time, which will be expired as they |
1737 // are added. | 1835 // are added. |
1738 EXPECT_EQ(0U, GetTaskCount()); | 1836 EXPECT_EQ(0U, GetTaskCount()); |
1739 for (int i = 0; i < kClockSkew; ++i) { | 1837 for (int i = 0; i < kClockSkew; ++i) { |
1740 TestFaviconData test_data = BuildFaviconData(i + kMaxSyncFavicons); | 1838 TestFaviconData test_data = BuildFaviconData(i + kMaxSyncFavicons); |
1741 cache()->OnFaviconVisited(test_data.page_url, test_data.icon_url); | 1839 cache()->OnFaviconVisited(test_data.page_url, test_data.icon_url); |
1742 OnCustomFaviconDataAvailable(test_data); | 1840 OnCustomFaviconDataAvailable(test_data); |
(...skipping 29 matching lines...) Expand all Loading... |
1772 } | 1870 } |
1773 | 1871 |
1774 syncer::SyncDataList initial_image_data, initial_tracking_data; | 1872 syncer::SyncDataList initial_image_data, initial_tracking_data; |
1775 // Then sync with enough favicons such that the tracking info is over the max | 1873 // Then sync with enough favicons such that the tracking info is over the max |
1776 // after merge completes. | 1874 // after merge completes. |
1777 for (int i = 0; i < kMaxSyncFavicons; ++i) { | 1875 for (int i = 0; i < kMaxSyncFavicons; ++i) { |
1778 sync_pb::EntitySpecifics image_specifics; | 1876 sync_pb::EntitySpecifics image_specifics; |
1779 // Push the images forward by 5, to match the unsynced favicons. | 1877 // Push the images forward by 5, to match the unsynced favicons. |
1780 FillImageSpecifics(BuildFaviconData(i + 5), | 1878 FillImageSpecifics(BuildFaviconData(i + 5), |
1781 image_specifics.mutable_favicon_image()); | 1879 image_specifics.mutable_favicon_image()); |
1782 initial_image_data.push_back( | 1880 initial_image_data.push_back(syncer::SyncData::CreateRemoteData( |
1783 syncer::SyncData::CreateRemoteData(1, | 1881 1, |
1784 image_specifics, | 1882 image_specifics, |
1785 base::Time())); | 1883 base::Time(), |
| 1884 syncer::AttachmentIdList(), |
| 1885 syncer::AttachmentServiceProxyForTest::Create())); |
1786 | 1886 |
1787 sync_pb::EntitySpecifics tracking_specifics; | 1887 sync_pb::EntitySpecifics tracking_specifics; |
1788 FillTrackingSpecifics(BuildFaviconData(i), | 1888 FillTrackingSpecifics(BuildFaviconData(i), |
1789 tracking_specifics.mutable_favicon_tracking()); | 1889 tracking_specifics.mutable_favicon_tracking()); |
1790 initial_tracking_data.push_back( | 1890 initial_tracking_data.push_back(syncer::SyncData::CreateRemoteData( |
1791 syncer::SyncData::CreateRemoteData(1, | 1891 1, |
1792 tracking_specifics, | 1892 tracking_specifics, |
1793 base::Time())); | 1893 base::Time(), |
| 1894 syncer::AttachmentIdList(), |
| 1895 syncer::AttachmentServiceProxyForTest::Create())); |
1794 } | 1896 } |
1795 SetUpInitialSync(initial_image_data, initial_tracking_data); | 1897 SetUpInitialSync(initial_image_data, initial_tracking_data); |
1796 | 1898 |
1797 // The local unsynced tracking info should be dropped, but not deleted. | 1899 // The local unsynced tracking info should be dropped, but not deleted. |
1798 EXPECT_EQ(0U, processor()->GetAndResetChangeList().size()); | 1900 EXPECT_EQ(0U, processor()->GetAndResetChangeList().size()); |
1799 | 1901 |
1800 // Because the image and tracking data don't overlap, the total number of | 1902 // Because the image and tracking data don't overlap, the total number of |
1801 // favicons is still over the limit. | 1903 // favicons is still over the limit. |
1802 EXPECT_EQ((unsigned long)kMaxSyncFavicons + 5, GetFaviconCount()); | 1904 EXPECT_EQ((unsigned long)kMaxSyncFavicons + 5, GetFaviconCount()); |
1803 | 1905 |
(...skipping 26 matching lines...) Expand all Loading... |
1830 EXPECT_EQ(changes[4].change_type(), syncer::SyncChange::ACTION_ADD); | 1932 EXPECT_EQ(changes[4].change_type(), syncer::SyncChange::ACTION_ADD); |
1831 EXPECT_EQ(changes[4].sync_data().GetDataType(), syncer::FAVICON_TRACKING); | 1933 EXPECT_EQ(changes[4].sync_data().GetDataType(), syncer::FAVICON_TRACKING); |
1832 EXPECT_EQ(kMaxSyncFavicons, GetFaviconId(changes[4])); | 1934 EXPECT_EQ(kMaxSyncFavicons, GetFaviconId(changes[4])); |
1833 // Expire tracking for favicon[0]. | 1935 // Expire tracking for favicon[0]. |
1834 EXPECT_EQ(changes[5].change_type(), syncer::SyncChange::ACTION_DELETE); | 1936 EXPECT_EQ(changes[5].change_type(), syncer::SyncChange::ACTION_DELETE); |
1835 EXPECT_EQ(changes[5].sync_data().GetDataType(), syncer::FAVICON_TRACKING); | 1937 EXPECT_EQ(changes[5].sync_data().GetDataType(), syncer::FAVICON_TRACKING); |
1836 EXPECT_EQ(0, GetFaviconId(changes[5])); | 1938 EXPECT_EQ(0, GetFaviconId(changes[5])); |
1837 } | 1939 } |
1838 | 1940 |
1839 } // namespace browser_sync | 1941 } // namespace browser_sync |
OLD | NEW |