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

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

Issue 180953004: Componentize several Autofill unit tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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 | Annotate | Revision Log
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 <string> 5 #include <string>
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/files/scoped_temp_dir.h"
8 #include "base/guid.h" 9 #include "base/guid.h"
9 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
10 #include "base/message_loop/message_loop.h" 11 #include "base/message_loop/message_loop.h"
11 #include "base/prefs/pref_service.h" 12 #include "base/prefs/pref_service.h"
12 #include "base/strings/utf_string_conversions.h" 13 #include "base/strings/utf_string_conversions.h"
13 #include "base/synchronization/waitable_event.h" 14 #include "base/synchronization/waitable_event.h"
14 #include "chrome/test/base/testing_profile.h"
15 #include "components/autofill/core/browser/autofill_metrics.h" 15 #include "components/autofill/core/browser/autofill_metrics.h"
16 #include "components/autofill/core/browser/autofill_profile.h" 16 #include "components/autofill/core/browser/autofill_profile.h"
17 #include "components/autofill/core/browser/autofill_test_utils.h" 17 #include "components/autofill/core/browser/autofill_test_utils.h"
18 #include "components/autofill/core/browser/form_structure.h" 18 #include "components/autofill/core/browser/form_structure.h"
19 #include "components/autofill/core/browser/personal_data_manager.h" 19 #include "components/autofill/core/browser/personal_data_manager.h"
20 #include "components/autofill/core/browser/personal_data_manager_observer.h" 20 #include "components/autofill/core/browser/personal_data_manager_observer.h"
21 #include "components/autofill/core/browser/webdata/autofill_table.h" 21 #include "components/autofill/core/browser/webdata/autofill_table.h"
22 #include "components/autofill/core/browser/webdata/autofill_webdata_service.h" 22 #include "components/autofill/core/browser/webdata/autofill_webdata_service.h"
23 #include "components/autofill/core/common/autofill_pref_names.h" 23 #include "components/autofill/core/common/autofill_pref_names.h"
24 #include "components/autofill/core/common/form_data.h" 24 #include "components/autofill/core/common/form_data.h"
25 #include "components/webdata/common/web_data_service_base.h" 25 #include "components/webdata/common/web_data_service_base.h"
26 #include "components/webdata/common/web_database_service.h" 26 #include "components/webdata/common/web_database_service.h"
27 #include "content/public/test/test_browser_thread.h"
28 #include "testing/gmock/include/gmock/gmock.h" 27 #include "testing/gmock/include/gmock/gmock.h"
29 #include "testing/gtest/include/gtest/gtest.h" 28 #include "testing/gtest/include/gtest/gtest.h"
30 29
31 using base::ASCIIToUTF16; 30 using base::ASCIIToUTF16;
32 31
33 using content::BrowserThread;
34
35 namespace autofill { 32 namespace autofill {
36 namespace { 33 namespace {
37 34
38 ACTION(QuitUIMessageLoop) { 35 ACTION(QuitUIMessageLoop) {
39 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
blundell 2014/03/05 15:55:01 Is it important to preserve this DCHECK in some wa
Ilya Sherman 2014/03/05 23:59:44 Nah, though it might be worth renaming the action
blundell 2014/03/06 09:32:32 Done.
40 base::MessageLoop::current()->Quit(); 36 base::MessageLoop::current()->Quit();
41 } 37 }
42 38
43 class PersonalDataLoadedObserverMock : public PersonalDataManagerObserver { 39 class PersonalDataLoadedObserverMock : public PersonalDataManagerObserver {
44 public: 40 public:
45 PersonalDataLoadedObserverMock() {} 41 PersonalDataLoadedObserverMock() {}
46 virtual ~PersonalDataLoadedObserverMock() {} 42 virtual ~PersonalDataLoadedObserverMock() {}
47 43
48 MOCK_METHOD0(OnPersonalDataChanged, void()); 44 MOCK_METHOD0(OnPersonalDataChanged, void());
49 }; 45 };
50 46
51 // Unlike the base AutofillMetrics, exposes copy and assignment constructors, 47 // Unlike the base AutofillMetrics, exposes copy and assignment constructors,
52 // which are handy for briefer test code. The AutofillMetrics class is 48 // which are handy for briefer test code. The AutofillMetrics class is
53 // stateless, so this is safe. 49 // stateless, so this is safe.
54 class TestAutofillMetrics : public AutofillMetrics { 50 class TestAutofillMetrics : public AutofillMetrics {
55 public: 51 public:
56 TestAutofillMetrics() {} 52 TestAutofillMetrics() {}
57 virtual ~TestAutofillMetrics() {} 53 virtual ~TestAutofillMetrics() {}
58 }; 54 };
59 55
60 } // anonymous namespace 56 } // anonymous namespace
61 57
62 class PersonalDataManagerTest : public testing::Test { 58 class PersonalDataManagerTest : public testing::Test {
63 protected: 59 protected:
64 PersonalDataManagerTest() 60 PersonalDataManagerTest() {}
65 : ui_thread_(BrowserThread::UI, &message_loop_),
66 db_thread_(BrowserThread::DB) {
67 }
68 61
69 virtual void SetUp() { 62 virtual void SetUp() {
70 db_thread_.Start();
71 63
64 prefs_ = test::PrefServiceForTesting();
72 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 65 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
73 base::FilePath path = temp_dir_.path().AppendASCII("TestWebDB"); 66 base::FilePath path = temp_dir_.path().AppendASCII("TestWebDB");
74 web_database_ = new WebDatabaseService( 67 web_database_ = new WebDatabaseService(path,
75 path, 68 base::MessageLoopProxy::current(),
76 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI), 69 base::MessageLoopProxy::current());
77 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB));
78 web_database_->AddTable( 70 web_database_->AddTable(
79 scoped_ptr<WebDatabaseTable>(new AutofillTable("en-US"))); 71 scoped_ptr<WebDatabaseTable>(new AutofillTable("en-US")));
80 web_database_->LoadDatabase(); 72 web_database_->LoadDatabase();
81 autofill_database_service_ = new AutofillWebDataService( 73 autofill_database_service_ =
82 web_database_, 74 new AutofillWebDataService(web_database_,
83 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI), 75 base::MessageLoopProxy::current(),
84 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB), 76 base::MessageLoopProxy::current(),
85 WebDataServiceBase::ProfileErrorCallback()); 77 WebDataServiceBase::ProfileErrorCallback());
86 autofill_database_service_->Init(); 78 autofill_database_service_->Init();
87 79
88 profile_.reset(new TestingProfile); 80 ResetPersonalDataManager(false);
89 profile_->CreateWebDataService();
90
91 test::DisableSystemServices(profile_.get());
92 ResetPersonalDataManager();
93 } 81 }
94 82
95 virtual void TearDown() { 83 virtual void TearDown() {
96 // Destruction order is imposed explicitly here. 84 // Destruction order is imposed explicitly here.
97 personal_data_.reset(NULL); 85 personal_data_.reset(NULL);
98 profile_.reset(NULL);
99 86
100 autofill_database_service_->ShutdownOnUIThread(); 87 autofill_database_service_->ShutdownOnUIThread();
101 web_database_->ShutdownDatabase(); 88 web_database_->ShutdownDatabase();
102 autofill_database_service_ = NULL; 89 autofill_database_service_ = NULL;
103 web_database_ = NULL; 90 web_database_ = NULL;
104
105 // Schedule another task on the DB thread to notify us that it's safe to
blundell 2014/03/05 15:55:01 Related to the question that I have below, this co
Ilya Sherman 2014/03/05 23:59:44 No, this is a test pattern that's discouraged thes
106 // stop the thread.
107 base::WaitableEvent done(false, false);
108 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE,
109 base::Bind(&base::WaitableEvent::Signal, base::Unretained(&done)));
110 done.Wait();
111 base::MessageLoop::current()->PostTask(FROM_HERE,
112 base::MessageLoop::QuitClosure());
113 base::MessageLoop::current()->Run();
114 db_thread_.Stop();
115 } 91 }
116 92
117 void ResetPersonalDataManager() { 93 void ResetPersonalDataManager(bool is_incognito) {
Ilya Sherman 2014/03/05 23:59:44 nit: Please define an enum for this parameter, rat
blundell 2014/03/06 09:32:32 Done.
118 personal_data_.reset(new PersonalDataManager("en-US")); 94 personal_data_.reset(new PersonalDataManager("en-US"));
119 personal_data_->Init( 95 personal_data_->Init(
120 scoped_refptr<AutofillWebDataService>(autofill_database_service_), 96 scoped_refptr<AutofillWebDataService>(autofill_database_service_),
121 profile_->GetPrefs(), 97 prefs_.get(),
122 profile_->IsOffTheRecord()); 98 is_incognito);
123 personal_data_->AddObserver(&personal_data_observer_); 99 personal_data_->AddObserver(&personal_data_observer_);
124 100
125 // Verify that the web database has been updated and the notification sent. 101 // Verify that the web database has been updated and the notification sent.
126 EXPECT_CALL(personal_data_observer_, 102 EXPECT_CALL(personal_data_observer_,
127 OnPersonalDataChanged()).WillOnce(QuitUIMessageLoop()); 103 OnPersonalDataChanged()).WillOnce(QuitUIMessageLoop());
128 base::MessageLoop::current()->Run(); 104 base::MessageLoop::current()->Run();
129 } 105 }
130 106
131 void MakeProfileIncognito() {
132 // Switch to an incognito profile.
133 profile_->ForceIncognito(true);
134 DCHECK(profile_->IsOffTheRecord());
135 }
136
137 base::MessageLoopForUI message_loop_; 107 base::MessageLoopForUI message_loop_;
138 content::TestBrowserThread ui_thread_; 108 scoped_ptr<PrefService> prefs_;
139 content::TestBrowserThread db_thread_;
blundell 2014/03/05 15:55:01 I can't remember how TestBrowserThread works off t
Ilya Sherman 2014/03/05 23:59:44 These were previously different message loops, but
blundell 2014/03/06 09:32:32 I can't use TestBrowserThreadBundle here in any ca
140 scoped_ptr<TestingProfile> profile_;
141 scoped_refptr<AutofillWebDataService> autofill_database_service_; 109 scoped_refptr<AutofillWebDataService> autofill_database_service_;
142 scoped_refptr<WebDatabaseService> web_database_; 110 scoped_refptr<WebDatabaseService> web_database_;
143 base::ScopedTempDir temp_dir_; 111 base::ScopedTempDir temp_dir_;
144 scoped_ptr<PersonalDataManager> personal_data_; 112 scoped_ptr<PersonalDataManager> personal_data_;
145 PersonalDataLoadedObserverMock personal_data_observer_; 113 PersonalDataLoadedObserverMock personal_data_observer_;
146 }; 114 };
147 115
148 TEST_F(PersonalDataManagerTest, AddProfile) { 116 TEST_F(PersonalDataManagerTest, AddProfile) {
149 // Add profile0 to the database. 117 // Add profile0 to the database.
150 AutofillProfile profile0(autofill::test::GetFullProfile()); 118 AutofillProfile profile0(autofill::test::GetFullProfile());
151 profile0.SetRawInfo(EMAIL_ADDRESS, ASCIIToUTF16("j@s.com")); 119 profile0.SetRawInfo(EMAIL_ADDRESS, ASCIIToUTF16("j@s.com"));
152 personal_data_->AddProfile(profile0); 120 personal_data_->AddProfile(profile0);
153 121
154 // Reload the database. 122 // Reload the database.
155 ResetPersonalDataManager(); 123 ResetPersonalDataManager(false);
156 124
157 // Verify the addition. 125 // Verify the addition.
158 const std::vector<AutofillProfile*>& results1 = personal_data_->GetProfiles(); 126 const std::vector<AutofillProfile*>& results1 = personal_data_->GetProfiles();
159 ASSERT_EQ(1U, results1.size()); 127 ASSERT_EQ(1U, results1.size());
160 EXPECT_EQ(0, profile0.Compare(*results1[0])); 128 EXPECT_EQ(0, profile0.Compare(*results1[0]));
161 129
162 // Add profile with identical values. Duplicates should not get saved. 130 // Add profile with identical values. Duplicates should not get saved.
163 AutofillProfile profile0a = profile0; 131 AutofillProfile profile0a = profile0;
164 profile0a.set_guid(base::GenerateGUID()); 132 profile0a.set_guid(base::GenerateGUID());
165 personal_data_->AddProfile(profile0a); 133 personal_data_->AddProfile(profile0a);
166 134
167 // Reload the database. 135 // Reload the database.
168 ResetPersonalDataManager(); 136 ResetPersonalDataManager(false);
169 137
170 // Verify the non-addition. 138 // Verify the non-addition.
171 const std::vector<AutofillProfile*>& results2 = personal_data_->GetProfiles(); 139 const std::vector<AutofillProfile*>& results2 = personal_data_->GetProfiles();
172 ASSERT_EQ(1U, results2.size()); 140 ASSERT_EQ(1U, results2.size());
173 EXPECT_EQ(0, profile0.Compare(*results2[0])); 141 EXPECT_EQ(0, profile0.Compare(*results2[0]));
174 142
175 // New profile with different email. 143 // New profile with different email.
176 AutofillProfile profile1 = profile0; 144 AutofillProfile profile1 = profile0;
177 profile1.set_guid(base::GenerateGUID()); 145 profile1.set_guid(base::GenerateGUID());
178 profile1.SetRawInfo(EMAIL_ADDRESS, ASCIIToUTF16("john@smith.com")); 146 profile1.SetRawInfo(EMAIL_ADDRESS, ASCIIToUTF16("john@smith.com"));
179 147
180 // Add the different profile. This should save as a separate profile. 148 // Add the different profile. This should save as a separate profile.
181 // Note that if this same profile was "merged" it would collapse to one 149 // Note that if this same profile was "merged" it would collapse to one
182 // profile with a multi-valued entry for email. 150 // profile with a multi-valued entry for email.
183 personal_data_->AddProfile(profile1); 151 personal_data_->AddProfile(profile1);
184 152
185 // Reload the database. 153 // Reload the database.
186 ResetPersonalDataManager(); 154 ResetPersonalDataManager(false);
187 155
188 // Verify the addition. 156 // Verify the addition.
189 const std::vector<AutofillProfile*>& results3 = personal_data_->GetProfiles(); 157 const std::vector<AutofillProfile*>& results3 = personal_data_->GetProfiles();
190 ASSERT_EQ(2U, results3.size()); 158 ASSERT_EQ(2U, results3.size());
191 EXPECT_EQ(0, profile0.Compare(*results3[0])); 159 EXPECT_EQ(0, profile0.Compare(*results3[0]));
192 EXPECT_EQ(0, profile1.Compare(*results3[1])); 160 EXPECT_EQ(0, profile1.Compare(*results3[1]));
193 } 161 }
194 162
195 TEST_F(PersonalDataManagerTest, AddUpdateRemoveProfiles) { 163 TEST_F(PersonalDataManagerTest, AddUpdateRemoveProfiles) {
196 AutofillProfile profile0(base::GenerateGUID(), "https://www.example.com"); 164 AutofillProfile profile0(base::GenerateGUID(), "https://www.example.com");
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 base::MessageLoop::current()->Run(); 205 base::MessageLoop::current()->Run();
238 206
239 const std::vector<AutofillProfile*>& results2 = personal_data_->GetProfiles(); 207 const std::vector<AutofillProfile*>& results2 = personal_data_->GetProfiles();
240 ASSERT_EQ(2U, results2.size()); 208 ASSERT_EQ(2U, results2.size());
241 EXPECT_EQ(0, profile0.Compare(*results2[0])); 209 EXPECT_EQ(0, profile0.Compare(*results2[0]));
242 EXPECT_EQ(0, profile2.Compare(*results2[1])); 210 EXPECT_EQ(0, profile2.Compare(*results2[1]));
243 211
244 // Reset the PersonalDataManager. This tests that the personal data was saved 212 // Reset the PersonalDataManager. This tests that the personal data was saved
245 // to the web database, and that we can load the profiles from the web 213 // to the web database, and that we can load the profiles from the web
246 // database. 214 // database.
247 ResetPersonalDataManager(); 215 ResetPersonalDataManager(false);
248 216
249 // Verify that we've loaded the profiles from the web database. 217 // Verify that we've loaded the profiles from the web database.
250 const std::vector<AutofillProfile*>& results3 = personal_data_->GetProfiles(); 218 const std::vector<AutofillProfile*>& results3 = personal_data_->GetProfiles();
251 ASSERT_EQ(2U, results3.size()); 219 ASSERT_EQ(2U, results3.size());
252 EXPECT_EQ(0, profile0.Compare(*results3[0])); 220 EXPECT_EQ(0, profile0.Compare(*results3[0]));
253 EXPECT_EQ(0, profile2.Compare(*results3[1])); 221 EXPECT_EQ(0, profile2.Compare(*results3[1]));
254 } 222 }
255 223
256 TEST_F(PersonalDataManagerTest, AddUpdateRemoveCreditCards) { 224 TEST_F(PersonalDataManagerTest, AddUpdateRemoveCreditCards) {
257 CreditCard credit_card0(base::GenerateGUID(), "https://www.example.com"); 225 CreditCard credit_card0(base::GenerateGUID(), "https://www.example.com");
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 base::MessageLoop::current()->Run(); 260 base::MessageLoop::current()->Run();
293 261
294 const std::vector<CreditCard*>& results2 = personal_data_->GetCreditCards(); 262 const std::vector<CreditCard*>& results2 = personal_data_->GetCreditCards();
295 ASSERT_EQ(2U, results2.size()); 263 ASSERT_EQ(2U, results2.size());
296 EXPECT_EQ(credit_card0, *results2[0]); 264 EXPECT_EQ(credit_card0, *results2[0]);
297 EXPECT_EQ(credit_card2, *results2[1]); 265 EXPECT_EQ(credit_card2, *results2[1]);
298 266
299 // Reset the PersonalDataManager. This tests that the personal data was saved 267 // Reset the PersonalDataManager. This tests that the personal data was saved
300 // to the web database, and that we can load the credit cards from the web 268 // to the web database, and that we can load the credit cards from the web
301 // database. 269 // database.
302 ResetPersonalDataManager(); 270 ResetPersonalDataManager(false);
303 271
304 // Verify that we've loaded the credit cards from the web database. 272 // Verify that we've loaded the credit cards from the web database.
305 const std::vector<CreditCard*>& results3 = personal_data_->GetCreditCards(); 273 const std::vector<CreditCard*>& results3 = personal_data_->GetCreditCards();
306 ASSERT_EQ(2U, results3.size()); 274 ASSERT_EQ(2U, results3.size());
307 EXPECT_EQ(credit_card0, *results3[0]); 275 EXPECT_EQ(credit_card0, *results3[0]);
308 EXPECT_EQ(credit_card2, *results3[1]); 276 EXPECT_EQ(credit_card2, *results3[1]);
309 } 277 }
310 278
311 TEST_F(PersonalDataManagerTest, UpdateUnverifiedProfilesAndCreditCards) { 279 TEST_F(PersonalDataManagerTest, UpdateUnverifiedProfilesAndCreditCards) {
312 // Start with unverified data. 280 // Start with unverified data.
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 "", "", "", "", "", "", "", "", "", "", "", ""); 458 "", "", "", "", "", "", "", "", "", "", "", "");
491 459
492 // Add the empty profile to the database. 460 // Add the empty profile to the database.
493 personal_data_->AddProfile(profile0); 461 personal_data_->AddProfile(profile0);
494 462
495 // Note: no refresh here. 463 // Note: no refresh here.
496 464
497 // Reset the PersonalDataManager. This tests that the personal data was saved 465 // Reset the PersonalDataManager. This tests that the personal data was saved
498 // to the web database, and that we can load the profiles from the web 466 // to the web database, and that we can load the profiles from the web
499 // database. 467 // database.
500 ResetPersonalDataManager(); 468 ResetPersonalDataManager(false);
501 469
502 // Verify that we've loaded the profiles from the web database. 470 // Verify that we've loaded the profiles from the web database.
503 const std::vector<AutofillProfile*>& results2 = personal_data_->GetProfiles(); 471 const std::vector<AutofillProfile*>& results2 = personal_data_->GetProfiles();
504 ASSERT_EQ(0U, results2.size()); 472 ASSERT_EQ(0U, results2.size());
505 } 473 }
506 474
507 TEST_F(PersonalDataManagerTest, SetEmptyCreditCard) { 475 TEST_F(PersonalDataManagerTest, SetEmptyCreditCard) {
508 CreditCard credit_card0(base::GenerateGUID(), "https://www.example.com"); 476 CreditCard credit_card0(base::GenerateGUID(), "https://www.example.com");
509 test::SetCreditCardInfo(&credit_card0, "", "", "", ""); 477 test::SetCreditCardInfo(&credit_card0, "", "", "", "");
510 478
511 // Add the empty credit card to the database. 479 // Add the empty credit card to the database.
512 personal_data_->AddCreditCard(credit_card0); 480 personal_data_->AddCreditCard(credit_card0);
513 481
514 // Note: no refresh here. 482 // Note: no refresh here.
515 483
516 // Reset the PersonalDataManager. This tests that the personal data was saved 484 // Reset the PersonalDataManager. This tests that the personal data was saved
517 // to the web database, and that we can load the credit cards from the web 485 // to the web database, and that we can load the credit cards from the web
518 // database. 486 // database.
519 ResetPersonalDataManager(); 487 ResetPersonalDataManager(false);
520 488
521 // Verify that we've loaded the credit cards from the web database. 489 // Verify that we've loaded the credit cards from the web database.
522 const std::vector<CreditCard*>& results2 = personal_data_->GetCreditCards(); 490 const std::vector<CreditCard*>& results2 = personal_data_->GetCreditCards();
523 ASSERT_EQ(0U, results2.size()); 491 ASSERT_EQ(0U, results2.size());
524 } 492 }
525 493
526 TEST_F(PersonalDataManagerTest, Refresh) { 494 TEST_F(PersonalDataManagerTest, Refresh) {
527 AutofillProfile profile0(base::GenerateGUID(), "https://www.example.com"); 495 AutofillProfile profile0(base::GenerateGUID(), "https://www.example.com");
528 test::SetProfileInfo(&profile0, 496 test::SetProfileInfo(&profile0,
529 "Marion", "Mitchell", "Morrison", 497 "Marion", "Mitchell", "Morrison",
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after
947 personal_data_->AddCreditCard(credit_card0); 915 personal_data_->AddCreditCard(credit_card0);
948 personal_data_->AddCreditCard(credit_card1); 916 personal_data_->AddCreditCard(credit_card1);
949 personal_data_->AddCreditCard(credit_card2); 917 personal_data_->AddCreditCard(credit_card2);
950 personal_data_->AddCreditCard(credit_card3); 918 personal_data_->AddCreditCard(credit_card3);
951 personal_data_->AddCreditCard(credit_card4); 919 personal_data_->AddCreditCard(credit_card4);
952 personal_data_->AddCreditCard(credit_card5); 920 personal_data_->AddCreditCard(credit_card5);
953 921
954 // Reset the PersonalDataManager. This tests that the personal data was saved 922 // Reset the PersonalDataManager. This tests that the personal data was saved
955 // to the web database, and that we can load the credit cards from the web 923 // to the web database, and that we can load the credit cards from the web
956 // database. 924 // database.
957 ResetPersonalDataManager(); 925 ResetPersonalDataManager(false);
958 926
959 const std::vector<CreditCard*>& results = personal_data_->GetCreditCards(); 927 const std::vector<CreditCard*>& results = personal_data_->GetCreditCards();
960 ASSERT_EQ(6U, results.size()); 928 ASSERT_EQ(6U, results.size());
961 EXPECT_EQ(credit_card0.guid(), results[0]->guid()); 929 EXPECT_EQ(credit_card0.guid(), results[0]->guid());
962 EXPECT_EQ(credit_card1.guid(), results[1]->guid()); 930 EXPECT_EQ(credit_card1.guid(), results[1]->guid());
963 EXPECT_EQ(credit_card2.guid(), results[2]->guid()); 931 EXPECT_EQ(credit_card2.guid(), results[2]->guid());
964 EXPECT_EQ(credit_card3.guid(), results[3]->guid()); 932 EXPECT_EQ(credit_card3.guid(), results[3]->guid());
965 EXPECT_EQ(credit_card4.guid(), results[4]->guid()); 933 EXPECT_EQ(credit_card4.guid(), results[4]->guid());
966 EXPECT_EQ(credit_card5.guid(), results[5]->guid()); 934 EXPECT_EQ(credit_card5.guid(), results[5]->guid());
967 } 935 }
(...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after
1429 1397
1430 FormStructure form_structure1(form1); 1398 FormStructure form_structure1(form1);
1431 form_structure1.DetermineHeuristicTypes(TestAutofillMetrics()); 1399 form_structure1.DetermineHeuristicTypes(TestAutofillMetrics());
1432 scoped_ptr<CreditCard> imported_credit_card; 1400 scoped_ptr<CreditCard> imported_credit_card;
1433 EXPECT_FALSE(personal_data_->ImportFormData(form_structure1, 1401 EXPECT_FALSE(personal_data_->ImportFormData(form_structure1,
1434 &imported_credit_card)); 1402 &imported_credit_card));
1435 ASSERT_FALSE(imported_credit_card); 1403 ASSERT_FALSE(imported_credit_card);
1436 1404
1437 // Since no refresh is expected, reload the data from the database to make 1405 // Since no refresh is expected, reload the data from the database to make
1438 // sure no changes were written out. 1406 // sure no changes were written out.
1439 ResetPersonalDataManager(); 1407 ResetPersonalDataManager(false);
1440 1408
1441 const std::vector<AutofillProfile*>& profiles = personal_data_->GetProfiles(); 1409 const std::vector<AutofillProfile*>& profiles = personal_data_->GetProfiles();
1442 ASSERT_EQ(0U, profiles.size()); 1410 ASSERT_EQ(0U, profiles.size());
1443 const std::vector<CreditCard*>& cards = personal_data_->GetCreditCards(); 1411 const std::vector<CreditCard*>& cards = personal_data_->GetCreditCards();
1444 ASSERT_EQ(0U, cards.size()); 1412 ASSERT_EQ(0U, cards.size());
1445 } 1413 }
1446 1414
1447 TEST_F(PersonalDataManagerTest, AggregateExistingAuxiliaryProfile) { 1415 TEST_F(PersonalDataManagerTest, AggregateExistingAuxiliaryProfile) {
1448 // Simulate having access to an auxiliary profile. 1416 // Simulate having access to an auxiliary profile.
1449 // |auxiliary_profile| will be owned by |personal_data_|. 1417 // |auxiliary_profile| will be owned by |personal_data_|.
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
1617 form2.fields.push_back(field); 1585 form2.fields.push_back(field);
1618 1586
1619 FormStructure form_structure2(form2); 1587 FormStructure form_structure2(form2);
1620 form_structure2.DetermineHeuristicTypes(TestAutofillMetrics()); 1588 form_structure2.DetermineHeuristicTypes(TestAutofillMetrics());
1621 EXPECT_FALSE(personal_data_->ImportFormData(form_structure2, 1589 EXPECT_FALSE(personal_data_->ImportFormData(form_structure2,
1622 &imported_credit_card)); 1590 &imported_credit_card));
1623 ASSERT_FALSE(imported_credit_card); 1591 ASSERT_FALSE(imported_credit_card);
1624 1592
1625 // Since no refresh is expected, reload the data from the database to make 1593 // Since no refresh is expected, reload the data from the database to make
1626 // sure no changes were written out. 1594 // sure no changes were written out.
1627 ResetPersonalDataManager(); 1595 ResetPersonalDataManager(false);
1628 1596
1629 const std::vector<CreditCard*>& results2 = personal_data_->GetCreditCards(); 1597 const std::vector<CreditCard*>& results2 = personal_data_->GetCreditCards();
1630 ASSERT_EQ(1U, results2.size()); 1598 ASSERT_EQ(1U, results2.size());
1631 EXPECT_EQ(0, expected.Compare(*results2[0])); 1599 EXPECT_EQ(0, expected.Compare(*results2[0]));
1632 } 1600 }
1633 1601
1634 TEST_F(PersonalDataManagerTest, AggregateSameCreditCardWithConflict) { 1602 TEST_F(PersonalDataManagerTest, AggregateSameCreditCardWithConflict) {
1635 FormData form1; 1603 FormData form1;
1636 1604
1637 // Start with a single valid credit card form. 1605 // Start with a single valid credit card form.
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
1749 form2.fields.push_back(field); 1717 form2.fields.push_back(field);
1750 1718
1751 FormStructure form_structure2(form2); 1719 FormStructure form_structure2(form2);
1752 form_structure2.DetermineHeuristicTypes(TestAutofillMetrics()); 1720 form_structure2.DetermineHeuristicTypes(TestAutofillMetrics());
1753 EXPECT_FALSE(personal_data_->ImportFormData(form_structure2, 1721 EXPECT_FALSE(personal_data_->ImportFormData(form_structure2,
1754 &imported_credit_card)); 1722 &imported_credit_card));
1755 EXPECT_FALSE(imported_credit_card); 1723 EXPECT_FALSE(imported_credit_card);
1756 1724
1757 // Since no refresh is expected, reload the data from the database to make 1725 // Since no refresh is expected, reload the data from the database to make
1758 // sure no changes were written out. 1726 // sure no changes were written out.
1759 ResetPersonalDataManager(); 1727 ResetPersonalDataManager(false);
1760 1728
1761 // No change is expected. 1729 // No change is expected.
1762 CreditCard expected2(base::GenerateGUID(), "https://www.example.com"); 1730 CreditCard expected2(base::GenerateGUID(), "https://www.example.com");
1763 test::SetCreditCardInfo(&expected2, 1731 test::SetCreditCardInfo(&expected2,
1764 "Biggie Smalls", "4111111111111111", "01", "2011"); 1732 "Biggie Smalls", "4111111111111111", "01", "2011");
1765 const std::vector<CreditCard*>& results2 = personal_data_->GetCreditCards(); 1733 const std::vector<CreditCard*>& results2 = personal_data_->GetCreditCards();
1766 ASSERT_EQ(1U, results2.size()); 1734 ASSERT_EQ(1U, results2.size());
1767 EXPECT_EQ(0, expected2.Compare(*results2[0])); 1735 EXPECT_EQ(0, expected2.Compare(*results2[0]));
1768 } 1736 }
1769 1737
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1816 form2.fields.push_back(field); 1784 form2.fields.push_back(field);
1817 1785
1818 FormStructure form_structure2(form2); 1786 FormStructure form_structure2(form2);
1819 form_structure2.DetermineHeuristicTypes(TestAutofillMetrics()); 1787 form_structure2.DetermineHeuristicTypes(TestAutofillMetrics());
1820 EXPECT_TRUE(personal_data_->ImportFormData(form_structure2, 1788 EXPECT_TRUE(personal_data_->ImportFormData(form_structure2,
1821 &imported_credit_card)); 1789 &imported_credit_card));
1822 EXPECT_FALSE(imported_credit_card); 1790 EXPECT_FALSE(imported_credit_card);
1823 1791
1824 // Since no refresh is expected, reload the data from the database to make 1792 // Since no refresh is expected, reload the data from the database to make
1825 // sure no changes were written out. 1793 // sure no changes were written out.
1826 ResetPersonalDataManager(); 1794 ResetPersonalDataManager(false);
1827 1795
1828 // No change is expected. 1796 // No change is expected.
1829 CreditCard expected2(base::GenerateGUID(), "https://www.example.com"); 1797 CreditCard expected2(base::GenerateGUID(), "https://www.example.com");
1830 test::SetCreditCardInfo(&expected2, 1798 test::SetCreditCardInfo(&expected2,
1831 "Biggie Smalls", "4111111111111111", "01", "2011"); 1799 "Biggie Smalls", "4111111111111111", "01", "2011");
1832 const std::vector<CreditCard*>& results2 = personal_data_->GetCreditCards(); 1800 const std::vector<CreditCard*>& results2 = personal_data_->GetCreditCards();
1833 ASSERT_EQ(1U, results2.size()); 1801 ASSERT_EQ(1U, results2.size());
1834 EXPECT_EQ(0, expected2.Compare(*results2[0])); 1802 EXPECT_EQ(0, expected2.Compare(*results2[0]));
1835 1803
1836 // Add a third credit card where the expiration date is missing. 1804 // Add a third credit card where the expiration date is missing.
1837 FormData form3; 1805 FormData form3;
1838 test::CreateTestFormField( 1806 test::CreateTestFormField(
1839 "Name on card:", "name_on_card", "Johnny McEnroe", "text", &field); 1807 "Name on card:", "name_on_card", "Johnny McEnroe", "text", &field);
1840 form3.fields.push_back(field); 1808 form3.fields.push_back(field);
1841 test::CreateTestFormField( 1809 test::CreateTestFormField(
1842 "Card Number:", "card_number", "5555555555554444", "text", &field); 1810 "Card Number:", "card_number", "5555555555554444", "text", &field);
1843 form3.fields.push_back(field); 1811 form3.fields.push_back(field);
1844 // Note missing expiration month and year.. 1812 // Note missing expiration month and year..
1845 1813
1846 FormStructure form_structure3(form3); 1814 FormStructure form_structure3(form3);
1847 form_structure3.DetermineHeuristicTypes(TestAutofillMetrics()); 1815 form_structure3.DetermineHeuristicTypes(TestAutofillMetrics());
1848 EXPECT_FALSE(personal_data_->ImportFormData(form_structure3, 1816 EXPECT_FALSE(personal_data_->ImportFormData(form_structure3,
1849 &imported_credit_card)); 1817 &imported_credit_card));
1850 ASSERT_FALSE(imported_credit_card); 1818 ASSERT_FALSE(imported_credit_card);
1851 1819
1852 // Since no refresh is expected, reload the data from the database to make 1820 // Since no refresh is expected, reload the data from the database to make
1853 // sure no changes were written out. 1821 // sure no changes were written out.
1854 ResetPersonalDataManager(); 1822 ResetPersonalDataManager(false);
1855 1823
1856 // No change is expected. 1824 // No change is expected.
1857 CreditCard expected3(base::GenerateGUID(), "https://www.example.com"); 1825 CreditCard expected3(base::GenerateGUID(), "https://www.example.com");
1858 test::SetCreditCardInfo(&expected3, 1826 test::SetCreditCardInfo(&expected3,
1859 "Biggie Smalls", "4111111111111111", "01", "2011"); 1827 "Biggie Smalls", "4111111111111111", "01", "2011");
1860 const std::vector<CreditCard*>& results3 = personal_data_->GetCreditCards(); 1828 const std::vector<CreditCard*>& results3 = personal_data_->GetCreditCards();
1861 ASSERT_EQ(1U, results3.size()); 1829 ASSERT_EQ(1U, results3.size());
1862 EXPECT_EQ(0, expected3.Compare(*results3[0])); 1830 EXPECT_EQ(0, expected3.Compare(*results3[0]));
1863 } 1831 }
1864 1832
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
1952 1920
1953 FormStructure form_structure(form); 1921 FormStructure form_structure(form);
1954 form_structure.DetermineHeuristicTypes(TestAutofillMetrics()); 1922 form_structure.DetermineHeuristicTypes(TestAutofillMetrics());
1955 scoped_ptr<CreditCard> imported_credit_card; 1923 scoped_ptr<CreditCard> imported_credit_card;
1956 EXPECT_TRUE(personal_data_->ImportFormData(form_structure, 1924 EXPECT_TRUE(personal_data_->ImportFormData(form_structure,
1957 &imported_credit_card)); 1925 &imported_credit_card));
1958 EXPECT_FALSE(imported_credit_card); 1926 EXPECT_FALSE(imported_credit_card);
1959 1927
1960 // Since no refresh is expected, reload the data from the database to make 1928 // Since no refresh is expected, reload the data from the database to make
1961 // sure no changes were written out. 1929 // sure no changes were written out.
1962 ResetPersonalDataManager(); 1930 ResetPersonalDataManager(false);
1963 1931
1964 // Expect that no new card is saved. 1932 // Expect that no new card is saved.
1965 const std::vector<CreditCard*>& results2 = personal_data_->GetCreditCards(); 1933 const std::vector<CreditCard*>& results2 = personal_data_->GetCreditCards();
1966 ASSERT_EQ(1U, results2.size()); 1934 ASSERT_EQ(1U, results2.size());
1967 EXPECT_EQ(0, saved_credit_card.Compare(*results2[0])); 1935 EXPECT_EQ(0, saved_credit_card.Compare(*results2[0]));
1968 } 1936 }
1969 1937
1970 // Ensure that if a verified profile already exists, aggregated profiles cannot 1938 // Ensure that if a verified profile already exists, aggregated profiles cannot
1971 // modify it in any way. 1939 // modify it in any way.
1972 TEST_F(PersonalDataManagerTest, AggregateExistingVerifiedProfileWithConflict) { 1940 TEST_F(PersonalDataManagerTest, AggregateExistingVerifiedProfileWithConflict) {
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
2060 2028
2061 FormStructure form_structure(form); 2029 FormStructure form_structure(form);
2062 form_structure.DetermineHeuristicTypes(TestAutofillMetrics()); 2030 form_structure.DetermineHeuristicTypes(TestAutofillMetrics());
2063 scoped_ptr<CreditCard> imported_credit_card; 2031 scoped_ptr<CreditCard> imported_credit_card;
2064 EXPECT_TRUE(personal_data_->ImportFormData(form_structure, 2032 EXPECT_TRUE(personal_data_->ImportFormData(form_structure,
2065 &imported_credit_card)); 2033 &imported_credit_card));
2066 ASSERT_FALSE(imported_credit_card); 2034 ASSERT_FALSE(imported_credit_card);
2067 2035
2068 // Since no refresh is expected, reload the data from the database to make 2036 // Since no refresh is expected, reload the data from the database to make
2069 // sure no changes were written out. 2037 // sure no changes were written out.
2070 ResetPersonalDataManager(); 2038 ResetPersonalDataManager(false);
2071 2039
2072 // Expect that the saved credit card is not modified. 2040 // Expect that the saved credit card is not modified.
2073 const std::vector<CreditCard*>& results = personal_data_->GetCreditCards(); 2041 const std::vector<CreditCard*>& results = personal_data_->GetCreditCards();
2074 ASSERT_EQ(1U, results.size()); 2042 ASSERT_EQ(1U, results.size());
2075 EXPECT_EQ(0, credit_card.Compare(*results[0])); 2043 EXPECT_EQ(0, credit_card.Compare(*results[0]));
2076 } 2044 }
2077 2045
2078 // Ensure that verified profiles can be saved via SaveImportedProfile, 2046 // Ensure that verified profiles can be saved via SaveImportedProfile,
2079 // overwriting existing unverified profiles. 2047 // overwriting existing unverified profiles.
2080 TEST_F(PersonalDataManagerTest, SaveImportedProfileWithVerifiedData) { 2048 TEST_F(PersonalDataManagerTest, SaveImportedProfileWithVerifiedData) {
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after
2419 test::SetProfileInfo(&steve_jobs, "Steven", "Paul", "Jobs", "sjobs@apple.com", 2387 test::SetProfileInfo(&steve_jobs, "Steven", "Paul", "Jobs", "sjobs@apple.com",
2420 "Apple Computer, Inc.", "1 Infinite Loop", "", "Cupertino", "CA", "95014", 2388 "Apple Computer, Inc.", "1 Infinite Loop", "", "Cupertino", "CA", "95014",
2421 "US", "(800) 275-2273"); 2389 "US", "(800) 275-2273");
2422 personal_data_->AddProfile(steve_jobs); 2390 personal_data_->AddProfile(steve_jobs);
2423 2391
2424 CreditCard bill_gates(base::GenerateGUID(), "https://www.example.com"); 2392 CreditCard bill_gates(base::GenerateGUID(), "https://www.example.com");
2425 test::SetCreditCardInfo( 2393 test::SetCreditCardInfo(
2426 &bill_gates, "William H. Gates", "5555555555554444", "1", "2020"); 2394 &bill_gates, "William H. Gates", "5555555555554444", "1", "2020");
2427 personal_data_->AddCreditCard(bill_gates); 2395 personal_data_->AddCreditCard(bill_gates);
2428 2396
2429 MakeProfileIncognito();
2430
2431 // The personal data manager should be able to read existing profiles in an 2397 // The personal data manager should be able to read existing profiles in an
2432 // off-the-record context. 2398 // off-the-record context.
2433 ResetPersonalDataManager(); 2399 ResetPersonalDataManager(true);
2434 ASSERT_EQ(1U, personal_data_->GetProfiles().size()); 2400 ASSERT_EQ(1U, personal_data_->GetProfiles().size());
2435 ASSERT_EQ(1U, personal_data_->GetCreditCards().size()); 2401 ASSERT_EQ(1U, personal_data_->GetCreditCards().size());
2436 2402
2437 // No adds, saves, or updates should take effect. 2403 // No adds, saves, or updates should take effect.
2438 EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged()).Times(0); 2404 EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged()).Times(0);
2439 2405
2440 // Add profiles or credit card shouldn't work. 2406 // Add profiles or credit card shouldn't work.
2441 personal_data_->AddProfile(test::GetFullProfile()); 2407 personal_data_->AddProfile(test::GetFullProfile());
2442 2408
2443 CreditCard larry_page(base::GenerateGUID(), "https://www.example.com"); 2409 CreditCard larry_page(base::GenerateGUID(), "https://www.example.com");
2444 test::SetCreditCardInfo( 2410 test::SetCreditCardInfo(
2445 &larry_page, "Lawrence Page", "4111111111111111", "10", "2025"); 2411 &larry_page, "Lawrence Page", "4111111111111111", "10", "2025");
2446 personal_data_->AddCreditCard(larry_page); 2412 personal_data_->AddCreditCard(larry_page);
2447 2413
2448 ResetPersonalDataManager(); 2414 ResetPersonalDataManager(true);
2449 EXPECT_EQ(1U, personal_data_->GetProfiles().size()); 2415 EXPECT_EQ(1U, personal_data_->GetProfiles().size());
2450 EXPECT_EQ(1U, personal_data_->GetCreditCards().size()); 2416 EXPECT_EQ(1U, personal_data_->GetCreditCards().size());
2451 2417
2452 // Saving or creating profiles from imported profiles shouldn't work. 2418 // Saving or creating profiles from imported profiles shouldn't work.
2453 steve_jobs.SetRawInfo(NAME_FIRST, ASCIIToUTF16("Steve")); 2419 steve_jobs.SetRawInfo(NAME_FIRST, ASCIIToUTF16("Steve"));
2454 personal_data_->SaveImportedProfile(steve_jobs); 2420 personal_data_->SaveImportedProfile(steve_jobs);
2455 2421
2456 bill_gates.SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Bill Gates")); 2422 bill_gates.SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Bill Gates"));
2457 personal_data_->SaveImportedCreditCard(bill_gates); 2423 personal_data_->SaveImportedCreditCard(bill_gates);
2458 2424
2459 ResetPersonalDataManager(); 2425 ResetPersonalDataManager(true);
2460 EXPECT_EQ(ASCIIToUTF16("Steven"), 2426 EXPECT_EQ(ASCIIToUTF16("Steven"),
2461 personal_data_->GetProfiles()[0]->GetRawInfo(NAME_FIRST)); 2427 personal_data_->GetProfiles()[0]->GetRawInfo(NAME_FIRST));
2462 EXPECT_EQ(ASCIIToUTF16("William H. Gates"), 2428 EXPECT_EQ(ASCIIToUTF16("William H. Gates"),
2463 personal_data_->GetCreditCards()[0]->GetRawInfo(CREDIT_CARD_NAME)); 2429 personal_data_->GetCreditCards()[0]->GetRawInfo(CREDIT_CARD_NAME));
2464 2430
2465 // Updating existing profiles shouldn't work. 2431 // Updating existing profiles shouldn't work.
2466 steve_jobs.SetRawInfo(NAME_FIRST, ASCIIToUTF16("Steve")); 2432 steve_jobs.SetRawInfo(NAME_FIRST, ASCIIToUTF16("Steve"));
2467 personal_data_->UpdateProfile(steve_jobs); 2433 personal_data_->UpdateProfile(steve_jobs);
2468 2434
2469 bill_gates.SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Bill Gates")); 2435 bill_gates.SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Bill Gates"));
2470 personal_data_->UpdateCreditCard(bill_gates); 2436 personal_data_->UpdateCreditCard(bill_gates);
2471 2437
2472 ResetPersonalDataManager(); 2438 ResetPersonalDataManager(true);
2473 EXPECT_EQ(ASCIIToUTF16("Steven"), 2439 EXPECT_EQ(ASCIIToUTF16("Steven"),
2474 personal_data_->GetProfiles()[0]->GetRawInfo(NAME_FIRST)); 2440 personal_data_->GetProfiles()[0]->GetRawInfo(NAME_FIRST));
2475 EXPECT_EQ(ASCIIToUTF16("William H. Gates"), 2441 EXPECT_EQ(ASCIIToUTF16("William H. Gates"),
2476 personal_data_->GetCreditCards()[0]->GetRawInfo(CREDIT_CARD_NAME)); 2442 personal_data_->GetCreditCards()[0]->GetRawInfo(CREDIT_CARD_NAME));
2477 2443
2478 // Removing shouldn't work. 2444 // Removing shouldn't work.
2479 personal_data_->RemoveByGUID(steve_jobs.guid()); 2445 personal_data_->RemoveByGUID(steve_jobs.guid());
2480 personal_data_->RemoveByGUID(bill_gates.guid()); 2446 personal_data_->RemoveByGUID(bill_gates.guid());
2481 2447
2482 ResetPersonalDataManager(); 2448 ResetPersonalDataManager(true);
2483 EXPECT_EQ(1U, personal_data_->GetProfiles().size()); 2449 EXPECT_EQ(1U, personal_data_->GetProfiles().size());
2484 EXPECT_EQ(1U, personal_data_->GetCreditCards().size()); 2450 EXPECT_EQ(1U, personal_data_->GetCreditCards().size());
2485 } 2451 }
2486 2452
2487 TEST_F(PersonalDataManagerTest, DefaultCountryCodeIsCached) { 2453 TEST_F(PersonalDataManagerTest, DefaultCountryCodeIsCached) {
2488 // The return value should always be some country code, no matter what. 2454 // The return value should always be some country code, no matter what.
2489 std::string default_country = 2455 std::string default_country =
2490 personal_data_->GetDefaultCountryCodeForNewAddress(); 2456 personal_data_->GetDefaultCountryCodeForNewAddress();
2491 EXPECT_EQ(2U, default_country.size()); 2457 EXPECT_EQ(2U, default_country.size());
2492 2458
2493 AutofillProfile moose(base::GenerateGUID(), "Chrome settings"); 2459 AutofillProfile moose(base::GenerateGUID(), "Chrome settings");
2494 test::SetProfileInfo(&moose, "Moose", "P", "McMahon", "mpm@example.com", 2460 test::SetProfileInfo(&moose, "Moose", "P", "McMahon", "mpm@example.com",
2495 "", "1 Taiga TKTR", "", "Calgary", "AB", "T2B 2K2", 2461 "", "1 Taiga TKTR", "", "Calgary", "AB", "T2B 2K2",
2496 "CA", "(800) 555-9000"); 2462 "CA", "(800) 555-9000");
2497 personal_data_->AddProfile(moose); 2463 personal_data_->AddProfile(moose);
2498 EXPECT_CALL(personal_data_observer_, 2464 EXPECT_CALL(personal_data_observer_,
2499 OnPersonalDataChanged()).WillOnce(QuitUIMessageLoop()); 2465 OnPersonalDataChanged()).WillOnce(QuitUIMessageLoop());
2500 base::MessageLoop::current()->Run(); 2466 base::MessageLoop::current()->Run();
2501 // The value is cached and doesn't change even after adding an address. 2467 // The value is cached and doesn't change even after adding an address.
2502 EXPECT_EQ(default_country, 2468 EXPECT_EQ(default_country,
2503 personal_data_->GetDefaultCountryCodeForNewAddress()); 2469 personal_data_->GetDefaultCountryCodeForNewAddress());
2504 2470
2505 EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged()).Times(2); 2471 EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged()).Times(2);
2506 2472
2507 // Disabling Autofill blows away this cache and shouldn't account for Autofill 2473 // Disabling Autofill blows away this cache and shouldn't account for Autofill
2508 // profiles. 2474 // profiles.
2509 profile_->GetPrefs()->SetBoolean(prefs::kAutofillEnabled, false); 2475 prefs_->SetBoolean(prefs::kAutofillEnabled, false);
2510 EXPECT_EQ(default_country, 2476 EXPECT_EQ(default_country,
2511 personal_data_->GetDefaultCountryCodeForNewAddress()); 2477 personal_data_->GetDefaultCountryCodeForNewAddress());
2512 2478
2513 // Enabling Autofill blows away the cached value and should reflect the new 2479 // Enabling Autofill blows away the cached value and should reflect the new
2514 // value (accounting for profiles). 2480 // value (accounting for profiles).
2515 profile_->GetPrefs()->SetBoolean(prefs::kAutofillEnabled, true); 2481 prefs_->SetBoolean(prefs::kAutofillEnabled, true);
2516 EXPECT_EQ(base::UTF16ToUTF8(moose.GetRawInfo(ADDRESS_HOME_COUNTRY)), 2482 EXPECT_EQ(base::UTF16ToUTF8(moose.GetRawInfo(ADDRESS_HOME_COUNTRY)),
2517 personal_data_->GetDefaultCountryCodeForNewAddress()); 2483 personal_data_->GetDefaultCountryCodeForNewAddress());
2518 } 2484 }
2519 2485
2520 TEST_F(PersonalDataManagerTest, DefaultCountryCodeComesFromProfiles) { 2486 TEST_F(PersonalDataManagerTest, DefaultCountryCodeComesFromProfiles) {
2521 AutofillProfile moose(base::GenerateGUID(), "Chrome settings"); 2487 AutofillProfile moose(base::GenerateGUID(), "Chrome settings");
2522 test::SetProfileInfo(&moose, "Moose", "P", "McMahon", "mpm@example.com", 2488 test::SetProfileInfo(&moose, "Moose", "P", "McMahon", "mpm@example.com",
2523 "", "1 Taiga TKTR", "", "Calgary", "AB", "T2B 2K2", 2489 "", "1 Taiga TKTR", "", "Calgary", "AB", "T2B 2K2",
2524 "CA", "(800) 555-9000"); 2490 "CA", "(800) 555-9000");
2525 personal_data_->AddProfile(moose); 2491 personal_data_->AddProfile(moose);
2526 ResetPersonalDataManager(); 2492 ResetPersonalDataManager(false);
2527 EXPECT_EQ("CA", personal_data_->GetDefaultCountryCodeForNewAddress()); 2493 EXPECT_EQ("CA", personal_data_->GetDefaultCountryCodeForNewAddress());
2528 2494
2529 // Multiple profiles cast votes. 2495 // Multiple profiles cast votes.
2530 AutofillProfile armadillo(base::GenerateGUID(), "Chrome settings"); 2496 AutofillProfile armadillo(base::GenerateGUID(), "Chrome settings");
2531 test::SetProfileInfo(&armadillo, "Armin", "Dill", "Oh", "ado@example.com", 2497 test::SetProfileInfo(&armadillo, "Armin", "Dill", "Oh", "ado@example.com",
2532 "", "1 Speed Bump", "", "Lubbock", "TX", "77500", 2498 "", "1 Speed Bump", "", "Lubbock", "TX", "77500",
2533 "MX", "(800) 555-9000"); 2499 "MX", "(800) 555-9000");
2534 AutofillProfile armadillo2(base::GenerateGUID(), "Chrome settings"); 2500 AutofillProfile armadillo2(base::GenerateGUID(), "Chrome settings");
2535 test::SetProfileInfo(&armadillo2, "Armin", "Dill", "Oh", "ado@example.com", 2501 test::SetProfileInfo(&armadillo2, "Armin", "Dill", "Oh", "ado@example.com",
2536 "", "2 Speed Bump", "", "Lubbock", "TX", "77500", 2502 "", "2 Speed Bump", "", "Lubbock", "TX", "77500",
2537 "MX", "(800) 555-9000"); 2503 "MX", "(800) 555-9000");
2538 personal_data_->AddProfile(armadillo); 2504 personal_data_->AddProfile(armadillo);
2539 personal_data_->AddProfile(armadillo2); 2505 personal_data_->AddProfile(armadillo2);
2540 ResetPersonalDataManager(); 2506 ResetPersonalDataManager(false);
2541 EXPECT_EQ("MX", personal_data_->GetDefaultCountryCodeForNewAddress()); 2507 EXPECT_EQ("MX", personal_data_->GetDefaultCountryCodeForNewAddress());
2542 2508
2543 personal_data_->RemoveByGUID(armadillo.guid()); 2509 personal_data_->RemoveByGUID(armadillo.guid());
2544 personal_data_->RemoveByGUID(armadillo2.guid()); 2510 personal_data_->RemoveByGUID(armadillo2.guid());
2545 ResetPersonalDataManager(); 2511 ResetPersonalDataManager(false);
2546 // Verified profiles count more. 2512 // Verified profiles count more.
2547 armadillo.set_origin("http://randomwebsite.com"); 2513 armadillo.set_origin("http://randomwebsite.com");
2548 armadillo2.set_origin("http://randomwebsite.com"); 2514 armadillo2.set_origin("http://randomwebsite.com");
2549 personal_data_->AddProfile(armadillo); 2515 personal_data_->AddProfile(armadillo);
2550 personal_data_->AddProfile(armadillo2); 2516 personal_data_->AddProfile(armadillo2);
2551 ResetPersonalDataManager(); 2517 ResetPersonalDataManager(false);
2552 EXPECT_EQ("CA", personal_data_->GetDefaultCountryCodeForNewAddress()); 2518 EXPECT_EQ("CA", personal_data_->GetDefaultCountryCodeForNewAddress());
2553 2519
2554 personal_data_->RemoveByGUID(armadillo.guid()); 2520 personal_data_->RemoveByGUID(armadillo.guid());
2555 ResetPersonalDataManager(); 2521 ResetPersonalDataManager(false);
2556 // But unverified profiles can be a tie breaker. 2522 // But unverified profiles can be a tie breaker.
2557 armadillo.set_origin("Chrome settings"); 2523 armadillo.set_origin("Chrome settings");
2558 personal_data_->AddProfile(armadillo); 2524 personal_data_->AddProfile(armadillo);
2559 ResetPersonalDataManager(); 2525 ResetPersonalDataManager(false);
2560 EXPECT_EQ("MX", personal_data_->GetDefaultCountryCodeForNewAddress()); 2526 EXPECT_EQ("MX", personal_data_->GetDefaultCountryCodeForNewAddress());
2561 2527
2562 // Invalid country codes are ignored. 2528 // Invalid country codes are ignored.
2563 personal_data_->RemoveByGUID(armadillo.guid()); 2529 personal_data_->RemoveByGUID(armadillo.guid());
2564 personal_data_->RemoveByGUID(moose.guid()); 2530 personal_data_->RemoveByGUID(moose.guid());
2565 AutofillProfile space_invader(base::GenerateGUID(), "Chrome settings"); 2531 AutofillProfile space_invader(base::GenerateGUID(), "Chrome settings");
2566 test::SetProfileInfo(&space_invader, "Marty", "", "Martian", 2532 test::SetProfileInfo(&space_invader, "Marty", "", "Martian",
2567 "mm@example.com", "", "1 Flying Object", "", "Valles Marineris", "", 2533 "mm@example.com", "", "1 Flying Object", "", "Valles Marineris", "",
2568 "", "XX", ""); 2534 "", "XX", "");
2569 personal_data_->AddProfile(moose); 2535 personal_data_->AddProfile(moose);
2570 ResetPersonalDataManager(); 2536 ResetPersonalDataManager(false);
2571 EXPECT_EQ("MX", personal_data_->GetDefaultCountryCodeForNewAddress()); 2537 EXPECT_EQ("MX", personal_data_->GetDefaultCountryCodeForNewAddress());
2572 } 2538 }
2573 2539
2574 } // namespace autofill 2540 } // namespace autofill
OLDNEW
« no previous file with comments | « components/autofill/core/browser/autofill_external_delegate_unittest.cc ('k') | components/components_tests.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698