| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 <set> | 5 #include <set> |
| 6 #include <string> | 6 #include <string> |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 | 10 |
| (...skipping 772 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 783 ASSERT_TRUE(task.success()); | 783 ASSERT_TRUE(task.success()); |
| 784 | 784 |
| 785 AutofillEntry added_entry(MakeAutofillEntry("added", "entry", 1)); | 785 AutofillEntry added_entry(MakeAutofillEntry("added", "entry", 1)); |
| 786 std::vector<base::Time> timestamps(added_entry.timestamps()); | 786 std::vector<base::Time> timestamps(added_entry.timestamps()); |
| 787 | 787 |
| 788 EXPECT_CALL(web_database_, GetAutofillTimestamps(_, _, _)). | 788 EXPECT_CALL(web_database_, GetAutofillTimestamps(_, _, _)). |
| 789 WillOnce(DoAll(SetArgumentPointee<2>(timestamps), Return(true))); | 789 WillOnce(DoAll(SetArgumentPointee<2>(timestamps), Return(true))); |
| 790 | 790 |
| 791 AutofillChangeList changes; | 791 AutofillChangeList changes; |
| 792 changes.push_back(AutofillChange(AutofillChange::ADD, added_entry.key())); | 792 changes.push_back(AutofillChange(AutofillChange::ADD, added_entry.key())); |
| 793 scoped_refptr<ThreadNotifier> notifier = new ThreadNotifier(&db_thread_); | 793 scoped_refptr<ThreadNotifier> notifier(new ThreadNotifier(&db_thread_)); |
| 794 notifier->Notify(NotificationType::AUTOFILL_ENTRIES_CHANGED, | 794 notifier->Notify(NotificationType::AUTOFILL_ENTRIES_CHANGED, |
| 795 Source<WebDataService>(web_data_service_.get()), | 795 Source<WebDataService>(web_data_service_.get()), |
| 796 Details<AutofillChangeList>(&changes)); | 796 Details<AutofillChangeList>(&changes)); |
| 797 | 797 |
| 798 std::vector<AutofillEntry> new_sync_entries; | 798 std::vector<AutofillEntry> new_sync_entries; |
| 799 std::vector<AutoFillProfile> new_sync_profiles; | 799 std::vector<AutoFillProfile> new_sync_profiles; |
| 800 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&new_sync_entries, | 800 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&new_sync_entries, |
| 801 &new_sync_profiles)); | 801 &new_sync_profiles)); |
| 802 ASSERT_EQ(1U, new_sync_entries.size()); | 802 ASSERT_EQ(1U, new_sync_entries.size()); |
| 803 EXPECT_TRUE(added_entry == new_sync_entries[0]); | 803 EXPECT_TRUE(added_entry == new_sync_entries[0]); |
| 804 } | 804 } |
| 805 | 805 |
| 806 TEST_F(ProfileSyncServiceAutofillTest, ProcessUserChangeAddProfile) { | 806 TEST_F(ProfileSyncServiceAutofillTest, ProcessUserChangeAddProfile) { |
| 807 EXPECT_CALL(web_database_, GetAllAutofillEntries(_)).WillOnce(Return(true)); | 807 EXPECT_CALL(web_database_, GetAllAutofillEntries(_)).WillOnce(Return(true)); |
| 808 EXPECT_CALL(web_database_, GetAutoFillProfiles(_)).WillOnce(Return(true)); | 808 EXPECT_CALL(web_database_, GetAutoFillProfiles(_)).WillOnce(Return(true)); |
| 809 EXPECT_CALL(*personal_data_manager_, Refresh()); | 809 EXPECT_CALL(*personal_data_manager_, Refresh()); |
| 810 SetIdleChangeProcessorExpectations(); | 810 SetIdleChangeProcessorExpectations(); |
| 811 CreateRootTask task(this, syncable::AUTOFILL); | 811 CreateRootTask task(this, syncable::AUTOFILL); |
| 812 StartSyncService(&task, false); | 812 StartSyncService(&task, false); |
| 813 ASSERT_TRUE(task.success()); | 813 ASSERT_TRUE(task.success()); |
| 814 | 814 |
| 815 AutoFillProfile added_profile(string16(), 0); | 815 AutoFillProfile added_profile(string16(), 0); |
| 816 autofill_test::SetProfileInfo(&added_profile, | 816 autofill_test::SetProfileInfo(&added_profile, |
| 817 "Billing", "Josephine", "Alicia", "Saenz", | 817 "Billing", "Josephine", "Alicia", "Saenz", |
| 818 "joewayne@me.xyz", "Fox", "1212 Center.", "Bld. 5", "Orlando", "FL", | 818 "joewayne@me.xyz", "Fox", "1212 Center.", "Bld. 5", "Orlando", "FL", |
| 819 "32801", "US", "19482937549", "13502849239"); | 819 "32801", "US", "19482937549", "13502849239"); |
| 820 | 820 |
| 821 AutofillProfileChange change(AutofillProfileChange::ADD, | 821 AutofillProfileChange change(AutofillProfileChange::ADD, |
| 822 added_profile.Label(), &added_profile, string16()); | 822 added_profile.Label(), &added_profile, string16()); |
| 823 scoped_refptr<ThreadNotifier> notifier = new ThreadNotifier(&db_thread_); | 823 scoped_refptr<ThreadNotifier> notifier(new ThreadNotifier(&db_thread_)); |
| 824 notifier->Notify(NotificationType::AUTOFILL_PROFILE_CHANGED, | 824 notifier->Notify(NotificationType::AUTOFILL_PROFILE_CHANGED, |
| 825 Source<WebDataService>(web_data_service_.get()), | 825 Source<WebDataService>(web_data_service_.get()), |
| 826 Details<AutofillProfileChange>(&change)); | 826 Details<AutofillProfileChange>(&change)); |
| 827 | 827 |
| 828 std::vector<AutofillEntry> new_sync_entries; | 828 std::vector<AutofillEntry> new_sync_entries; |
| 829 std::vector<AutoFillProfile> new_sync_profiles; | 829 std::vector<AutoFillProfile> new_sync_profiles; |
| 830 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&new_sync_entries, | 830 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&new_sync_entries, |
| 831 &new_sync_profiles)); | 831 &new_sync_profiles)); |
| 832 ASSERT_EQ(1U, new_sync_profiles.size()); | 832 ASSERT_EQ(1U, new_sync_profiles.size()); |
| 833 // TODO(dhollowa): Replace with |AutoFillProfile::Compare|. | 833 // TODO(dhollowa): Replace with |AutoFillProfile::Compare|. |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 865 | 865 |
| 866 AutofillProfileChange change(AutofillProfileChange::ADD, | 866 AutofillProfileChange change(AutofillProfileChange::ADD, |
| 867 added_profile.Label(), &added_profile, string16()); | 867 added_profile.Label(), &added_profile, string16()); |
| 868 | 868 |
| 869 AutoFillProfile relabelled_profile; | 869 AutoFillProfile relabelled_profile; |
| 870 EXPECT_CALL(web_database_, UpdateAutoFillProfile( | 870 EXPECT_CALL(web_database_, UpdateAutoFillProfile( |
| 871 ProfileMatchesExceptLabel(added_profile))). | 871 ProfileMatchesExceptLabel(added_profile))). |
| 872 WillOnce(DoAll(SaveArg<0>(&relabelled_profile), Return(true))); | 872 WillOnce(DoAll(SaveArg<0>(&relabelled_profile), Return(true))); |
| 873 EXPECT_CALL(*personal_data_manager_, Refresh()); | 873 EXPECT_CALL(*personal_data_manager_, Refresh()); |
| 874 | 874 |
| 875 scoped_refptr<ThreadNotifier> notifier = new ThreadNotifier(&db_thread_); | 875 scoped_refptr<ThreadNotifier> notifier(new ThreadNotifier(&db_thread_)); |
| 876 notifier->Notify(NotificationType::AUTOFILL_PROFILE_CHANGED, | 876 notifier->Notify(NotificationType::AUTOFILL_PROFILE_CHANGED, |
| 877 Source<WebDataService>(web_data_service_.get()), | 877 Source<WebDataService>(web_data_service_.get()), |
| 878 Details<AutofillProfileChange>(&change)); | 878 Details<AutofillProfileChange>(&change)); |
| 879 | 879 |
| 880 std::vector<AutofillEntry> new_sync_entries; | 880 std::vector<AutofillEntry> new_sync_entries; |
| 881 std::vector<AutoFillProfile> new_sync_profiles; | 881 std::vector<AutoFillProfile> new_sync_profiles; |
| 882 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&new_sync_entries, | 882 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&new_sync_entries, |
| 883 &new_sync_profiles)); | 883 &new_sync_profiles)); |
| 884 ASSERT_EQ(2U, new_sync_profiles.size()); | 884 ASSERT_EQ(2U, new_sync_profiles.size()); |
| 885 sync_profile.set_unique_id(0); // The sync DB doesn't store IDs. | 885 sync_profile.set_unique_id(0); // The sync DB doesn't store IDs. |
| (...skipping 18 matching lines...) Expand all Loading... |
| 904 | 904 |
| 905 AutofillEntry updated_entry(MakeAutofillEntry("my", "entry", 1, 2)); | 905 AutofillEntry updated_entry(MakeAutofillEntry("my", "entry", 1, 2)); |
| 906 std::vector<base::Time> timestamps(updated_entry.timestamps()); | 906 std::vector<base::Time> timestamps(updated_entry.timestamps()); |
| 907 | 907 |
| 908 EXPECT_CALL(web_database_, GetAutofillTimestamps(_, _, _)). | 908 EXPECT_CALL(web_database_, GetAutofillTimestamps(_, _, _)). |
| 909 WillOnce(DoAll(SetArgumentPointee<2>(timestamps), Return(true))); | 909 WillOnce(DoAll(SetArgumentPointee<2>(timestamps), Return(true))); |
| 910 | 910 |
| 911 AutofillChangeList changes; | 911 AutofillChangeList changes; |
| 912 changes.push_back(AutofillChange(AutofillChange::UPDATE, | 912 changes.push_back(AutofillChange(AutofillChange::UPDATE, |
| 913 updated_entry.key())); | 913 updated_entry.key())); |
| 914 scoped_refptr<ThreadNotifier> notifier = new ThreadNotifier(&db_thread_); | 914 scoped_refptr<ThreadNotifier> notifier(new ThreadNotifier(&db_thread_)); |
| 915 notifier->Notify(NotificationType::AUTOFILL_ENTRIES_CHANGED, | 915 notifier->Notify(NotificationType::AUTOFILL_ENTRIES_CHANGED, |
| 916 Source<WebDataService>(web_data_service_.get()), | 916 Source<WebDataService>(web_data_service_.get()), |
| 917 Details<AutofillChangeList>(&changes)); | 917 Details<AutofillChangeList>(&changes)); |
| 918 | 918 |
| 919 std::vector<AutofillEntry> new_sync_entries; | 919 std::vector<AutofillEntry> new_sync_entries; |
| 920 std::vector<AutoFillProfile> new_sync_profiles; | 920 std::vector<AutoFillProfile> new_sync_profiles; |
| 921 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&new_sync_entries, | 921 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&new_sync_entries, |
| 922 &new_sync_profiles)); | 922 &new_sync_profiles)); |
| 923 ASSERT_EQ(1U, new_sync_entries.size()); | 923 ASSERT_EQ(1U, new_sync_entries.size()); |
| 924 EXPECT_TRUE(updated_entry == new_sync_entries[0]); | 924 EXPECT_TRUE(updated_entry == new_sync_entries[0]); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 943 | 943 |
| 944 AutoFillProfile update_profile(string16(), 0); | 944 AutoFillProfile update_profile(string16(), 0); |
| 945 autofill_test::SetProfileInfo(&update_profile, | 945 autofill_test::SetProfileInfo(&update_profile, |
| 946 "Billing", "Changin'", "Mah", "Namez", | 946 "Billing", "Changin'", "Mah", "Namez", |
| 947 "joewayne@me.xyz", "Fox", "1212 Center.", "Bld. 5", "Orlando", "FL", | 947 "joewayne@me.xyz", "Fox", "1212 Center.", "Bld. 5", "Orlando", "FL", |
| 948 "32801", "US", "19482937549", "13502849239"); | 948 "32801", "US", "19482937549", "13502849239"); |
| 949 | 949 |
| 950 AutofillProfileChange change(AutofillProfileChange::UPDATE, | 950 AutofillProfileChange change(AutofillProfileChange::UPDATE, |
| 951 update_profile.Label(), &update_profile, | 951 update_profile.Label(), &update_profile, |
| 952 ASCIIToUTF16("Billing")); | 952 ASCIIToUTF16("Billing")); |
| 953 scoped_refptr<ThreadNotifier> notifier = new ThreadNotifier(&db_thread_); | 953 scoped_refptr<ThreadNotifier> notifier(new ThreadNotifier(&db_thread_)); |
| 954 notifier->Notify(NotificationType::AUTOFILL_PROFILE_CHANGED, | 954 notifier->Notify(NotificationType::AUTOFILL_PROFILE_CHANGED, |
| 955 Source<WebDataService>(web_data_service_.get()), | 955 Source<WebDataService>(web_data_service_.get()), |
| 956 Details<AutofillProfileChange>(&change)); | 956 Details<AutofillProfileChange>(&change)); |
| 957 | 957 |
| 958 std::vector<AutofillEntry> new_sync_entries; | 958 std::vector<AutofillEntry> new_sync_entries; |
| 959 std::vector<AutoFillProfile> new_sync_profiles; | 959 std::vector<AutoFillProfile> new_sync_profiles; |
| 960 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&new_sync_entries, | 960 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&new_sync_entries, |
| 961 &new_sync_profiles)); | 961 &new_sync_profiles)); |
| 962 ASSERT_EQ(1U, new_sync_profiles.size()); | 962 ASSERT_EQ(1U, new_sync_profiles.size()); |
| 963 // TODO(dhollowa): Replace with |AutoFillProfile::Compare|. | 963 // TODO(dhollowa): Replace with |AutoFillProfile::Compare|. |
| (...skipping 19 matching lines...) Expand all Loading... |
| 983 | 983 |
| 984 AutoFillProfile update_profile(string16(), 0); | 984 AutoFillProfile update_profile(string16(), 0); |
| 985 autofill_test::SetProfileInfo(&update_profile, | 985 autofill_test::SetProfileInfo(&update_profile, |
| 986 "TRYIN 2 FOOL U", "Josephine", "Alicia", "Saenz", | 986 "TRYIN 2 FOOL U", "Josephine", "Alicia", "Saenz", |
| 987 "joewayne@me.xyz", "Fox", "1212 Center.", "Bld. 5", "Orlando", "FL", | 987 "joewayne@me.xyz", "Fox", "1212 Center.", "Bld. 5", "Orlando", "FL", |
| 988 "32801", "US", "19482937549", "13502849239"); | 988 "32801", "US", "19482937549", "13502849239"); |
| 989 | 989 |
| 990 AutofillProfileChange change(AutofillProfileChange::UPDATE, | 990 AutofillProfileChange change(AutofillProfileChange::UPDATE, |
| 991 update_profile.Label(), &update_profile, | 991 update_profile.Label(), &update_profile, |
| 992 ASCIIToUTF16("Billing")); | 992 ASCIIToUTF16("Billing")); |
| 993 scoped_refptr<ThreadNotifier> notifier = new ThreadNotifier(&db_thread_); | 993 scoped_refptr<ThreadNotifier> notifier(new ThreadNotifier(&db_thread_)); |
| 994 notifier->Notify(NotificationType::AUTOFILL_PROFILE_CHANGED, | 994 notifier->Notify(NotificationType::AUTOFILL_PROFILE_CHANGED, |
| 995 Source<WebDataService>(web_data_service_.get()), | 995 Source<WebDataService>(web_data_service_.get()), |
| 996 Details<AutofillProfileChange>(&change)); | 996 Details<AutofillProfileChange>(&change)); |
| 997 | 997 |
| 998 std::vector<AutofillEntry> new_sync_entries; | 998 std::vector<AutofillEntry> new_sync_entries; |
| 999 std::vector<AutoFillProfile> new_sync_profiles; | 999 std::vector<AutoFillProfile> new_sync_profiles; |
| 1000 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&new_sync_entries, | 1000 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&new_sync_entries, |
| 1001 &new_sync_profiles)); | 1001 &new_sync_profiles)); |
| 1002 ASSERT_EQ(1U, new_sync_profiles.size()); | 1002 ASSERT_EQ(1U, new_sync_profiles.size()); |
| 1003 // TODO(dhollowa): Replace with |AutoFillProfile::Compare|. | 1003 // TODO(dhollowa): Replace with |AutoFillProfile::Compare|. |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1042 | 1042 |
| 1043 AutoFillProfile relabelled_profile; | 1043 AutoFillProfile relabelled_profile; |
| 1044 EXPECT_CALL(web_database_, UpdateAutoFillProfile( | 1044 EXPECT_CALL(web_database_, UpdateAutoFillProfile( |
| 1045 ProfileMatchesExceptLabel(josephine_update))). | 1045 ProfileMatchesExceptLabel(josephine_update))). |
| 1046 WillOnce(DoAll(SaveArg<0>(&relabelled_profile), Return(true))); | 1046 WillOnce(DoAll(SaveArg<0>(&relabelled_profile), Return(true))); |
| 1047 EXPECT_CALL(*personal_data_manager_, Refresh()); | 1047 EXPECT_CALL(*personal_data_manager_, Refresh()); |
| 1048 | 1048 |
| 1049 AutofillProfileChange change(AutofillProfileChange::UPDATE, | 1049 AutofillProfileChange change(AutofillProfileChange::UPDATE, |
| 1050 josephine_update.Label(), &josephine_update, | 1050 josephine_update.Label(), &josephine_update, |
| 1051 josephine.Label()); | 1051 josephine.Label()); |
| 1052 scoped_refptr<ThreadNotifier> notifier = new ThreadNotifier(&db_thread_); | 1052 scoped_refptr<ThreadNotifier> notifier(new ThreadNotifier(&db_thread_)); |
| 1053 notifier->Notify(NotificationType::AUTOFILL_PROFILE_CHANGED, | 1053 notifier->Notify(NotificationType::AUTOFILL_PROFILE_CHANGED, |
| 1054 Source<WebDataService>(web_data_service_.get()), | 1054 Source<WebDataService>(web_data_service_.get()), |
| 1055 Details<AutofillProfileChange>(&change)); | 1055 Details<AutofillProfileChange>(&change)); |
| 1056 MessageLoop::current()->RunAllPending(); // Run the Refresh task. | 1056 MessageLoop::current()->RunAllPending(); // Run the Refresh task. |
| 1057 Mock::VerifyAndClearExpectations(&web_database_); | 1057 Mock::VerifyAndClearExpectations(&web_database_); |
| 1058 | 1058 |
| 1059 std::vector<AutofillEntry> new_sync_entries; | 1059 std::vector<AutofillEntry> new_sync_entries; |
| 1060 std::vector<AutoFillProfile> new_sync_profiles; | 1060 std::vector<AutoFillProfile> new_sync_profiles; |
| 1061 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&new_sync_entries, | 1061 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&new_sync_entries, |
| 1062 &new_sync_profiles)); | 1062 &new_sync_profiles)); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 1080 WillOnce(DoAll(SetArgumentPointee<0>(original_entries), Return(true))); | 1080 WillOnce(DoAll(SetArgumentPointee<0>(original_entries), Return(true))); |
| 1081 EXPECT_CALL(web_database_, GetAutoFillProfiles(_)).WillOnce(Return(true)); | 1081 EXPECT_CALL(web_database_, GetAutoFillProfiles(_)).WillOnce(Return(true)); |
| 1082 EXPECT_CALL(*personal_data_manager_, Refresh()); | 1082 EXPECT_CALL(*personal_data_manager_, Refresh()); |
| 1083 CreateRootTask task(this, syncable::AUTOFILL); | 1083 CreateRootTask task(this, syncable::AUTOFILL); |
| 1084 StartSyncService(&task, false); | 1084 StartSyncService(&task, false); |
| 1085 ASSERT_TRUE(task.success()); | 1085 ASSERT_TRUE(task.success()); |
| 1086 | 1086 |
| 1087 AutofillChangeList changes; | 1087 AutofillChangeList changes; |
| 1088 changes.push_back(AutofillChange(AutofillChange::REMOVE, | 1088 changes.push_back(AutofillChange(AutofillChange::REMOVE, |
| 1089 original_entry.key())); | 1089 original_entry.key())); |
| 1090 scoped_refptr<ThreadNotifier> notifier = new ThreadNotifier(&db_thread_); | 1090 scoped_refptr<ThreadNotifier> notifier(new ThreadNotifier(&db_thread_)); |
| 1091 notifier->Notify(NotificationType::AUTOFILL_ENTRIES_CHANGED, | 1091 notifier->Notify(NotificationType::AUTOFILL_ENTRIES_CHANGED, |
| 1092 Source<WebDataService>(web_data_service_.get()), | 1092 Source<WebDataService>(web_data_service_.get()), |
| 1093 Details<AutofillChangeList>(&changes)); | 1093 Details<AutofillChangeList>(&changes)); |
| 1094 | 1094 |
| 1095 std::vector<AutofillEntry> new_sync_entries; | 1095 std::vector<AutofillEntry> new_sync_entries; |
| 1096 std::vector<AutoFillProfile> new_sync_profiles; | 1096 std::vector<AutoFillProfile> new_sync_profiles; |
| 1097 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&new_sync_entries, | 1097 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&new_sync_entries, |
| 1098 &new_sync_profiles)); | 1098 &new_sync_profiles)); |
| 1099 ASSERT_EQ(0U, new_sync_entries.size()); | 1099 ASSERT_EQ(0U, new_sync_entries.size()); |
| 1100 } | 1100 } |
| (...skipping 19 matching lines...) Expand all Loading... |
| 1120 std::vector<AutofillEntry> sync_entries; | 1120 std::vector<AutofillEntry> sync_entries; |
| 1121 std::vector<AutoFillProfile> sync_profiles; | 1121 std::vector<AutoFillProfile> sync_profiles; |
| 1122 sync_profiles.push_back(sync_profile); | 1122 sync_profiles.push_back(sync_profile); |
| 1123 AddAutofillEntriesTask task(this, sync_entries, sync_profiles); | 1123 AddAutofillEntriesTask task(this, sync_entries, sync_profiles); |
| 1124 EXPECT_CALL(*personal_data_manager_, Refresh()); | 1124 EXPECT_CALL(*personal_data_manager_, Refresh()); |
| 1125 StartSyncService(&task, false); | 1125 StartSyncService(&task, false); |
| 1126 ASSERT_TRUE(task.success()); | 1126 ASSERT_TRUE(task.success()); |
| 1127 | 1127 |
| 1128 AutofillProfileChange change(AutofillProfileChange::REMOVE, | 1128 AutofillProfileChange change(AutofillProfileChange::REMOVE, |
| 1129 sync_profile.Label(), NULL, string16()); | 1129 sync_profile.Label(), NULL, string16()); |
| 1130 scoped_refptr<ThreadNotifier> notifier = new ThreadNotifier(&db_thread_); | 1130 scoped_refptr<ThreadNotifier> notifier(new ThreadNotifier(&db_thread_)); |
| 1131 notifier->Notify(NotificationType::AUTOFILL_PROFILE_CHANGED, | 1131 notifier->Notify(NotificationType::AUTOFILL_PROFILE_CHANGED, |
| 1132 Source<WebDataService>(web_data_service_.get()), | 1132 Source<WebDataService>(web_data_service_.get()), |
| 1133 Details<AutofillProfileChange>(&change)); | 1133 Details<AutofillProfileChange>(&change)); |
| 1134 | 1134 |
| 1135 std::vector<AutofillEntry> new_sync_entries; | 1135 std::vector<AutofillEntry> new_sync_entries; |
| 1136 std::vector<AutoFillProfile> new_sync_profiles; | 1136 std::vector<AutoFillProfile> new_sync_profiles; |
| 1137 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&new_sync_entries, | 1137 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&new_sync_entries, |
| 1138 &new_sync_profiles)); | 1138 &new_sync_profiles)); |
| 1139 ASSERT_EQ(0U, new_sync_entries.size()); | 1139 ASSERT_EQ(0U, new_sync_entries.size()); |
| 1140 } | 1140 } |
| 1141 | 1141 |
| 1142 TEST_F(ProfileSyncServiceAutofillTest, ProcessUserChangeError) { | 1142 TEST_F(ProfileSyncServiceAutofillTest, ProcessUserChangeError) { |
| 1143 EXPECT_CALL(web_database_, GetAllAutofillEntries(_)).WillOnce(Return(true)); | 1143 EXPECT_CALL(web_database_, GetAllAutofillEntries(_)).WillOnce(Return(true)); |
| 1144 EXPECT_CALL(web_database_, GetAutoFillProfiles(_)).WillOnce(Return(true)); | 1144 EXPECT_CALL(web_database_, GetAutoFillProfiles(_)).WillOnce(Return(true)); |
| 1145 EXPECT_CALL(*personal_data_manager_, Refresh()); | 1145 EXPECT_CALL(*personal_data_manager_, Refresh()); |
| 1146 CreateRootTask task(this, syncable::AUTOFILL); | 1146 CreateRootTask task(this, syncable::AUTOFILL); |
| 1147 StartSyncService(&task, false); | 1147 StartSyncService(&task, false); |
| 1148 ASSERT_TRUE(task.success()); | 1148 ASSERT_TRUE(task.success()); |
| 1149 | 1149 |
| 1150 // Inject an evil entry into the sync db to conflict with the same | 1150 // Inject an evil entry into the sync db to conflict with the same |
| 1151 // entry added by the user. | 1151 // entry added by the user. |
| 1152 AutofillEntry evil_entry(MakeAutofillEntry("evil", "entry", 1)); | 1152 AutofillEntry evil_entry(MakeAutofillEntry("evil", "entry", 1)); |
| 1153 ASSERT_TRUE(AddAutofillSyncNode(evil_entry)); | 1153 ASSERT_TRUE(AddAutofillSyncNode(evil_entry)); |
| 1154 | 1154 |
| 1155 AutofillChangeList changes; | 1155 AutofillChangeList changes; |
| 1156 changes.push_back(AutofillChange(AutofillChange::ADD, | 1156 changes.push_back(AutofillChange(AutofillChange::ADD, |
| 1157 evil_entry.key())); | 1157 evil_entry.key())); |
| 1158 scoped_refptr<ThreadNotifier> notifier = new ThreadNotifier(&db_thread_); | 1158 scoped_refptr<ThreadNotifier> notifier(new ThreadNotifier(&db_thread_)); |
| 1159 notifier->Notify(NotificationType::AUTOFILL_ENTRIES_CHANGED, | 1159 notifier->Notify(NotificationType::AUTOFILL_ENTRIES_CHANGED, |
| 1160 Source<WebDataService>(web_data_service_.get()), | 1160 Source<WebDataService>(web_data_service_.get()), |
| 1161 Details<AutofillChangeList>(&changes)); | 1161 Details<AutofillChangeList>(&changes)); |
| 1162 | 1162 |
| 1163 // Wait for the PPS to shut everything down and signal us. | 1163 // Wait for the PPS to shut everything down and signal us. |
| 1164 ProfileSyncServiceObserverMock observer; | 1164 ProfileSyncServiceObserverMock observer; |
| 1165 service_->AddObserver(&observer); | 1165 service_->AddObserver(&observer); |
| 1166 EXPECT_CALL(observer, OnStateChanged()).WillOnce(QuitUIMessageLoop()); | 1166 EXPECT_CALL(observer, OnStateChanged()).WillOnce(QuitUIMessageLoop()); |
| 1167 MessageLoop::current()->Run(); | 1167 MessageLoop::current()->Run(); |
| 1168 EXPECT_TRUE(service_->unrecoverable_error_detected()); | 1168 EXPECT_TRUE(service_->unrecoverable_error_detected()); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1180 EXPECT_CALL(web_database_, UpdateAutofillEntries(_)). | 1180 EXPECT_CALL(web_database_, UpdateAutofillEntries(_)). |
| 1181 WillRepeatedly(Return(true)); | 1181 WillRepeatedly(Return(true)); |
| 1182 EXPECT_CALL(*personal_data_manager_, Refresh()).Times(3); | 1182 EXPECT_CALL(*personal_data_manager_, Refresh()).Times(3); |
| 1183 CreateRootTask task(this, syncable::AUTOFILL); | 1183 CreateRootTask task(this, syncable::AUTOFILL); |
| 1184 StartSyncService(&task, false); | 1184 StartSyncService(&task, false); |
| 1185 ASSERT_TRUE(task.success()); | 1185 ASSERT_TRUE(task.success()); |
| 1186 | 1186 |
| 1187 // (true, false) means we have to reset after |Signal|, init to unsignaled. | 1187 // (true, false) means we have to reset after |Signal|, init to unsignaled. |
| 1188 scoped_ptr<WaitableEvent> wait_for_start(new WaitableEvent(true, false)); | 1188 scoped_ptr<WaitableEvent> wait_for_start(new WaitableEvent(true, false)); |
| 1189 scoped_ptr<WaitableEvent> wait_for_syncapi(new WaitableEvent(true, false)); | 1189 scoped_ptr<WaitableEvent> wait_for_syncapi(new WaitableEvent(true, false)); |
| 1190 scoped_refptr<FakeServerUpdater> updater = new FakeServerUpdater( | 1190 scoped_refptr<FakeServerUpdater> updater(new FakeServerUpdater( |
| 1191 service_.get(), &wait_for_start, &wait_for_syncapi); | 1191 service_.get(), &wait_for_start, &wait_for_syncapi)); |
| 1192 | 1192 |
| 1193 // This server side update will stall waiting for CommitWaiter. | 1193 // This server side update will stall waiting for CommitWaiter. |
| 1194 updater->CreateNewEntry(MakeAutofillEntry("server", "entry", 1)); | 1194 updater->CreateNewEntry(MakeAutofillEntry("server", "entry", 1)); |
| 1195 wait_for_start->Wait(); | 1195 wait_for_start->Wait(); |
| 1196 | 1196 |
| 1197 AutofillEntry syncapi_entry(MakeAutofillEntry("syncapi", "entry", 2)); | 1197 AutofillEntry syncapi_entry(MakeAutofillEntry("syncapi", "entry", 2)); |
| 1198 ASSERT_TRUE(AddAutofillSyncNode(syncapi_entry)); | 1198 ASSERT_TRUE(AddAutofillSyncNode(syncapi_entry)); |
| 1199 VLOG(1) << "Syncapi update finished."; | 1199 VLOG(1) << "Syncapi update finished."; |
| 1200 | 1200 |
| 1201 // If we reach here, it means syncapi succeeded and we didn't deadlock. Yay! | 1201 // If we reach here, it means syncapi succeeded and we didn't deadlock. Yay! |
| 1202 // Signal FakeServerUpdater that it can complete. | 1202 // Signal FakeServerUpdater that it can complete. |
| 1203 wait_for_syncapi->Signal(); | 1203 wait_for_syncapi->Signal(); |
| 1204 | 1204 |
| 1205 // Make another entry to ensure nothing broke afterwards and wait for finish | 1205 // Make another entry to ensure nothing broke afterwards and wait for finish |
| 1206 // to clean up. | 1206 // to clean up. |
| 1207 updater->CreateNewEntryAndWait(MakeAutofillEntry("server2", "entry2", 3)); | 1207 updater->CreateNewEntryAndWait(MakeAutofillEntry("server2", "entry2", 3)); |
| 1208 | 1208 |
| 1209 std::vector<AutofillEntry> sync_entries; | 1209 std::vector<AutofillEntry> sync_entries; |
| 1210 std::vector<AutoFillProfile> sync_profiles; | 1210 std::vector<AutoFillProfile> sync_profiles; |
| 1211 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&sync_entries, &sync_profiles)); | 1211 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&sync_entries, &sync_profiles)); |
| 1212 EXPECT_EQ(3U, sync_entries.size()); | 1212 EXPECT_EQ(3U, sync_entries.size()); |
| 1213 EXPECT_EQ(0U, sync_profiles.size()); | 1213 EXPECT_EQ(0U, sync_profiles.size()); |
| 1214 for (size_t i = 0; i < sync_entries.size(); i++) { | 1214 for (size_t i = 0; i < sync_entries.size(); i++) { |
| 1215 VLOG(1) << "Entry " << i << ": " << sync_entries[i].key().name() | 1215 VLOG(1) << "Entry " << i << ": " << sync_entries[i].key().name() |
| 1216 << ", " << sync_entries[i].key().value(); | 1216 << ", " << sync_entries[i].key().value(); |
| 1217 } | 1217 } |
| 1218 } | 1218 } |
| OLD | NEW |