two_client_autofill_sync_test.cc revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sync/profile_sync_service_harness.h" 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sync/test/integration/autofill_helper.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sync/test/integration/bookmarks_helper.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sync/test/integration/sync_test.h" 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/browser/autofill_profile.h" 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/browser/credit_card.h" 12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/browser/personal_data_manager.h" 13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/browser/webdata/autofill_entry.h" 14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/browser/webdata/autofill_table.h" 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)using autofill::AutofillKey; 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)using autofill::AutofillTable; 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)using autofill::AutofillProfile; 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)using autofill::AutofillType; 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)using autofill::CreditCard; 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)using autofill::PersonalDataManager; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using autofill_helper::AddKeys; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using autofill_helper::AddProfile; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using autofill_helper::CreateAutofillProfile; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using autofill_helper::GetAllKeys; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using autofill_helper::GetAllProfiles; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using autofill_helper::GetPersonalDataManager; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using autofill_helper::KeysMatch; 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using autofill_helper::ProfilesMatch; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using autofill_helper::PROFILE_FRASIER; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using autofill_helper::PROFILE_HOMER; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using autofill_helper::PROFILE_MARION; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using autofill_helper::PROFILE_NULL; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using autofill_helper::RemoveKey; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using autofill_helper::RemoveProfile; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using autofill_helper::SetCreditCards; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using autofill_helper::UpdateProfile; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::AddFolder; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::AddURL; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::IndexedURL; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using bookmarks_helper::IndexedURLTitle; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TwoClientAutofillSyncTest : public SyncTest { 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TwoClientAutofillSyncTest() : SyncTest(TWO_CLIENT) { count = 0; } 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~TwoClientAutofillSyncTest() {} 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We do this so as to make a change that will trigger the autofill to sync. 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // By default autofill does not sync unless there is some other change. 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void MakeABookmarkChange(int profile) { 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddURL(profile, IndexedURLTitle(count), GURL(IndexedURL(count)))); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ++count; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int count; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TwoClientAutofillSyncTest); 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, WebDataServiceSanity) { 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Client0 adds a key. 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::set<AutofillKey> keys; 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) keys.insert(AutofillKey("name0", "value0")); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddKeys(0, keys); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(0); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(KeysMatch(0, 1)); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(1U, GetAllKeys(0).size()); 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Client1 adds a key. 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) keys.clear(); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) keys.insert(AutofillKey("name1", "value1-0")); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddKeys(1, keys); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(1); 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0))); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(KeysMatch(0, 1)); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(2U, GetAllKeys(0).size()); 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Client0 adds a key with the same name. 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) keys.clear(); 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) keys.insert(AutofillKey("name1", "value1-1")); 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddKeys(0, keys); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(0); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(KeysMatch(0, 1)); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(3U, GetAllKeys(0).size()); 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Client1 removes a key. 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RemoveKey(1, AutofillKey("name1", "value1-0")); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(1); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0))); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(KeysMatch(0, 1)); 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(2U, GetAllKeys(0).size()); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Client0 removes the rest. 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RemoveKey(0, AutofillKey("name0", "value0")); 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RemoveKey(0, AutofillKey("name1", "value1-1")); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(0); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(KeysMatch(0, 1)); 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(0U, GetAllKeys(0).size()); 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3678296. 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, AddUnicodeProfile) { 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::set<AutofillKey> keys; 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) keys.insert(AutofillKey(WideToUTF16(L"Sigur R\u00F3s"), 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WideToUTF16(L"\u00C1g\u00E6tis byrjun"))); 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddKeys(0, keys); 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(KeysMatch(0, 1)); 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddDuplicateNamesToSameProfile) { 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::set<AutofillKey> keys; 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) keys.insert(AutofillKey("name0", "value0-0")); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) keys.insert(AutofillKey("name0", "value0-1")); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) keys.insert(AutofillKey("name1", "value1")); 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddKeys(0, keys); 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(KeysMatch(0, 1)); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(2U, GetAllKeys(0).size()); 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddDuplicateNamesToDifferentProfiles) { 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::set<AutofillKey> keys0; 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) keys0.insert(AutofillKey("name0", "value0-0")); 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) keys0.insert(AutofillKey("name1", "value1")); 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddKeys(0, keys0); 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::set<AutofillKey> keys1; 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) keys1.insert(AutofillKey("name0", "value0-1")); 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) keys1.insert(AutofillKey("name2", "value2")); 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) keys1.insert(AutofillKey("name3", "value3")); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddKeys(1, keys1); 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(KeysMatch(0, 1)); 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(5U, GetAllKeys(0).size()); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PersonalDataManagerSanity) { 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Client0 adds a profile. 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(0); 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ProfilesMatch(0, 1)); 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(1U, GetAllProfiles(0).size()); 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Client1 adds a profile. 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddProfile(1, CreateAutofillProfile(PROFILE_MARION)); 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(1); 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0))); 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ProfilesMatch(0, 1)); 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(2U, GetAllProfiles(0).size()); 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Client0 adds the same profile. 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddProfile(0, CreateAutofillProfile(PROFILE_MARION)); 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(0); 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ProfilesMatch(0, 1)); 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(2U, GetAllProfiles(0).size()); 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Client1 removes a profile. 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RemoveProfile(1, GetAllProfiles(1)[0]->guid()); 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(1); 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0))); 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ProfilesMatch(0, 1)); 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(1U, GetAllProfiles(0).size()); 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Client0 updates a profile. 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UpdateProfile(0, 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetAllProfiles(0)[0]->guid(), 190c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AutofillType(autofill::NAME_FIRST), 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASCIIToUTF16("Bart")); 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(0); 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ProfilesMatch(0, 1)); 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(1U, GetAllProfiles(0).size()); 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Client1 removes remaining profile. 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RemoveProfile(1, GetAllProfiles(1)[0]->guid()); 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(1); 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0))); 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ProfilesMatch(0, 1)); 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(0U, GetAllProfiles(0).size()); 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 7261786. 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, AddDuplicateProfiles) { 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ProfilesMatch(0, 1)); 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(1U, GetAllProfiles(0).size()); 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3636294. 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, SameProfileWithConflict) { 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillProfile profile0 = CreateAutofillProfile(PROFILE_HOMER); 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillProfile profile1 = CreateAutofillProfile(PROFILE_HOMER); 223c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) profile1.SetRawInfo(autofill::PHONE_HOME_WHOLE_NUMBER, 224c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASCIIToUTF16("1234567890")); 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddProfile(0, profile0); 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddProfile(1, profile1); 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ProfilesMatch(0, 1)); 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(1U, GetAllProfiles(0).size()); 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3626291. 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, AddEmptyProfile) { 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddProfile(0, CreateAutofillProfile(PROFILE_NULL)); 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ProfilesMatch(0, 1)); 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(0U, GetAllProfiles(0).size()); 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3616283. 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, AddProfile) { 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(0); 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ProfilesMatch(0, 1)); 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(1U, GetAllProfiles(0).size()); 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3632260. 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, AddMultipleProfiles) { 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddProfile(0, CreateAutofillProfile(PROFILE_MARION)); 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddProfile(0, CreateAutofillProfile(PROFILE_FRASIER)); 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(0); 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ProfilesMatch(0, 1)); 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(3U, GetAllProfiles(0).size()); 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3602257. 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, DeleteProfile) { 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(0); 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ProfilesMatch(0, 1)); 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(1U, GetAllProfiles(0).size()); 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RemoveProfile(1, GetAllProfiles(1)[0]->guid()); 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(1); 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0))); 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ProfilesMatch(0, 1)); 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(0U, GetAllProfiles(0).size()); 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3627300. 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, MergeProfiles) { 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddProfile(1, CreateAutofillProfile(PROFILE_MARION)); 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddProfile(1, CreateAutofillProfile(PROFILE_FRASIER)); 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ProfilesMatch(0, 1)); 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(3U, GetAllProfiles(0).size()); 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3665264. 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, UpdateFields) { 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(0); 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ProfilesMatch(0, 1)); 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(1U, GetAllProfiles(0).size()); 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UpdateProfile(0, 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetAllProfiles(0)[0]->guid(), 310c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AutofillType(autofill::NAME_FIRST), 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASCIIToUTF16("Lisa")); 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UpdateProfile(0, 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetAllProfiles(0)[0]->guid(), 314c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AutofillType(autofill::EMAIL_ADDRESS), 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASCIIToUTF16("grrrl@TV.com")); 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(0); 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ProfilesMatch(0, 1)); 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(1U, GetAllProfiles(0).size()); 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3628299. 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This test is flaky on all platforms. See crbug.com/152551. 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, DISABLED_ConflictingFields) { 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(0); 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ProfilesMatch(0, 1)); 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(1U, GetAllProfiles(0).size()); 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UpdateProfile(0, 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetAllProfiles(0)[0]->guid(), 334c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AutofillType(autofill::NAME_FIRST), 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASCIIToUTF16("Lisa")); 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(0); 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UpdateProfile(1, 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetAllProfiles(1)[0]->guid(), 339c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AutofillType(autofill::NAME_FIRST), 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASCIIToUTF16("Bart")); 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(1); 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ProfilesMatch(0, 1)); 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(1U, GetAllProfiles(0).size()); 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3663293. 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, DisableAutofill) { 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(0); 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ProfilesMatch(0, 1)); 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(1U, GetAllProfiles(0).size()); 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->DisableSyncForDatatype(syncer::AUTOFILL)); 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddProfile(0, CreateAutofillProfile(PROFILE_FRASIER)); 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(0); 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(ProfilesMatch(0, 1)); 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(2U, GetAllProfiles(0).size()); 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(1U, GetAllProfiles(1).size()); 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->EnableSyncForDatatype(syncer::AUTOFILL)); 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(0); 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ProfilesMatch(0, 1)); 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(2U, GetAllProfiles(0).size()); 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3661291. 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, DisableSync) { 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(0); 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ProfilesMatch(0, 1)); 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(1U, GetAllProfiles(0).size()); 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(1)->DisableSyncForAllDatatypes()); 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddProfile(0, CreateAutofillProfile(PROFILE_FRASIER)); 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(0); 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitFullSyncCompletion("Added a profile.")); 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(ProfilesMatch(0, 1)); 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(2U, GetAllProfiles(0).size()); 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(1U, GetAllProfiles(1).size()); 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(1)->EnableSyncForAllDatatypes()); 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ProfilesMatch(0, 1)); 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(2U, GetAllProfiles(0).size()); 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TCM ID - 3608295. 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, MaxLength) { 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(0); 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ProfilesMatch(0, 1)); 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(1U, GetAllProfiles(0).size()); 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 max_length_string(AutofillTable::kMaxDataLength, '.'); 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UpdateProfile(0, 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetAllProfiles(0)[0]->guid(), 409c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AutofillType(autofill::NAME_FIRST), 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) max_length_string); 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UpdateProfile(0, 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetAllProfiles(0)[0]->guid(), 413c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AutofillType(autofill::NAME_LAST), 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) max_length_string); 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UpdateProfile(0, 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetAllProfiles(0)[0]->guid(), 417c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AutofillType(autofill::EMAIL_ADDRESS), 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) max_length_string); 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UpdateProfile(0, 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetAllProfiles(0)[0]->guid(), 421c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AutofillType(autofill::ADDRESS_HOME_LINE1), 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) max_length_string); 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(0); 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ProfilesMatch(0, 1)); 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, ExceedsMaxLength) { 4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); 4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(0); 4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ProfilesMatch(0, 1)); 4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(1U, GetAllProfiles(0).size()); 4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 exceeds_max_length_string(AutofillTable::kMaxDataLength + 1, '.'); 4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UpdateProfile(0, 4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetAllProfiles(0)[0]->guid(), 441c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AutofillType(autofill::NAME_FIRST), 4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exceeds_max_length_string); 4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UpdateProfile(0, 4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetAllProfiles(0)[0]->guid(), 445c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AutofillType(autofill::NAME_LAST), 4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exceeds_max_length_string); 4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UpdateProfile(0, 4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetAllProfiles(0)[0]->guid(), 449c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AutofillType(autofill::EMAIL_ADDRESS), 4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exceeds_max_length_string); 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UpdateProfile(0, 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetAllProfiles(0)[0]->guid(), 453c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AutofillType(autofill::ADDRESS_HOME_LINE1), 4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exceeds_max_length_string); 4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(0); 4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(ProfilesMatch(0, 1)); 4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test credit cards don't sync. 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TwoClientAutofillSyncTest, NoCreditCardSync) { 4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddProfile(0, CreateAutofillProfile(PROFILE_HOMER)); 4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreditCard card; 468c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) card.SetRawInfo(autofill::CREDIT_CARD_NUMBER, 469c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASCIIToUTF16("6011111111111117")); 4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<CreditCard> credit_cards; 4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) credit_cards.push_back(card); 4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetCreditCards(0, &credit_cards); 4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeABookmarkChange(0); 4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); 4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ProfilesMatch(0, 1)); 4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(1U, GetAllProfiles(0).size()); 4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PersonalDataManager* pdm = GetPersonalDataManager(1); 480c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_EQ(0U, pdm->GetCreditCards().size()); 4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 482