| 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 |