OLD | NEW |
| 1 |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 3 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 4 // found in the LICENSE file. |
4 | 5 |
5 #include "base/macros.h" | 6 #include "base/macros.h" |
6 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
7 #include "chrome/browser/sync/test/integration/autofill_helper.h" | 8 #include "chrome/browser/sync/test/integration/autofill_helper.h" |
8 #include "chrome/browser/sync/test/integration/bookmarks_helper.h" | 9 #include "chrome/browser/sync/test/integration/bookmarks_helper.h" |
9 #include "chrome/browser/sync/test/integration/profile_sync_service_harness.h" | 10 #include "chrome/browser/sync/test/integration/profile_sync_service_harness.h" |
10 #include "chrome/browser/sync/test/integration/sync_integration_test_util.h" | |
11 #include "chrome/browser/sync/test/integration/sync_test.h" | 11 #include "chrome/browser/sync/test/integration/sync_test.h" |
12 #include "components/autofill/core/browser/autofill_profile.h" | 12 #include "components/autofill/core/browser/autofill_profile.h" |
13 #include "components/autofill/core/browser/credit_card.h" | 13 #include "components/autofill/core/browser/credit_card.h" |
14 #include "components/autofill/core/browser/personal_data_manager.h" | 14 #include "components/autofill/core/browser/personal_data_manager.h" |
15 #include "components/autofill/core/browser/webdata/autofill_entry.h" | 15 #include "components/autofill/core/browser/webdata/autofill_entry.h" |
16 #include "components/autofill/core/browser/webdata/autofill_table.h" | 16 #include "components/autofill/core/browser/webdata/autofill_table.h" |
17 | 17 |
18 | |
19 using autofill::AutofillKey; | 18 using autofill::AutofillKey; |
20 using autofill::AutofillTable; | 19 using autofill::AutofillTable; |
21 using autofill::AutofillProfile; | 20 using autofill::AutofillProfile; |
22 using autofill::AutofillType; | 21 using autofill::AutofillType; |
23 using autofill::CreditCard; | 22 using autofill::CreditCard; |
24 using autofill::PersonalDataManager; | 23 using autofill::PersonalDataManager; |
25 using autofill_helper::AddKeys; | 24 using autofill_helper::AddKeys; |
26 using autofill_helper::AddProfile; | 25 using autofill_helper::AddProfile; |
27 using autofill_helper::AwaitKeysMatch; | |
28 using autofill_helper::AwaitProfilesMatch; | |
29 using autofill_helper::CreateAutofillProfile; | 26 using autofill_helper::CreateAutofillProfile; |
30 using autofill_helper::CreateUniqueAutofillProfile; | 27 using autofill_helper::CreateUniqueAutofillProfile; |
31 using autofill_helper::GetAllAutoFillProfiles; | 28 using autofill_helper::GetAllAutoFillProfiles; |
32 using autofill_helper::GetAllKeys; | 29 using autofill_helper::GetAllKeys; |
33 using autofill_helper::GetPersonalDataManager; | 30 using autofill_helper::GetPersonalDataManager; |
34 using autofill_helper::GetProfileCount; | 31 using autofill_helper::GetProfileCount; |
35 using autofill_helper::KeysMatch; | 32 using autofill_helper::KeysMatch; |
36 using autofill_helper::ProfilesMatch; | 33 using autofill_helper::ProfilesMatch; |
37 using autofill_helper::PROFILE_FRASIER; | 34 using autofill_helper::PROFILE_FRASIER; |
38 using autofill_helper::PROFILE_HOMER; | 35 using autofill_helper::PROFILE_HOMER; |
39 using autofill_helper::PROFILE_MARION; | 36 using autofill_helper::PROFILE_MARION; |
40 using autofill_helper::PROFILE_NULL; | 37 using autofill_helper::PROFILE_NULL; |
41 using autofill_helper::RemoveKey; | 38 using autofill_helper::RemoveKey; |
42 using autofill_helper::RemoveProfile; | 39 using autofill_helper::RemoveProfile; |
43 using autofill_helper::SetCreditCards; | 40 using autofill_helper::SetCreditCards; |
44 using autofill_helper::UpdateProfile; | 41 using autofill_helper::UpdateProfile; |
45 using bookmarks_helper::AddFolder; | 42 using bookmarks_helper::AddFolder; |
46 using bookmarks_helper::AddURL; | 43 using bookmarks_helper::AddURL; |
47 using bookmarks_helper::IndexedURL; | 44 using bookmarks_helper::IndexedURL; |
48 using bookmarks_helper::IndexedURLTitle; | 45 using bookmarks_helper::IndexedURLTitle; |
49 using sync_integration_test_util::AwaitCommitActivityCompletion; | |
50 | 46 |
51 class TwoClientAutofillSyncTest : public SyncTest { | 47 class TwoClientAutofillSyncTest : public SyncTest { |
52 public: | 48 public: |
53 TwoClientAutofillSyncTest() : SyncTest(TWO_CLIENT) { count = 0; } | 49 TwoClientAutofillSyncTest() : SyncTest(TWO_CLIENT) { count = 0; } |
54 ~TwoClientAutofillSyncTest() override {} | 50 ~TwoClientAutofillSyncTest() override {} |
55 | 51 |
56 bool TestUsesSelfNotifications() override { return false; } | 52 bool TestUsesSelfNotifications() override { return false; } |
57 | 53 |
58 // We do this so as to make a change that will trigger the autofill to sync. | 54 // We do this so as to make a change that will trigger the autofill to sync. |
59 // By default autofill does not sync unless there is some other change. | 55 // By default autofill does not sync unless there is some other change. |
60 void MakeABookmarkChange(int profile) { | 56 void MakeABookmarkChange(int profile) { |
61 ASSERT_TRUE( | 57 ASSERT_TRUE( |
62 AddURL(profile, IndexedURLTitle(count), GURL(IndexedURL(count)))); | 58 AddURL(profile, IndexedURLTitle(count), GURL(IndexedURL(count)))); |
63 ++count; | 59 ++count; |
64 } | 60 } |
65 private: | 61 private: |
66 int count; | 62 int count; |
67 DISALLOW_COPY_AND_ASSIGN(TwoClientAutofillSyncTest); | 63 DISALLOW_COPY_AND_ASSIGN(TwoClientAutofillSyncTest); |
68 }; | 64 }; |
69 | 65 |
70 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, WebDataServiceSanity) { | 66 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, WebDataServiceSanity) { |
71 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | 67 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
72 | 68 |
73 // Client0 adds a key. | 69 // Client0 adds a key. |
74 std::set<AutofillKey> keys; | 70 std::set<AutofillKey> keys; |
75 keys.insert(AutofillKey("name0", "value0")); | 71 keys.insert(AutofillKey("name0", "value0")); |
76 AddKeys(0, keys); | 72 AddKeys(0, keys); |
77 MakeABookmarkChange(0); | 73 MakeABookmarkChange(0); |
78 ASSERT_TRUE(AwaitKeysMatch(0, 1)); | 74 ASSERT_TRUE(AutofillKeysChecker(0, 1).Wait()); |
79 ASSERT_EQ(1U, GetAllKeys(0).size()); | 75 ASSERT_EQ(1U, GetAllKeys(0).size()); |
80 | 76 |
81 // Client1 adds a key. | 77 // Client1 adds a key. |
82 keys.clear(); | 78 keys.clear(); |
83 keys.insert(AutofillKey("name1", "value1-0")); | 79 keys.insert(AutofillKey("name1", "value1-0")); |
84 AddKeys(1, keys); | 80 AddKeys(1, keys); |
85 MakeABookmarkChange(1); | 81 MakeABookmarkChange(1); |
86 ASSERT_TRUE(AwaitKeysMatch(0, 1)); | 82 ASSERT_TRUE(AutofillKeysChecker(0, 1).Wait()); |
87 ASSERT_EQ(2U, GetAllKeys(0).size()); | 83 ASSERT_EQ(2U, GetAllKeys(0).size()); |
88 | 84 |
89 // Client0 adds a key with the same name. | 85 // Client0 adds a key with the same name. |
90 keys.clear(); | 86 keys.clear(); |
91 keys.insert(AutofillKey("name1", "value1-1")); | 87 keys.insert(AutofillKey("name1", "value1-1")); |
92 AddKeys(0, keys); | 88 AddKeys(0, keys); |
93 MakeABookmarkChange(0); | 89 MakeABookmarkChange(0); |
94 ASSERT_TRUE(AwaitKeysMatch(0, 1)); | 90 ASSERT_TRUE(AutofillKeysChecker(0, 1).Wait()); |
95 ASSERT_EQ(3U, GetAllKeys(0).size()); | 91 ASSERT_EQ(3U, GetAllKeys(0).size()); |
96 | 92 |
97 // Client1 removes a key. | 93 // Client1 removes a key. |
98 RemoveKey(1, AutofillKey("name1", "value1-0")); | 94 RemoveKey(1, AutofillKey("name1", "value1-0")); |
99 MakeABookmarkChange(1); | 95 MakeABookmarkChange(1); |
100 ASSERT_TRUE(AwaitKeysMatch(0, 1)); | 96 ASSERT_TRUE(AutofillKeysChecker(0, 1).Wait()); |
101 ASSERT_EQ(2U, GetAllKeys(0).size()); | 97 ASSERT_EQ(2U, GetAllKeys(0).size()); |
102 | 98 |
103 // Client0 removes the rest. | 99 // Client0 removes the rest. |
104 RemoveKey(0, AutofillKey("name0", "value0")); | 100 RemoveKey(0, AutofillKey("name0", "value0")); |
105 RemoveKey(0, AutofillKey("name1", "value1-1")); | 101 RemoveKey(0, AutofillKey("name1", "value1-1")); |
106 MakeABookmarkChange(0); | 102 MakeABookmarkChange(0); |
107 ASSERT_TRUE(AwaitKeysMatch(0, 1)); | 103 ASSERT_TRUE(AutofillKeysChecker(0, 1).Wait()); |
108 ASSERT_EQ(0U, GetAllKeys(0).size()); | 104 ASSERT_EQ(0U, GetAllKeys(0).size()); |
109 } | 105 } |
110 | 106 |
111 // TCM ID - 3678296. | 107 // TCM ID - 3678296. |
112 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, AddUnicodeProfile) { | 108 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, AddUnicodeProfile) { |
113 ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; | 109 ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; |
114 | 110 |
115 std::set<AutofillKey> keys; | 111 std::set<AutofillKey> keys; |
116 keys.insert(AutofillKey(base::WideToUTF16(L"Sigur R\u00F3s"), | 112 keys.insert(AutofillKey(base::WideToUTF16(L"Sigur R\u00F3s"), |
117 base::WideToUTF16(L"\u00C1g\u00E6tis byrjun"))); | 113 base::WideToUTF16(L"\u00C1g\u00E6tis byrjun"))); |
118 AddKeys(0, keys); | 114 AddKeys(0, keys); |
119 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | 115 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
120 ASSERT_TRUE(AwaitKeysMatch(0, 1)); | 116 ASSERT_TRUE(AutofillKeysChecker(0, 1).Wait()); |
121 } | 117 } |
122 | 118 |
123 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, | 119 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, |
124 AddDuplicateNamesToSameProfile) { | 120 AddDuplicateNamesToSameProfile) { |
125 ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; | 121 ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; |
126 | 122 |
127 std::set<AutofillKey> keys; | 123 std::set<AutofillKey> keys; |
128 keys.insert(AutofillKey("name0", "value0-0")); | 124 keys.insert(AutofillKey("name0", "value0-0")); |
129 keys.insert(AutofillKey("name0", "value0-1")); | 125 keys.insert(AutofillKey("name0", "value0-1")); |
130 keys.insert(AutofillKey("name1", "value1")); | 126 keys.insert(AutofillKey("name1", "value1")); |
131 AddKeys(0, keys); | 127 AddKeys(0, keys); |
132 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | 128 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
133 ASSERT_TRUE(AwaitKeysMatch(0, 1)); | 129 ASSERT_TRUE(AutofillKeysChecker(0, 1).Wait()); |
134 ASSERT_EQ(2U, GetAllKeys(0).size()); | 130 ASSERT_EQ(2U, GetAllKeys(0).size()); |
135 } | 131 } |
136 | 132 |
137 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, | 133 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, |
138 AddDuplicateNamesToDifferentProfiles) { | 134 AddDuplicateNamesToDifferentProfiles) { |
139 ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; | 135 ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; |
140 | 136 |
141 std::set<AutofillKey> keys0; | 137 std::set<AutofillKey> keys0; |
142 keys0.insert(AutofillKey("name0", "value0-0")); | 138 keys0.insert(AutofillKey("name0", "value0-0")); |
143 keys0.insert(AutofillKey("name1", "value1")); | 139 keys0.insert(AutofillKey("name1", "value1")); |
144 AddKeys(0, keys0); | 140 AddKeys(0, keys0); |
145 | 141 |
146 std::set<AutofillKey> keys1; | 142 std::set<AutofillKey> keys1; |
147 keys1.insert(AutofillKey("name0", "value0-1")); | 143 keys1.insert(AutofillKey("name0", "value0-1")); |
148 keys1.insert(AutofillKey("name2", "value2")); | 144 keys1.insert(AutofillKey("name2", "value2")); |
149 keys1.insert(AutofillKey("name3", "value3")); | 145 keys1.insert(AutofillKey("name3", "value3")); |
150 AddKeys(1, keys1); | 146 AddKeys(1, keys1); |
151 | 147 |
152 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | 148 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
153 ASSERT_TRUE(AwaitKeysMatch(0, 1)); | 149 ASSERT_TRUE(AutofillKeysChecker(0, 1).Wait()); |
154 ASSERT_EQ(5U, GetAllKeys(0).size()); | 150 ASSERT_EQ(5U, GetAllKeys(0).size()); |
155 } | 151 } |
156 | 152 |
157 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, | 153 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, |
158 PersonalDataManagerSanity) { | 154 PersonalDataManagerSanity) { |
159 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | 155 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
160 | 156 |
161 // Client0 adds a profile. | 157 // Client0 adds a profile. |
162 AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); | 158 AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); |
163 MakeABookmarkChange(0); | 159 MakeABookmarkChange(0); |
164 ASSERT_TRUE(AwaitProfilesMatch(0, 1)); | 160 ASSERT_TRUE(AutofillProfileChecker(0, 1).Wait()); |
165 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); | 161 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); |
166 | 162 |
167 // Client1 adds a profile. | 163 // Client1 adds a profile. |
168 AddProfile(1, CreateAutofillProfile(PROFILE_MARION)); | 164 AddProfile(1, CreateAutofillProfile(PROFILE_MARION)); |
169 MakeABookmarkChange(1); | 165 MakeABookmarkChange(1); |
170 ASSERT_TRUE(AwaitProfilesMatch(0, 1)); | 166 ASSERT_TRUE(AutofillProfileChecker(0, 1).Wait()); |
171 ASSERT_EQ(2U, GetAllAutoFillProfiles(0).size()); | 167 ASSERT_EQ(2U, GetAllAutoFillProfiles(0).size()); |
172 | 168 |
173 // Client0 adds the same profile. | 169 // Client0 adds the same profile. |
174 AddProfile(0, CreateAutofillProfile(PROFILE_MARION)); | 170 AddProfile(0, CreateAutofillProfile(PROFILE_MARION)); |
175 MakeABookmarkChange(0); | 171 MakeABookmarkChange(0); |
176 ASSERT_TRUE(AwaitProfilesMatch(0, 1)); | 172 ASSERT_TRUE(AutofillProfileChecker(0, 1).Wait()); |
177 ASSERT_EQ(2U, GetAllAutoFillProfiles(0).size()); | 173 ASSERT_EQ(2U, GetAllAutoFillProfiles(0).size()); |
178 | 174 |
179 // Client1 removes a profile. | 175 // Client1 removes a profile. |
180 RemoveProfile(1, GetAllAutoFillProfiles(1)[0]->guid()); | 176 RemoveProfile(1, GetAllAutoFillProfiles(1)[0]->guid()); |
181 MakeABookmarkChange(1); | 177 MakeABookmarkChange(1); |
182 ASSERT_TRUE(AwaitProfilesMatch(0, 1)); | 178 ASSERT_TRUE(AutofillProfileChecker(0, 1).Wait()); |
183 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); | 179 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); |
184 | 180 |
185 // Client0 updates a profile. | 181 // Client0 updates a profile. |
186 UpdateProfile(0, | 182 UpdateProfile(0, |
187 GetAllAutoFillProfiles(0)[0]->guid(), | 183 GetAllAutoFillProfiles(0)[0]->guid(), |
188 AutofillType(autofill::NAME_FIRST), | 184 AutofillType(autofill::NAME_FIRST), |
189 base::ASCIIToUTF16("Bart")); | 185 base::ASCIIToUTF16("Bart")); |
190 MakeABookmarkChange(0); | 186 MakeABookmarkChange(0); |
191 ASSERT_TRUE(AwaitProfilesMatch(0, 1)); | 187 ASSERT_TRUE(AutofillProfileChecker(0, 1).Wait()); |
192 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); | 188 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); |
193 | 189 |
194 // Client1 removes remaining profile. | 190 // Client1 removes remaining profile. |
195 RemoveProfile(1, GetAllAutoFillProfiles(1)[0]->guid()); | 191 RemoveProfile(1, GetAllAutoFillProfiles(1)[0]->guid()); |
196 MakeABookmarkChange(1); | 192 MakeABookmarkChange(1); |
197 ASSERT_TRUE(AwaitProfilesMatch(0, 1)); | 193 ASSERT_TRUE(AutofillProfileChecker(0, 1).Wait()); |
198 ASSERT_EQ(0U, GetAllAutoFillProfiles(0).size()); | 194 ASSERT_EQ(0U, GetAllAutoFillProfiles(0).size()); |
199 } | 195 } |
200 | 196 |
201 // TCM ID - 7261786. | 197 // TCM ID - 7261786. |
202 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, AddDuplicateProfiles) { | 198 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, AddDuplicateProfiles) { |
203 ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; | 199 ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; |
204 | 200 |
205 AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); | 201 AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); |
206 AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); | 202 AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); |
207 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | 203 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
208 ASSERT_TRUE(AwaitProfilesMatch(0, 1)); | 204 ASSERT_TRUE(AutofillProfileChecker(0, 1).Wait()); |
209 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); | 205 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); |
210 } | 206 } |
211 | 207 |
212 // TCM ID - 3636294. | 208 // TCM ID - 3636294. |
213 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, SameProfileWithConflict) { | 209 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, SameProfileWithConflict) { |
214 ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; | 210 ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; |
215 | 211 |
216 AutofillProfile profile0 = CreateAutofillProfile(PROFILE_HOMER); | 212 AutofillProfile profile0 = CreateAutofillProfile(PROFILE_HOMER); |
217 AutofillProfile profile1 = CreateAutofillProfile(PROFILE_HOMER); | 213 AutofillProfile profile1 = CreateAutofillProfile(PROFILE_HOMER); |
218 profile1.SetRawInfo(autofill::PHONE_HOME_WHOLE_NUMBER, | 214 profile1.SetRawInfo(autofill::PHONE_HOME_WHOLE_NUMBER, |
219 base::ASCIIToUTF16("1234567890")); | 215 base::ASCIIToUTF16("1234567890")); |
220 | 216 |
221 AddProfile(0, profile0); | 217 AddProfile(0, profile0); |
222 AddProfile(1, profile1); | 218 AddProfile(1, profile1); |
223 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | 219 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
224 ASSERT_TRUE(AwaitProfilesMatch(0, 1)); | 220 ASSERT_TRUE(AutofillProfileChecker(0, 1).Wait()); |
225 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); | 221 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); |
226 } | 222 } |
227 | 223 |
228 // TCM ID - 3626291. | 224 // TCM ID - 3626291. |
229 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, AddEmptyProfile) { | 225 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, AddEmptyProfile) { |
230 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | 226 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
231 | 227 |
232 AddProfile(0, CreateAutofillProfile(PROFILE_NULL)); | 228 AddProfile(0, CreateAutofillProfile(PROFILE_NULL)); |
233 ASSERT_TRUE(AwaitProfilesMatch(0, 1)); | 229 ASSERT_TRUE(AutofillProfileChecker(0, 1).Wait()); |
234 ASSERT_EQ(0U, GetAllAutoFillProfiles(0).size()); | 230 ASSERT_EQ(0U, GetAllAutoFillProfiles(0).size()); |
235 } | 231 } |
236 | 232 |
237 // TCM ID - 3616283. | 233 // TCM ID - 3616283. |
238 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, AddProfile) { | 234 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, AddProfile) { |
239 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | 235 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
240 | 236 |
241 AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); | 237 AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); |
242 MakeABookmarkChange(0); | 238 MakeABookmarkChange(0); |
243 ASSERT_TRUE(AwaitProfilesMatch(0, 1)); | 239 ASSERT_TRUE(AutofillProfileChecker(0, 1).Wait()); |
244 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); | 240 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); |
245 } | 241 } |
246 | 242 |
247 // TCM ID - 3632260. | 243 // TCM ID - 3632260. |
248 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, AddMultipleProfiles) { | 244 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, AddMultipleProfiles) { |
249 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | 245 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
250 | 246 |
251 AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); | 247 AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); |
252 AddProfile(0, CreateAutofillProfile(PROFILE_MARION)); | 248 AddProfile(0, CreateAutofillProfile(PROFILE_MARION)); |
253 AddProfile(0, CreateAutofillProfile(PROFILE_FRASIER)); | 249 AddProfile(0, CreateAutofillProfile(PROFILE_FRASIER)); |
254 MakeABookmarkChange(0); | 250 MakeABookmarkChange(0); |
255 ASSERT_TRUE(AwaitProfilesMatch(0, 1)); | 251 ASSERT_TRUE(AutofillProfileChecker(0, 1).Wait()); |
256 ASSERT_EQ(3U, GetAllAutoFillProfiles(0).size()); | 252 ASSERT_EQ(3U, GetAllAutoFillProfiles(0).size()); |
257 } | 253 } |
258 | 254 |
259 // TCM ID - 3602257. | 255 // TCM ID - 3602257. |
260 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, DeleteProfile) { | 256 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, DeleteProfile) { |
261 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | 257 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
262 | 258 |
263 AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); | 259 AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); |
264 MakeABookmarkChange(0); | 260 MakeABookmarkChange(0); |
265 ASSERT_TRUE(AwaitProfilesMatch(0, 1)); | 261 ASSERT_TRUE(AutofillProfileChecker(0, 1).Wait()); |
266 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); | 262 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); |
267 | 263 |
268 RemoveProfile(1, GetAllAutoFillProfiles(1)[0]->guid()); | 264 RemoveProfile(1, GetAllAutoFillProfiles(1)[0]->guid()); |
269 MakeABookmarkChange(1); | 265 MakeABookmarkChange(1); |
270 ASSERT_TRUE(AwaitProfilesMatch(0, 1)); | 266 ASSERT_TRUE(AutofillProfileChecker(0, 1).Wait()); |
271 ASSERT_EQ(0U, GetAllAutoFillProfiles(0).size()); | 267 ASSERT_EQ(0U, GetAllAutoFillProfiles(0).size()); |
272 } | 268 } |
273 | 269 |
274 // TCM ID - 3627300. | 270 // TCM ID - 3627300. |
275 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, MergeProfiles) { | 271 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, MergeProfiles) { |
276 ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; | 272 ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; |
277 | 273 |
278 AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); | 274 AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); |
279 AddProfile(1, CreateAutofillProfile(PROFILE_MARION)); | 275 AddProfile(1, CreateAutofillProfile(PROFILE_MARION)); |
280 AddProfile(1, CreateAutofillProfile(PROFILE_FRASIER)); | 276 AddProfile(1, CreateAutofillProfile(PROFILE_FRASIER)); |
281 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | 277 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
282 ASSERT_TRUE(AwaitProfilesMatch(0, 1)); | 278 ASSERT_TRUE(AutofillProfileChecker(0, 1).Wait()); |
283 ASSERT_EQ(3U, GetAllAutoFillProfiles(0).size()); | 279 ASSERT_EQ(3U, GetAllAutoFillProfiles(0).size()); |
284 } | 280 } |
285 | 281 |
286 // TCM ID - 3665264. | 282 // TCM ID - 3665264. |
287 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, UpdateFields) { | 283 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, UpdateFields) { |
288 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | 284 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
289 | 285 |
290 AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); | 286 AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); |
291 MakeABookmarkChange(0); | 287 MakeABookmarkChange(0); |
292 ASSERT_TRUE(AwaitProfilesMatch(0, 1)); | 288 ASSERT_TRUE(AutofillProfileChecker(0, 1).Wait()); |
293 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); | 289 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); |
294 | 290 |
295 UpdateProfile(0, | 291 UpdateProfile(0, |
296 GetAllAutoFillProfiles(0)[0]->guid(), | 292 GetAllAutoFillProfiles(0)[0]->guid(), |
297 AutofillType(autofill::NAME_FIRST), | 293 AutofillType(autofill::NAME_FIRST), |
298 base::ASCIIToUTF16("Lisa")); | 294 base::ASCIIToUTF16("Lisa")); |
299 UpdateProfile(0, | 295 UpdateProfile(0, |
300 GetAllAutoFillProfiles(0)[0]->guid(), | 296 GetAllAutoFillProfiles(0)[0]->guid(), |
301 AutofillType(autofill::EMAIL_ADDRESS), | 297 AutofillType(autofill::EMAIL_ADDRESS), |
302 base::ASCIIToUTF16("grrrl@TV.com")); | 298 base::ASCIIToUTF16("grrrl@TV.com")); |
303 MakeABookmarkChange(0); | 299 MakeABookmarkChange(0); |
304 ASSERT_TRUE(AwaitProfilesMatch(0, 1)); | 300 ASSERT_TRUE(AutofillProfileChecker(0, 1).Wait()); |
305 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); | 301 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); |
306 } | 302 } |
307 | 303 |
308 // TCM ID - 3628299. | 304 // TCM ID - 3628299. |
309 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, ConflictingFields) { | 305 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, ConflictingFields) { |
310 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | 306 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
311 | 307 |
312 AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); | 308 AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); |
313 MakeABookmarkChange(0); | 309 MakeABookmarkChange(0); |
314 ASSERT_TRUE(AwaitProfilesMatch(0, 1)); | 310 ASSERT_TRUE(AutofillProfileChecker(0, 1).Wait()); |
315 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); | 311 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); |
316 UpdateProfile(0, | 312 UpdateProfile(0, |
317 GetAllAutoFillProfiles(0)[0]->guid(), | 313 GetAllAutoFillProfiles(0)[0]->guid(), |
318 AutofillType(autofill::NAME_FIRST), | 314 AutofillType(autofill::NAME_FIRST), |
319 base::ASCIIToUTF16("Lisa")); | 315 base::ASCIIToUTF16("Lisa")); |
320 MakeABookmarkChange(0); | 316 MakeABookmarkChange(0); |
321 UpdateProfile(1, | 317 UpdateProfile(1, |
322 GetAllAutoFillProfiles(1)[0]->guid(), | 318 GetAllAutoFillProfiles(1)[0]->guid(), |
323 AutofillType(autofill::NAME_FIRST), | 319 AutofillType(autofill::NAME_FIRST), |
324 base::ASCIIToUTF16("Bart")); | 320 base::ASCIIToUTF16("Bart")); |
325 MakeABookmarkChange(1); | 321 MakeABookmarkChange(1); |
326 ASSERT_TRUE(AwaitProfilesMatch(0, 1)); | 322 ASSERT_TRUE(AutofillProfileChecker(0, 1).Wait()); |
327 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); | 323 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); |
328 } | 324 } |
329 | 325 |
330 // TCM ID - 3608295. | 326 // TCM ID - 3608295. |
331 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, MaxLength) { | 327 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, MaxLength) { |
332 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | 328 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
333 | 329 |
334 AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); | 330 AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); |
335 MakeABookmarkChange(0); | 331 MakeABookmarkChange(0); |
336 ASSERT_TRUE(AwaitProfilesMatch(0, 1)); | 332 ASSERT_TRUE(AutofillProfileChecker(0, 1).Wait()); |
337 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); | 333 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); |
338 | 334 |
339 base::string16 max_length_string(AutofillTable::kMaxDataLength, '.'); | 335 base::string16 max_length_string(AutofillTable::kMaxDataLength, '.'); |
340 UpdateProfile(0, | 336 UpdateProfile(0, |
341 GetAllAutoFillProfiles(0)[0]->guid(), | 337 GetAllAutoFillProfiles(0)[0]->guid(), |
342 AutofillType(autofill::NAME_FULL), | 338 AutofillType(autofill::NAME_FULL), |
343 max_length_string); | 339 max_length_string); |
344 UpdateProfile(0, | 340 UpdateProfile(0, |
345 GetAllAutoFillProfiles(0)[0]->guid(), | 341 GetAllAutoFillProfiles(0)[0]->guid(), |
346 AutofillType(autofill::EMAIL_ADDRESS), | 342 AutofillType(autofill::EMAIL_ADDRESS), |
347 max_length_string); | 343 max_length_string); |
348 UpdateProfile(0, | 344 UpdateProfile(0, |
349 GetAllAutoFillProfiles(0)[0]->guid(), | 345 GetAllAutoFillProfiles(0)[0]->guid(), |
350 AutofillType(autofill::ADDRESS_HOME_LINE1), | 346 AutofillType(autofill::ADDRESS_HOME_LINE1), |
351 max_length_string); | 347 max_length_string); |
352 | 348 |
353 MakeABookmarkChange(0); | 349 MakeABookmarkChange(0); |
354 ASSERT_TRUE(AwaitProfilesMatch(0, 1)); | 350 ASSERT_TRUE(AutofillProfileChecker(0, 1).Wait()); |
355 } | 351 } |
356 | 352 |
357 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, ExceedsMaxLength) { | 353 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, ExceedsMaxLength) { |
358 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | 354 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
359 | 355 |
360 AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); | 356 AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); |
361 MakeABookmarkChange(0); | 357 MakeABookmarkChange(0); |
362 ASSERT_TRUE(AwaitProfilesMatch(0, 1)); | 358 ASSERT_TRUE(AutofillProfileChecker(0, 1).Wait()); |
363 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); | 359 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); |
364 | 360 |
365 base::string16 exceeds_max_length_string( | 361 base::string16 exceeds_max_length_string( |
366 AutofillTable::kMaxDataLength + 1, '.'); | 362 AutofillTable::kMaxDataLength + 1, '.'); |
367 UpdateProfile(0, | 363 UpdateProfile(0, |
368 GetAllAutoFillProfiles(0)[0]->guid(), | 364 GetAllAutoFillProfiles(0)[0]->guid(), |
369 AutofillType(autofill::NAME_FIRST), | 365 AutofillType(autofill::NAME_FIRST), |
370 exceeds_max_length_string); | 366 exceeds_max_length_string); |
371 UpdateProfile(0, | 367 UpdateProfile(0, |
372 GetAllAutoFillProfiles(0)[0]->guid(), | 368 GetAllAutoFillProfiles(0)[0]->guid(), |
373 AutofillType(autofill::NAME_LAST), | 369 AutofillType(autofill::NAME_LAST), |
374 exceeds_max_length_string); | 370 exceeds_max_length_string); |
375 UpdateProfile(0, | 371 UpdateProfile(0, |
376 GetAllAutoFillProfiles(0)[0]->guid(), | 372 GetAllAutoFillProfiles(0)[0]->guid(), |
377 AutofillType(autofill::EMAIL_ADDRESS), | 373 AutofillType(autofill::EMAIL_ADDRESS), |
378 exceeds_max_length_string); | 374 exceeds_max_length_string); |
379 UpdateProfile(0, | 375 UpdateProfile(0, |
380 GetAllAutoFillProfiles(0)[0]->guid(), | 376 GetAllAutoFillProfiles(0)[0]->guid(), |
381 AutofillType(autofill::ADDRESS_HOME_LINE1), | 377 AutofillType(autofill::ADDRESS_HOME_LINE1), |
382 exceeds_max_length_string); | 378 exceeds_max_length_string); |
383 | 379 |
384 MakeABookmarkChange(0); | 380 MakeABookmarkChange(0); |
385 ASSERT_TRUE(bookmarks_helper::AwaitAllModelsMatch()); | 381 ASSERT_TRUE(BookmarksMatchChecker().Wait()); |
386 EXPECT_FALSE(ProfilesMatch(0, 1)); | 382 EXPECT_FALSE(ProfilesMatch(0, 1)); |
387 } | 383 } |
388 | 384 |
389 // Test credit cards don't sync. | 385 // Test credit cards don't sync. |
390 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, NoCreditCardSync) { | 386 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, NoCreditCardSync) { |
391 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | 387 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
392 | 388 |
393 AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); | 389 AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); |
394 | 390 |
395 CreditCard card; | 391 CreditCard card; |
396 card.SetRawInfo(autofill::CREDIT_CARD_NUMBER, | 392 card.SetRawInfo(autofill::CREDIT_CARD_NUMBER, |
397 base::ASCIIToUTF16("6011111111111117")); | 393 base::ASCIIToUTF16("6011111111111117")); |
398 std::vector<CreditCard> credit_cards; | 394 std::vector<CreditCard> credit_cards; |
399 credit_cards.push_back(card); | 395 credit_cards.push_back(card); |
400 SetCreditCards(0, &credit_cards); | 396 SetCreditCards(0, &credit_cards); |
401 | 397 |
402 MakeABookmarkChange(0); | 398 MakeABookmarkChange(0); |
403 ASSERT_TRUE(AwaitProfilesMatch(0, 1)); | 399 ASSERT_TRUE(AutofillProfileChecker(0, 1).Wait()); |
404 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); | 400 ASSERT_EQ(1U, GetAllAutoFillProfiles(0).size()); |
405 | 401 |
406 PersonalDataManager* pdm = GetPersonalDataManager(1); | 402 PersonalDataManager* pdm = GetPersonalDataManager(1); |
407 ASSERT_EQ(0U, pdm->GetCreditCards().size()); | 403 ASSERT_EQ(0U, pdm->GetCreditCards().size()); |
408 } | 404 } |
409 | 405 |
410 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, | 406 IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, |
411 E2E_ONLY(TwoClientsAddAutofillProfiles)) { | 407 E2E_ONLY(TwoClientsAddAutofillProfiles)) { |
412 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | 408 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
413 | 409 |
414 // All profiles should sync same autofill profiles. | 410 // All profiles should sync same autofill profiles. |
415 ASSERT_TRUE(AwaitProfilesMatch(0, 1)) << | 411 ASSERT_TRUE(AutofillProfileChecker(0, 1).Wait()) |
416 "Initial autofill profiles did not match for all profiles."; | 412 << "Initial autofill profiles did not match for all profiles."; |
417 | 413 |
418 // For clean profiles, the autofill profiles count should be zero. We are not | 414 // For clean profiles, the autofill profiles count should be zero. We are not |
419 // enforcing this, we only check that the final count is equal to initial | 415 // enforcing this, we only check that the final count is equal to initial |
420 // count plus new autofill profiles count. | 416 // count plus new autofill profiles count. |
421 int init_autofill_profiles_count = GetProfileCount(0); | 417 int init_autofill_profiles_count = GetProfileCount(0); |
422 | 418 |
423 // Add a new autofill profile to the first client. | 419 // Add a new autofill profile to the first client. |
424 AddProfile(0, CreateUniqueAutofillProfile()); | 420 AddProfile(0, CreateUniqueAutofillProfile()); |
425 | 421 |
426 ASSERT_TRUE(AwaitProfilesMatch(0, 1)); | 422 ASSERT_TRUE(AutofillProfileChecker(0, 1).Wait()); |
427 | 423 |
428 // Check that the total number of autofill profiles is as expected | 424 // Check that the total number of autofill profiles is as expected |
429 for (int i = 0; i < num_clients(); ++i) { | 425 for (int i = 0; i < num_clients(); ++i) { |
430 ASSERT_EQ(GetProfileCount(i), init_autofill_profiles_count + 1) << | 426 ASSERT_EQ(GetProfileCount(i), init_autofill_profiles_count + 1) << |
431 "Total autofill profile count is wrong."; | 427 "Total autofill profile count is wrong."; |
432 } | 428 } |
433 } | 429 } |
OLD | NEW |