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

Side by Side Diff: components/autofill/core/browser/personal_data_manager_unittest.cc

Issue 2142123002: [Autofill] Run autofill-profile de-dupe after sync starts if sync is enabled. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Register the autofill last version deduped pref for ProfileSyncServiceAutofillTest Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 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 "components/autofill/core/browser/personal_data_manager.h" 5 #include "components/autofill/core/browser/personal_data_manager.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <list> 10 #include <list>
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 void ResetPersonalDataManager(UserMode user_mode) { 169 void ResetPersonalDataManager(UserMode user_mode) {
170 bool is_incognito = (user_mode == USER_MODE_INCOGNITO); 170 bool is_incognito = (user_mode == USER_MODE_INCOGNITO);
171 personal_data_.reset(new PersonalDataManager("en")); 171 personal_data_.reset(new PersonalDataManager("en"));
172 personal_data_->Init( 172 personal_data_->Init(
173 scoped_refptr<AutofillWebDataService>(autofill_database_service_), 173 scoped_refptr<AutofillWebDataService>(autofill_database_service_),
174 prefs_.get(), 174 prefs_.get(),
175 account_tracker_.get(), 175 account_tracker_.get(),
176 signin_manager_.get(), 176 signin_manager_.get(),
177 is_incognito); 177 is_incognito);
178 personal_data_->AddObserver(&personal_data_observer_); 178 personal_data_->AddObserver(&personal_data_observer_);
179 personal_data_->OnSyncServiceConfigured(nullptr);
179 180
180 // Verify that the web database has been updated and the notification sent. 181 // Verify that the web database has been updated and the notification sent.
181 EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged()) 182 EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged())
182 .WillOnce(QuitMainMessageLoop()); 183 .WillOnce(QuitMainMessageLoop());
183 base::RunLoop().Run(); 184 base::RunLoop().Run();
184 } 185 }
185 186
186 void ResetProfiles() { 187 void ResetProfiles() {
187 std::vector<AutofillProfile> empty_profiles; 188 std::vector<AutofillProfile> empty_profiles;
188 personal_data_->SetProfiles(&empty_profiles); 189 personal_data_->SetProfiles(&empty_profiles);
189 } 190 }
190 191
191 void EnableWalletCardImport() { 192 void EnableWalletCardImport() {
192 signin_manager_->SetAuthenticatedAccountInfo("12345", 193 signin_manager_->SetAuthenticatedAccountInfo("12345",
193 "syncuser@example.com"); 194 "syncuser@example.com");
194 base::CommandLine::ForCurrentProcess()->AppendSwitch( 195 base::CommandLine::ForCurrentProcess()->AppendSwitch(
195 switches::kEnableOfferStoreUnmaskedWalletCards); 196 switches::kEnableOfferStoreUnmaskedWalletCards);
196 } 197 }
197 198
198 void EnableAutofillProfileCleanup() { 199 void EnableAutofillProfileCleanup() {
199 base::FeatureList::ClearInstanceForTesting(); 200 base::FeatureList::ClearInstanceForTesting();
200 std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList); 201 std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList);
201 feature_list->InitializeFromCommandLine(kAutofillProfileCleanup.name, 202 feature_list->InitializeFromCommandLine(kAutofillProfileCleanup.name,
202 std::string()); 203 std::string());
203 base::FeatureList::SetInstance(std::move(feature_list)); 204 base::FeatureList::SetInstance(std::move(feature_list));
205 personal_data_->is_autofill_profile_dedupe_pending_ = true;
204 } 206 }
205 207
206 void SetupReferenceProfile() { 208 void SetupReferenceProfile() {
207 ASSERT_EQ(0U, personal_data_->GetProfiles().size()); 209 ASSERT_EQ(0U, personal_data_->GetProfiles().size());
208 210
209 AutofillProfile profile(base::GenerateGUID(), "https://www.example.com"); 211 AutofillProfile profile(base::GenerateGUID(), "https://www.example.com");
210 test::SetProfileInfo(&profile, "Marion", "Mitchell", "Morrison", 212 test::SetProfileInfo(&profile, "Marion", "Mitchell", "Morrison",
211 "johnwayne@me.xyz", "Fox", "123 Zoo St", "unit 5", 213 "johnwayne@me.xyz", "Fox", "123 Zoo St", "unit 5",
212 "Hollywood", "CA", "91601", "US", "12345678910"); 214 "Hollywood", "CA", "91601", "US", "12345678910");
213 personal_data_->AddProfile(profile); 215 personal_data_->AddProfile(profile);
(...skipping 4380 matching lines...) Expand 10 before | Expand all | Expand 10 after
4594 4596
4595 // Make sure the 3 profiles were saved; 4597 // Make sure the 3 profiles were saved;
4596 EXPECT_EQ(3U, personal_data_->GetProfiles().size()); 4598 EXPECT_EQ(3U, personal_data_->GetProfiles().size());
4597 4599
4598 // Enable the profile cleanup now. Otherwise it would be triggered by the 4600 // Enable the profile cleanup now. Otherwise it would be triggered by the
4599 // calls to AddProfile. 4601 // calls to AddProfile.
4600 EnableAutofillProfileCleanup(); 4602 EnableAutofillProfileCleanup();
4601 4603
4602 base::HistogramTester histogram_tester; 4604 base::HistogramTester histogram_tester;
4603 4605
4604 personal_data_->ApplyDedupingRoutine(); 4606 EXPECT_TRUE(personal_data_->ApplyDedupingRoutine());
4605 EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged()) 4607 EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged())
4606 .WillOnce(QuitMainMessageLoop()); 4608 .WillOnce(QuitMainMessageLoop());
4607 base::RunLoop().Run(); 4609 base::RunLoop().Run();
4608 4610
4609 std::vector<AutofillProfile*> profiles = personal_data_->GetProfiles(); 4611 std::vector<AutofillProfile*> profiles = personal_data_->GetProfiles();
4610 4612
4611 // |profile1| should have been merged into |profile2| which should then have 4613 // |profile1| should have been merged into |profile2| which should then have
4612 // been merged into |profile3|. Therefore there should only be 1 saved 4614 // been merged into |profile3|. Therefore there should only be 1 saved
4613 // profile. 4615 // profile.
4614 ASSERT_EQ(1U, profiles.size()); 4616 ASSERT_EQ(1U, profiles.size());
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
4687 4689
4688 // Make sure the 3 profiles were saved. 4690 // Make sure the 3 profiles were saved.
4689 EXPECT_EQ(3U, personal_data_->GetProfiles().size()); 4691 EXPECT_EQ(3U, personal_data_->GetProfiles().size());
4690 4692
4691 // Enable the profile cleanup now. Otherwise it would be triggered by the 4693 // Enable the profile cleanup now. Otherwise it would be triggered by the
4692 // calls to AddProfile. 4694 // calls to AddProfile.
4693 EnableAutofillProfileCleanup(); 4695 EnableAutofillProfileCleanup();
4694 4696
4695 base::HistogramTester histogram_tester; 4697 base::HistogramTester histogram_tester;
4696 4698
4697 personal_data_->ApplyDedupingRoutine(); 4699 EXPECT_TRUE(personal_data_->ApplyDedupingRoutine());
4698 EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged()) 4700 EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged())
4699 .WillOnce(QuitMainMessageLoop()); 4701 .WillOnce(QuitMainMessageLoop());
4700 base::RunLoop().Run(); 4702 base::RunLoop().Run();
4701 4703
4702 std::vector<AutofillProfile*> profiles = personal_data_->GetProfiles(); 4704 std::vector<AutofillProfile*> profiles = personal_data_->GetProfiles();
4703 4705
4704 // |profile2| should have merged with |profile3|. |profile3| 4706 // |profile2| should have merged with |profile3|. |profile3|
4705 // should then have been discarded because it is similar to the verified 4707 // should then have been discarded because it is similar to the verified
4706 // |profile1|. 4708 // |profile1|.
4707 ASSERT_EQ(1U, profiles.size()); 4709 ASSERT_EQ(1U, profiles.size());
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
4759 4761
4760 // Make sure the 3 profiles were saved. 4762 // Make sure the 3 profiles were saved.
4761 EXPECT_EQ(3U, personal_data_->GetProfiles().size()); 4763 EXPECT_EQ(3U, personal_data_->GetProfiles().size());
4762 4764
4763 // Enable the profile cleanup now. Otherwise it would be triggered by the 4765 // Enable the profile cleanup now. Otherwise it would be triggered by the
4764 // calls to AddProfile. 4766 // calls to AddProfile.
4765 EnableAutofillProfileCleanup(); 4767 EnableAutofillProfileCleanup();
4766 4768
4767 base::HistogramTester histogram_tester; 4769 base::HistogramTester histogram_tester;
4768 4770
4769 personal_data_->ApplyDedupingRoutine(); 4771 EXPECT_TRUE(personal_data_->ApplyDedupingRoutine());
4770 EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged()) 4772 EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged())
4771 .WillOnce(QuitMainMessageLoop()); 4773 .WillOnce(QuitMainMessageLoop());
4772 base::RunLoop().Run(); 4774 base::RunLoop().Run();
4773 4775
4774 std::vector<AutofillProfile*> profiles = personal_data_->GetProfiles(); 4776 std::vector<AutofillProfile*> profiles = personal_data_->GetProfiles();
4775 4777
4776 // |profile1| should have merged with |profile2|. |profile2| 4778 // |profile1| should have merged with |profile2|. |profile2|
4777 // should then have been discarded because it is similar to the verified 4779 // should then have been discarded because it is similar to the verified
4778 // |profile3|. 4780 // |profile3|.
4779 ASSERT_EQ(1U, profiles.size()); 4781 ASSERT_EQ(1U, profiles.size());
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
4830 4832
4831 // Make sure the 3 profiles were saved. 4833 // Make sure the 3 profiles were saved.
4832 EXPECT_EQ(3U, personal_data_->GetProfiles().size()); 4834 EXPECT_EQ(3U, personal_data_->GetProfiles().size());
4833 4835
4834 // Enable the profile cleanup now. Otherwise it would be triggered by the 4836 // Enable the profile cleanup now. Otherwise it would be triggered by the
4835 // calls to AddProfile. 4837 // calls to AddProfile.
4836 EnableAutofillProfileCleanup(); 4838 EnableAutofillProfileCleanup();
4837 4839
4838 base::HistogramTester histogram_tester; 4840 base::HistogramTester histogram_tester;
4839 4841
4840 personal_data_->ApplyDedupingRoutine(); 4842 EXPECT_TRUE(personal_data_->ApplyDedupingRoutine());
4841 EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged()) 4843 EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged())
4842 .WillOnce(QuitMainMessageLoop()); 4844 .WillOnce(QuitMainMessageLoop());
4843 base::RunLoop().Run(); 4845 base::RunLoop().Run();
4844 4846
4845 // Get the profiles, sorted by frecency to have a deterministic order. 4847 // Get the profiles, sorted by frecency to have a deterministic order.
4846 std::vector<AutofillProfile*> profiles = 4848 std::vector<AutofillProfile*> profiles =
4847 personal_data_->GetProfilesToSuggest(); 4849 personal_data_->GetProfilesToSuggest();
4848 4850
4849 // |profile1| should have been discarded because the saved profile with the 4851 // |profile1| should have been discarded because the saved profile with the
4850 // highest frecency score is verified (|profile2|). Therefore, |profile1|'s 4852 // highest frecency score is verified (|profile2|). Therefore, |profile1|'s
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
5060 5062
5061 // Enable the profile cleanup now. Otherwise it would be triggered by the 5063 // Enable the profile cleanup now. Otherwise it would be triggered by the
5062 // calls to AddProfile. 5064 // calls to AddProfile.
5063 EnableAutofillProfileCleanup(); 5065 EnableAutofillProfileCleanup();
5064 5066
5065 base::HistogramTester histogram_tester; 5067 base::HistogramTester histogram_tester;
5066 5068
5067 // |Homer1| should get merged into |Homer2| which should then be merged into 5069 // |Homer1| should get merged into |Homer2| which should then be merged into
5068 // |Homer3|. |Marge2| should be discarded in favor of |Marge1| which is 5070 // |Homer3|. |Marge2| should be discarded in favor of |Marge1| which is
5069 // verified. |Homer4| and |Barney| should not be deduped at all. 5071 // verified. |Homer4| and |Barney| should not be deduped at all.
5070 personal_data_->ApplyDedupingRoutine(); 5072 EXPECT_TRUE(personal_data_->ApplyDedupingRoutine());
5071 EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged()) 5073 EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged())
5072 .WillOnce(QuitMainMessageLoop()); 5074 .WillOnce(QuitMainMessageLoop());
5073 base::RunLoop().Run(); 5075 base::RunLoop().Run();
5074 5076
5075 // Get the profiles, sorted by frecency to have a deterministic order. 5077 // Get the profiles, sorted by frecency to have a deterministic order.
5076 std::vector<AutofillProfile*> profiles = 5078 std::vector<AutofillProfile*> profiles =
5077 personal_data_->GetProfilesToSuggest(); 5079 personal_data_->GetProfilesToSuggest();
5078 5080
5079 // The 2 duplicates Homer home profiles with the higher frecency and the 5081 // The 2 duplicates Homer home profiles with the higher frecency and the
5080 // unverified Marge profile should have been deduped. 5082 // unverified Marge profile should have been deduped.
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
5216 EnableAutofillProfileCleanup(); 5218 EnableAutofillProfileCleanup();
5217 5219
5218 // The deduping routine should not be run. 5220 // The deduping routine should not be run.
5219 EXPECT_FALSE(personal_data_->ApplyDedupingRoutine()); 5221 EXPECT_FALSE(personal_data_->ApplyDedupingRoutine());
5220 5222
5221 // The two duplicate profiles should still be present. 5223 // The two duplicate profiles should still be present.
5222 EXPECT_EQ(2U, personal_data_->GetProfiles().size()); 5224 EXPECT_EQ(2U, personal_data_->GetProfiles().size());
5223 } 5225 }
5224 5226
5225 } // namespace autofill 5227 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698