summaryrefslogtreecommitdiffstats
path: root/chrome/test/live_sync
diff options
context:
space:
mode:
authorrsimha@chromium.org <rsimha@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-11 00:26:36 +0000
committerrsimha@chromium.org <rsimha@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-11 00:26:36 +0000
commitfc655ba83a54efcf179e1b0941481c3ebfe4cb2c (patch)
tree324eb7b4912bfbe33c40b4f5fab6b9ed931a89d5 /chrome/test/live_sync
parentf3a08e286d0719a388a56eae5e396fc86c223ddc (diff)
downloadchromium_src-fc655ba83a54efcf179e1b0941481c3ebfe4cb2c.zip
chromium_src-fc655ba83a54efcf179e1b0941481c3ebfe4cb2c.tar.gz
chromium_src-fc655ba83a54efcf179e1b0941481c3ebfe4cb2c.tar.bz2
Revert 70967 - Full refactor and rewrite of the autofill sync integration tests
Reason for revert: Need to merge with patches that slipped in before this. The autofill sync integration tests were written more than a year ago, and are pretty badly out of date. In addition, the autofill test framework is crufty and adding new tests is not intuitive. The autofill sync code has recently undergone a major refactor, and so it is time to update the integration test code too. This patch contains a major update of the LiveAutofillSyncTest class and a rewrite of most of the autofill sync tests. BUG=62913, 60368 TEST=sync_integration_tests Review URL: http://codereview.chromium.org/6163001 TBR=rsimha@chromium.org Review URL: http://codereview.chromium.org/6166006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70969 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/test/live_sync')
-rw-r--r--chrome/test/live_sync/live_autofill_sync_test.h227
-rw-r--r--chrome/test/live_sync/two_client_live_autofill_sync_test.cc603
2 files changed, 540 insertions, 290 deletions
diff --git a/chrome/test/live_sync/live_autofill_sync_test.h b/chrome/test/live_sync/live_autofill_sync_test.h
index ae19d57..192b897 100644
--- a/chrome/test/live_sync/live_autofill_sync_test.h
+++ b/chrome/test/live_sync/live_autofill_sync_test.h
@@ -10,21 +10,41 @@
#include <set>
#include <vector>
-#include "base/compiler_specific.h"
+#include "base/command_line.h"
#include "chrome/browser/autofill/autofill_common_test.h"
#include "chrome/browser/autofill/autofill_profile.h"
#include "chrome/browser/autofill/autofill_type.h"
+#include "chrome/browser/autofill/field_types.h"
#include "chrome/browser/autofill/personal_data_manager.h"
+#include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/sync/profile_sync_service.h"
#include "chrome/browser/sync/profile_sync_test_util.h"
+#include "chrome/browser/ui/browser.h"
#include "chrome/browser/webdata/autofill_entry.h"
+#include "chrome/common/chrome_switches.h"
#include "chrome/test/live_sync/live_sync_test.h"
#include "chrome/test/thread_observer_helper.h"
using base::WaitableEvent;
using testing::_;
+// Define these << operators so we can use EXPECT_EQ with the
+// AutofillKeys type.
+template<class T1, class T2, class T3>
+static std::ostream& operator<<(
+ std::ostream& os, const std::set<T1, T2, T3>& seq) {
+ typedef typename std::set<T1, T2, T3>::const_iterator SetConstIterator;
+ for (SetConstIterator i = seq.begin(); i != seq.end(); ++i) {
+ os << *i << ", ";
+ }
+ return os;
+}
+
+static std::ostream& operator<<(std::ostream& os, const AutofillKey& key) {
+ return os << UTF16ToUTF8(key.name()) << ", " << UTF16ToUTF8(key.value());
+}
+
namespace {
class GetAllAutofillEntries
: public base::RefCountedThreadSafe<GetAllAutofillEntries> {
@@ -83,39 +103,30 @@ enum ProfileType {
PROFILE_NULL
};
-AutoFillProfile CreateAutofillProfile(ProfileType type) {
- AutoFillProfile profile;
+void FillProfile(ProfileType type, AutoFillProfile* profile) {
switch (type) {
case PROFILE_MARION:
- autofill_test::SetProfileInfoWithGuid(&profile,
- "C837507A-6C3B-4872-AC14-5113F157D668",
- "Marion", "Mitchell", "Morrison",
- "johnwayne@me.xyz", "Fox",
- "123 Zoo St.", "unit 5", "Hollywood", "CA",
- "91601", "US", "12345678910", "01987654321");
+ autofill_test::SetProfileInfo(profile,
+ "Billing", "Marion", "Mitchell", "Morrison",
+ "johnwayne@me.xyz", "Fox", "123 Zoo St.", "unit 5", "Hollywood", "CA",
+ "91601", "US", "12345678910", "01987654321");
break;
case PROFILE_HOMER:
- autofill_test::SetProfileInfoWithGuid(&profile,
- "137DE1C3-6A30-4571-AC86-109B1ECFBE7F",
- "Homer", "J.", "Simpson",
- "homer@abc.com", "SNPP",
- "1 Main St", "PO Box 1", "Springfield", "MA",
- "94101", "US", "14155551212", "14155551313");
+ autofill_test::SetProfileInfo(profile,
+ "Shipping", "Homer", "J.", "Simpson",
+ "homer@snpp.com", "SNPP", "1 Main St", "PO Box 1", "Springfield", "MA",
+ "94101", "US", "14155551212", "14155551313");
break;
case PROFILE_FRASIER:
- autofill_test::SetProfileInfoWithGuid(&profile,
- "9A5E6872-6198-4688-BF75-0016E781BB0A",
- "Frasier", "Winslow", "Crane",
- "", "randomness", "", "Apt. 4", "Seattle", "WA",
- "99121", "US", "0000000000", "ABCDEFGHIJK");
- break;
+ autofill_test::SetProfileInfo(profile,
+ "Business", "Frasier", "Winslow", "Crane",
+ "", "randomness", "", "Apt. 4", "Seattle", "WA",
+ "99121", "US", "0000000000", "ABCDEFGHIJK");
case PROFILE_NULL:
- autofill_test::SetProfileInfoWithGuid(&profile,
- "FE461507-7E13-4198-8E66-74C7DB6D8322",
- "", "", "", "", "", "", "", "", "", "", "", "", "");
+ autofill_test::SetProfileInfo(profile,
+ "", "key", "", "", "", "", "", "", "", "", "", "", "", "");
break;
}
- return profile;
}
class MockPersonalDataManagerObserver : public PersonalDataManager::Observer {
@@ -127,32 +138,38 @@ class MockPersonalDataManagerObserver : public PersonalDataManager::Observer {
class LiveAutofillSyncTest : public LiveSyncTest {
public:
- explicit LiveAutofillSyncTest(TestType test_type) : LiveSyncTest(test_type) {}
+ typedef std::set<AutofillKey> AutofillKeys;
+ typedef std::vector<AutoFillProfile*> AutoFillProfiles;
+
+ explicit LiveAutofillSyncTest(TestType test_type)
+ : LiveSyncTest(test_type) {}
virtual ~LiveAutofillSyncTest() {}
// Used to access the web data service within a particular sync profile.
- WebDataService* GetWebDataService(int index) WARN_UNUSED_RESULT {
+ WebDataService* GetWebDataService(int index) {
return GetProfile(index)->GetWebDataService(Profile::EXPLICIT_ACCESS);
}
// Used to access the personal data manager within a particular sync profile.
- PersonalDataManager* GetPersonalDataManager(int index) WARN_UNUSED_RESULT {
+ PersonalDataManager* GetPersonalDataManager(int index) {
return GetProfile(index)->GetPersonalDataManager();
}
- // Adds the form fields in |keys| to the WebDataService of sync profile
- // |profile|.
- void AddKeys(int profile, const std::set<AutofillKey>& keys) {
+ protected:
+ virtual void SetUpCommandLine(CommandLine* command_line) {
+ command_line->AppendSwitch(switches::kEnableSyncAutofill);
+ }
+
+ void AddFormFieldsToWebData(WebDataService* wds, const AutofillKeys& keys) {
std::vector<webkit_glue::FormField> form_fields;
- for (std::set<AutofillKey>::const_iterator i = keys.begin();
- i != keys.end();
- ++i) {
- form_fields.push_back(webkit_glue::FormField(string16(),
- (*i).name(),
- (*i).value(),
- string16(),
- 0,
- false));
+ for (AutofillKeys::const_iterator i = keys.begin(); i != keys.end(); ++i) {
+ form_fields.push_back(
+ webkit_glue::FormField(string16(),
+ (*i).name(),
+ (*i).value(),
+ string16(),
+ 0,
+ false));
}
WaitableEvent done_event(false, false);
@@ -162,14 +179,11 @@ class LiveAutofillSyncTest : public LiveSyncTest {
EXPECT_CALL(*observer_helper->observer(), Observe(_, _, _)).
WillOnce(SignalEvent(&done_event));
- WebDataService* wds = GetWebDataService(profile);
wds->AddFormFields(form_fields);
done_event.Wait();
}
- // Removes the form field in |key| from the WebDataService of sync profile
- // |profile|.
- void RemoveKey(int profile, const AutofillKey& key) {
+ void RemoveKeyFromWebData(WebDataService* wds, const AutofillKey& key) {
WaitableEvent done_event(false, false);
scoped_refptr<AutofillDBThreadObserverHelper> observer_helper(
new AutofillDBThreadObserverHelper());
@@ -177,92 +191,69 @@ class LiveAutofillSyncTest : public LiveSyncTest {
EXPECT_CALL(*observer_helper->observer(), Observe(_, _, _)).
WillOnce(SignalEvent(&done_event));
- WebDataService* wds = GetWebDataService(profile);
wds->RemoveFormValueForElementName(key.name(), key.value());
done_event.Wait();
}
- // Gets all the form fields in the WebDataService of sync profile |profile|.
- std::set<AutofillEntry> GetAllKeys(int profile) WARN_UNUSED_RESULT {
- WebDataService* wds = GetWebDataService(profile);
- scoped_refptr<GetAllAutofillEntries> get_all_entries =
- new GetAllAutofillEntries(wds);
- get_all_entries->Init();
- const std::vector<AutofillEntry>& all_entries = get_all_entries->entries();
- std::set<AutofillEntry> all_keys;
- for (std::vector<AutofillEntry>::const_iterator it = all_entries.begin();
- it != all_entries.end(); ++it) {
- all_keys.insert(*it);
- }
- return all_keys;
- }
-
- // Compares the form fields in the WebDataServices of sync profiles
- // |profile_a| and |profile_b|. Returns true if they match.
- bool KeysMatch(int profile_a, int profile_b) WARN_UNUSED_RESULT {
- return GetAllKeys(profile_a) == GetAllKeys(profile_b);
- }
-
- // Replaces the Autofill profiles in sync profile |profile| with
- // |autofill_profiles|.
- void SetProfiles(
- int profile, std::vector<AutoFillProfile>* autofill_profiles) {
+ void SetProfiles(PersonalDataManager* pdm,
+ std::vector<AutoFillProfile>* profiles) {
MockPersonalDataManagerObserver observer;
EXPECT_CALL(observer, OnPersonalDataLoaded()).
WillOnce(QuitUIMessageLoop());
- PersonalDataManager* pdm = GetPersonalDataManager(profile);
pdm->SetObserver(&observer);
- pdm->SetProfiles(autofill_profiles);
+ pdm->SetProfiles(profiles);
MessageLoop::current()->Run();
pdm->RemoveObserver(&observer);
}
- // Adds the autofill profile |autofill_profile| to sync profile |profile|.
- void AddProfile(int profile, const AutoFillProfile& autofill_profile) {
- const std::vector<AutoFillProfile*>& all_profiles = GetAllProfiles(profile);
- std::vector<AutoFillProfile> autofill_profiles;
+ void AddProfile(PersonalDataManager* pdm, const AutoFillProfile& profile) {
+ const AutoFillProfiles& all_profiles = GetAllAutoFillProfiles(pdm);
+ std::vector<AutoFillProfile> profiles;
for (size_t i = 0; i < all_profiles.size(); ++i)
- autofill_profiles.push_back(*all_profiles[i]);
- autofill_profiles.push_back(autofill_profile);
- SetProfiles(profile, &autofill_profiles);
+ profiles.push_back(*all_profiles[i]);
+ profiles.push_back(profile);
+ SetProfiles(pdm, &profiles);
}
- // Removes the autofill profile with guid |guid| from sync profile
- // |profile|.
- void RemoveProfile(int profile, const std::string& guid) {
- const std::vector<AutoFillProfile*>& all_profiles = GetAllProfiles(profile);
- std::vector<AutoFillProfile> autofill_profiles;
+ void RemoveProfile(PersonalDataManager* pdm, const string16& label) {
+ const AutoFillProfiles& all_profiles = GetAllAutoFillProfiles(pdm);
+ std::vector<AutoFillProfile> profiles;
for (size_t i = 0; i < all_profiles.size(); ++i) {
- if (all_profiles[i]->guid() != guid)
- autofill_profiles.push_back(*all_profiles[i]);
+ if (all_profiles[i]->Label() != label)
+ profiles.push_back(*all_profiles[i]);
}
- SetProfiles(profile, &autofill_profiles);
+ SetProfiles(pdm, &profiles);
}
- // Updates the autofill profile with guid |guid| in sync profile |profile|
- // to |type| and |value|.
- void UpdateProfile(int profile,
- const std::string& guid,
+ void UpdateProfile(PersonalDataManager* pdm,
+ const string16& label,
const AutoFillType& type,
const string16& value) {
- const std::vector<AutoFillProfile*>& all_profiles = GetAllProfiles(profile);
+ const AutoFillProfiles& all_profiles = GetAllAutoFillProfiles(pdm);
std::vector<AutoFillProfile> profiles;
for (size_t i = 0; i < all_profiles.size(); ++i) {
profiles.push_back(*all_profiles[i]);
- if (all_profiles[i]->guid() == guid)
+ if (all_profiles[i]->Label() == label)
profiles.back().SetInfo(type, value);
}
- SetProfiles(profile, &profiles);
+ SetProfiles(pdm, &profiles);
+ }
+
+ void GetAllAutofillKeys(WebDataService* wds, AutofillKeys* keys) {
+ scoped_refptr<GetAllAutofillEntries> get_all_entries =
+ new GetAllAutofillEntries(wds);
+ get_all_entries->Init();
+ const std::vector<AutofillEntry>& entries = get_all_entries->entries();
+
+ for (size_t i = 0; i < entries.size(); ++i) {
+ keys->insert(entries[i].key());
+ }
}
- // Gets all the Autofill profiles in the PersonalDataManager of sync profile
- // |profile|.
- const std::vector<AutoFillProfile*>& GetAllProfiles(int profile)
- WARN_UNUSED_RESULT {
+ const AutoFillProfiles& GetAllAutoFillProfiles(PersonalDataManager* pdm) {
MockPersonalDataManagerObserver observer;
EXPECT_CALL(observer, OnPersonalDataLoaded()).
WillOnce(QuitUIMessageLoop());
- PersonalDataManager* pdm = GetPersonalDataManager(profile);
pdm->SetObserver(&observer);
pdm->Refresh();
MessageLoop::current()->Run();
@@ -270,40 +261,34 @@ class LiveAutofillSyncTest : public LiveSyncTest {
return pdm->web_profiles();
}
- // Compares the Autofill profiles in the PersonalDataManagers of sync profiles
- // |profile_a| and |profile_b|. Returns true if they match.
- bool ProfilesMatch(int profile_a, int profile_b) WARN_UNUSED_RESULT {
- const std::vector<AutoFillProfile*>& autofill_profiles_a =
- GetAllProfiles(profile_a);
- std::map<std::string, AutoFillProfile> autofill_profiles_a_map;
- for (size_t i = 0; i < autofill_profiles_a.size(); ++i) {
- const AutoFillProfile* p = autofill_profiles_a[i];
- autofill_profiles_a_map[p->guid()] = *p;
+ bool CompareAutoFillProfiles(const AutoFillProfiles& expected_profiles,
+ const AutoFillProfiles& profiles) {
+ std::map<string16, AutoFillProfile> expected_profiles_map;
+ for (size_t i = 0; i < expected_profiles.size(); ++i) {
+ const AutoFillProfile* p = expected_profiles[i];
+ expected_profiles_map[p->Label()] = *p;
}
- const std::vector<AutoFillProfile*>& autofill_profiles_b =
- GetAllProfiles(profile_b);
- for (size_t i = 0; i < autofill_profiles_b.size(); ++i) {
- const AutoFillProfile* p = autofill_profiles_b[i];
- if (!autofill_profiles_a_map.count(p->guid())) {
- VLOG(1) << "GUID " << p->guid() << " not found in profile "
- << profile_b << ".";
+ for (size_t i = 0; i < profiles.size(); ++i) {
+ const AutoFillProfile* p = profiles[i];
+ if (!expected_profiles_map.count(p->Label())) {
+ VLOG(1) << "Label " << p->Label() << " not in expected";
return false;
}
- AutoFillProfile* expected_profile = &autofill_profiles_a_map[p->guid()];
+ AutoFillProfile* expected_profile = &expected_profiles_map[p->Label()];
expected_profile->set_guid(p->guid());
if (*expected_profile != *p) {
- VLOG(1) << "Mismatch in profile with GUID " << p->guid() << ".";
+ VLOG(1) << "Profile mismatch";
return false;
}
- autofill_profiles_a_map.erase(p->guid());
+ expected_profiles_map.erase(p->Label());
}
- if (autofill_profiles_a_map.size()) {
- VLOG(1) << "Entries present in Profile " << profile_a
- << " but not in " << profile_b << ".";
+ if (expected_profiles_map.size()) {
+ VLOG(1) << "Labels in expected but not supplied";
return false;
}
+
return true;
}
diff --git a/chrome/test/live_sync/two_client_live_autofill_sync_test.cc b/chrome/test/live_sync/two_client_live_autofill_sync_test.cc
index 5775e50..db522f1 100644
--- a/chrome/test/live_sync/two_client_live_autofill_sync_test.cc
+++ b/chrome/test/live_sync/two_client_live_autofill_sync_test.cc
@@ -5,274 +5,539 @@
#include "base/utf_string_conversions.h"
#include "chrome/test/live_sync/live_autofill_sync_test.h"
-IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest, WebDataServiceSanity) {
+IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest, Client1HasData) {
+ ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
+
+ AutofillKeys keys;
+ keys.insert(AutofillKey("name0", "value0"));
+ keys.insert(AutofillKey("name0", "value1"));
+ keys.insert(AutofillKey("name1", "value2"));
+ keys.insert(AutofillKey(WideToUTF16(L"Sigur R\u00F3s"),
+ WideToUTF16(L"\u00C1g\u00E6tis byrjun")));
+ AddFormFieldsToWebData(GetWebDataService(0), keys);
+
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(AwaitQuiescence());
+
+ AutofillKeys wd1_keys;
+ GetAllAutofillKeys(GetWebDataService(1), &wd1_keys);
+
+ // Note: In this test, name0-value0 and name0-value1 were both added in the
+ // same transaction on Client0. However, only the first entry with name0 is
+ // added, due to changes made in r55781. See crbug.com/51727.
+ AutofillKeys expected_keys;
+ expected_keys.insert(AutofillKey("name0", "value0"));
+ expected_keys.insert(AutofillKey("name1", "value2"));
+ expected_keys.insert(AutofillKey(WideToUTF16(L"Sigur R\u00F3s"),
+ WideToUTF16(L"\u00C1g\u00E6tis byrjun")));
+ ASSERT_EQ(expected_keys, wd1_keys);
+}
+
+IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest, BothHaveData) {
+ ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
+
+ AutofillKeys keys1;
+ keys1.insert(AutofillKey("name0", "value0"));
+ keys1.insert(AutofillKey("name1", "value2"));
+ AddFormFieldsToWebData(GetWebDataService(0), keys1);
+
+ AutofillKeys keys2;
+ keys2.insert(AutofillKey("name0", "value1"));
+ keys2.insert(AutofillKey("name2", "value3"));
+ keys2.insert(AutofillKey("name3", "value3"));
+ AddFormFieldsToWebData(GetWebDataService(1), keys2);
+
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(AwaitQuiescence());
+
+ // Note: In this test, name0-value0 and name0-value1 were added in separate
+ // transactions -- one on Client0 and the other on Client1. Therefore, we
+ // expect to see both pairs once sync completes and the lists are merged.
+ AutofillKeys expected_keys;
+ expected_keys.insert(AutofillKey("name0", "value0"));
+ expected_keys.insert(AutofillKey("name0", "value1"));
+ expected_keys.insert(AutofillKey("name1", "value2"));
+ expected_keys.insert(AutofillKey("name2", "value3"));
+ expected_keys.insert(AutofillKey("name3", "value3"));
+
+ AutofillKeys wd0_keys;
+ GetAllAutofillKeys(GetWebDataService(0), &wd0_keys);
+ ASSERT_EQ(expected_keys, wd0_keys);
+
+ AutofillKeys wd1_keys;
+ GetAllAutofillKeys(GetWebDataService(1), &wd1_keys);
+ ASSERT_EQ(expected_keys, wd1_keys);
+}
+
+IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest, Steady) {
ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
// Client0 adds a key.
- std::set<AutofillKey> keys;
- keys.insert(AutofillKey("name0", "value0"));
- AddKeys(0, keys);
+ AutofillKeys add_one_key;
+ add_one_key.insert(AutofillKey("name0", "value0"));
+ AddFormFieldsToWebData(GetWebDataService(0), add_one_key);
ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
- ASSERT_TRUE(KeysMatch(0, 1));
- ASSERT_EQ(1U, GetAllKeys(0).size());
- // Client1 adds a key.
+ AutofillKeys expected_keys;
+ expected_keys.insert(AutofillKey("name0", "value0"));
+
+ AutofillKeys keys;
+ GetAllAutofillKeys(GetWebDataService(0), &keys);
+ ASSERT_EQ(expected_keys, keys);
keys.clear();
- keys.insert(AutofillKey("name1", "value1-0"));
- AddKeys(1, keys);
+ GetAllAutofillKeys(GetWebDataService(1), &keys);
+ ASSERT_EQ(expected_keys, keys);
+
+ // Client1 adds a key.
+ add_one_key.clear();
+ add_one_key.insert(AutofillKey("name1", "value1"));
+ AddFormFieldsToWebData(GetWebDataService(1), add_one_key);
ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0)));
- ASSERT_TRUE(KeysMatch(0, 1));
- ASSERT_EQ(2U, GetAllKeys(0).size());
- // Client0 adds a key with the same name.
+ expected_keys.insert(AutofillKey("name1", "value1"));
+ keys.clear();
+ GetAllAutofillKeys(GetWebDataService(0), &keys);
+ ASSERT_EQ(expected_keys, keys);
keys.clear();
- keys.insert(AutofillKey("name1", "value1-1"));
- AddKeys(0, keys);
+ GetAllAutofillKeys(GetWebDataService(1), &keys);
+ ASSERT_EQ(expected_keys, keys);
+
+ // Client0 adds a key with the same name.
+ add_one_key.clear();
+ add_one_key.insert(AutofillKey("name1", "value2"));
+ AddFormFieldsToWebData(GetWebDataService(0), add_one_key);
ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
- ASSERT_TRUE(KeysMatch(0, 1));
- ASSERT_EQ(3U, GetAllKeys(0).size());
+
+ expected_keys.insert(AutofillKey("name1", "value2"));
+ keys.clear();
+ GetAllAutofillKeys(GetWebDataService(0), &keys);
+ ASSERT_EQ(expected_keys, keys);
+ keys.clear();
+ GetAllAutofillKeys(GetWebDataService(1), &keys);
+ ASSERT_EQ(expected_keys, keys);
// Client1 removes a key.
- RemoveKey(1, AutofillKey("name1", "value1-0"));
+ RemoveKeyFromWebData(GetWebDataService(1), AutofillKey("name1", "value1"));
ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0)));
- ASSERT_TRUE(KeysMatch(0, 1));
- ASSERT_EQ(2U, GetAllKeys(0).size());
+
+ expected_keys.erase(AutofillKey("name1", "value1"));
+ keys.clear();
+ GetAllAutofillKeys(GetWebDataService(0), &keys);
+ ASSERT_EQ(expected_keys, keys);
+ keys.clear();
+ GetAllAutofillKeys(GetWebDataService(1), &keys);
+ ASSERT_EQ(expected_keys, keys);
// Client0 removes the rest.
- RemoveKey(0, AutofillKey("name0", "value0"));
- RemoveKey(0, AutofillKey("name1", "value1-1"));
+ RemoveKeyFromWebData(GetWebDataService(0), AutofillKey("name0", "value0"));
+ RemoveKeyFromWebData(GetWebDataService(0), AutofillKey("name1", "value2"));
ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
- ASSERT_TRUE(KeysMatch(0, 1));
- ASSERT_EQ(0U, GetAllKeys(0).size());
+
+ keys.clear();
+ GetAllAutofillKeys(GetWebDataService(0), &keys);
+ ASSERT_EQ(0U, keys.size());
+ keys.clear();
+ GetAllAutofillKeys(GetWebDataService(1), &keys);
+ ASSERT_EQ(0U, keys.size());
}
-// TestScribe ID - 426758.
-IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest, AddUnicodeProfile) {
+IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest, ProfileClient1HasData) {
ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
- std::set<AutofillKey> keys;
- keys.insert(AutofillKey(WideToUTF16(L"Sigur R\u00F3s"),
- WideToUTF16(L"\u00C1g\u00E6tis byrjun")));
- AddKeys(0, keys);
+ AutoFillProfiles expected_profiles;
+ expected_profiles.push_back(new AutoFillProfile);
+ FillProfile(PROFILE_MARION, expected_profiles[0]);
+ expected_profiles.push_back(new AutoFillProfile);
+ FillProfile(PROFILE_HOMER, expected_profiles[1]);
+ AddProfile(GetPersonalDataManager(0), *expected_profiles[0]);
+ AddProfile(GetPersonalDataManager(0), *expected_profiles[1]);
+
ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
ASSERT_TRUE(AwaitQuiescence());
- ASSERT_TRUE(KeysMatch(0, 1));
+
+ AutoFillProfile::AdjustInferredLabels(&expected_profiles);
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(0))));
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(1))));
+ STLDeleteElements(&expected_profiles);
}
-IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest,
- AddDuplicateNamesToSameProfile) {
+// TestScribe ID - 426761.
+IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest, ConflictLabels) {
ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
- std::set<AutofillKey> keys;
- keys.insert(AutofillKey("name0", "value0-0"));
- keys.insert(AutofillKey("name0", "value0-1"));
- keys.insert(AutofillKey("name1", "value1"));
- AddKeys(0, keys);
+ AutoFillProfiles profiles1;
+ profiles1.push_back(new AutoFillProfile);
+ FillProfile(PROFILE_HOMER, profiles1[0]);
+
+ AutoFillProfiles profiles2;
+ profiles2.push_back(new AutoFillProfile);
+ FillProfile(PROFILE_HOMER, profiles2[0]);
+ profiles2[0]->SetInfo(AutoFillType(PHONE_FAX_WHOLE_NUMBER),
+ ASCIIToUTF16("1234567890"));
+
+ AddProfile(GetPersonalDataManager(0), *profiles1[0]);
+ AddProfile(GetPersonalDataManager(1), *profiles2[0]);
+
ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
ASSERT_TRUE(AwaitQuiescence());
- ASSERT_TRUE(KeysMatch(0, 1));
- ASSERT_EQ(2U, GetAllKeys(0).size());
+
+ // Since client1 associates first, client2's profile will
+ // be overwritten by the one stored in the cloud by profile1.
+ AutoFillProfile::AdjustInferredLabels(&profiles1);
+ ASSERT_TRUE(CompareAutoFillProfiles(profiles1,
+ GetAllAutoFillProfiles(GetPersonalDataManager(0))));
+ ASSERT_TRUE(CompareAutoFillProfiles(profiles1,
+ GetAllAutoFillProfiles(GetPersonalDataManager(1))));
+ STLDeleteElements(&profiles1);
+ STLDeleteElements(&profiles2);
}
+// Marked as FAILS -- see http://crbug.com/60368.
IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest,
- AddDuplicateNamesToDifferentProfiles) {
+ FAILS_ProfileSameLabelOnClient1) {
ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
- std::set<AutofillKey> keys0;
- keys0.insert(AutofillKey("name0", "value0-0"));
- keys0.insert(AutofillKey("name1", "value1"));
- AddKeys(0, keys0);
+ AutoFillProfiles expected_profiles;
+ expected_profiles.push_back(new AutoFillProfile);
+ FillProfile(PROFILE_HOMER, expected_profiles[0]);
+ expected_profiles.push_back(new AutoFillProfile);
+ FillProfile(PROFILE_HOMER, expected_profiles[1]);
- std::set<AutofillKey> keys1;
- keys1.insert(AutofillKey("name0", "value0-1"));
- keys1.insert(AutofillKey("name2", "value2"));
- keys1.insert(AutofillKey("name3", "value3"));
- AddKeys(1, keys1);
+ AddProfile(GetPersonalDataManager(0), *expected_profiles[0]);
+ AddProfile(GetPersonalDataManager(0), *expected_profiles[1]);
ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
ASSERT_TRUE(AwaitQuiescence());
- ASSERT_TRUE(KeysMatch(0, 1));
- ASSERT_EQ(5U, GetAllKeys(0).size());
+
+ // One of the duplicate profiles will have its label renamed to
+ // the first label with "2" appended.
+ AutoFillProfile::AdjustInferredLabels(&expected_profiles);
+ expected_profiles[0]->set_label(expected_profiles[1]->Label() +
+ ASCIIToUTF16("2"));
+
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(0))));
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(1))));
+ STLDeleteElements(&expected_profiles);
}
-// TODO(lipalani): Enable this test after new autofill sync is enabled.
-IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest,
- DISABLED_PersonalDataManagerSanity) {
+// Marked as FAILS -- see http://crbug.com/60368.
+IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest, FAILS_ProfileSteady) {
ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
// Client0 adds a profile.
- AddProfile(0, CreateAutofillProfile(PROFILE_HOMER));
+ AutoFillProfiles expected_profiles;
+ expected_profiles.push_back(new AutoFillProfile);
+ FillProfile(PROFILE_HOMER, expected_profiles[0]);
+ AddProfile(GetPersonalDataManager(0), *expected_profiles[0]);
ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
- ASSERT_TRUE(ProfilesMatch(0,1));
- ASSERT_EQ(1U, GetAllProfiles(0).size());
+
+ AutoFillProfile::AdjustInferredLabels(&expected_profiles);
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(0))));
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(1))));
// Client1 adds a profile.
- AddProfile(1, CreateAutofillProfile(PROFILE_MARION));
+ expected_profiles.push_back(new AutoFillProfile);
+ FillProfile(PROFILE_MARION, expected_profiles[1]);
+ AddProfile(GetPersonalDataManager(1), *expected_profiles[1]);
ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0)));
- ASSERT_TRUE(ProfilesMatch(0,1));
- ASSERT_EQ(2U, GetAllProfiles(0).size());
- // Client0 adds the same profile.
- AddProfile(0, CreateAutofillProfile(PROFILE_MARION));
+ AutoFillProfile::AdjustInferredLabels(&expected_profiles);
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(0))));
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(1))));
+
+ // Client0 adds a conflicting profile.
+ expected_profiles.push_back(new AutoFillProfile);
+ FillProfile(PROFILE_MARION, expected_profiles[2]);
+ AddProfile(GetPersonalDataManager(0), *expected_profiles[2]);
ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
- ASSERT_TRUE(ProfilesMatch(0,1));
- ASSERT_EQ(2U, GetAllProfiles(0).size());
+
+ // The conflicting profile's label will be made unique.
+ AutoFillProfile::AdjustInferredLabels(&expected_profiles);
+ expected_profiles[2]->set_label(expected_profiles[1]->Label() +
+ ASCIIToUTF16("2"));
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(0))));
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(1))));
// Client1 removes a profile.
- RemoveProfile(1, GetAllProfiles(1)[0]->guid());
+ string16 label0 = expected_profiles[0]->Label();
+ delete expected_profiles.front();
+ expected_profiles.erase(expected_profiles.begin());
+ RemoveProfile(GetPersonalDataManager(1), label0);
ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0)));
- ASSERT_TRUE(ProfilesMatch(0,1));
- ASSERT_EQ(1U, GetAllProfiles(0).size());
+
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(0))));
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(1))));
// Client0 updates a profile.
- UpdateProfile(0, GetAllProfiles(0)[0]->guid(), AutoFillType(NAME_FIRST),
- ASCIIToUTF16("Bart"));
+ expected_profiles[0]->SetInfo(AutoFillType(NAME_FIRST),
+ ASCIIToUTF16("Bart"));
+ UpdateProfile(GetPersonalDataManager(0),
+ expected_profiles[0]->Label(),
+ AutoFillType(NAME_FIRST),
+ ASCIIToUTF16("Bart"));
ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
- ASSERT_TRUE(ProfilesMatch(0,1));
- ASSERT_EQ(1U, GetAllProfiles(0).size());
- // Client1 removes remaining profile.
- RemoveProfile(1, GetAllProfiles(1)[0]->guid());
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(0))));
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(1))));
+
+ // Client1 removes everything.
+ string16 label1 = expected_profiles[0]->Label();
+ string16 label2 = expected_profiles[1]->Label();
+ STLDeleteElements(&expected_profiles);
+ RemoveProfile(GetPersonalDataManager(1), label1);
+ RemoveProfile(GetPersonalDataManager(1), label2);
ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0)));
- ASSERT_TRUE(ProfilesMatch(0,1));
- ASSERT_EQ(0U, GetAllProfiles(0).size());
-}
-
-// TODO(lipalani): Enable this test after new autofill sync is enabled.
-IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest,
- DISABLED_AddDuplicateProfiles) {
- ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
- AddProfile(0, CreateAutofillProfile(PROFILE_HOMER));
- AddProfile(0, CreateAutofillProfile(PROFILE_HOMER));
- ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
- ASSERT_TRUE(AwaitQuiescence());
- ASSERT_TRUE(ProfilesMatch(0,1));
- ASSERT_EQ(1U, GetAllProfiles(0).size());
-}
-
-// TestScribe ID - 426761.
-// TODO(lipalani): Enable this test after new autofill sync is enabled.
-IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest,
- DISABLED_SameProfileWithConflict) {
- ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
-
- AutoFillProfile profile0 = CreateAutofillProfile(PROFILE_HOMER);
- AutoFillProfile profile1 = CreateAutofillProfile(PROFILE_HOMER);
- profile1.SetInfo(AutoFillType(PHONE_FAX_WHOLE_NUMBER),
- ASCIIToUTF16("1234567890"));
-
- AddProfile(0, profile0);
- AddProfile(1, profile1);
- ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
- ASSERT_TRUE(AwaitQuiescence());
- ASSERT_TRUE(ProfilesMatch(0,1));
- ASSERT_EQ(1U, GetAllProfiles(0).size());
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(0))));
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(1))));
}
// TestScribe ID - 426757.
-// TODO(lipalani): Enable this test after new autofill sync is enabled.
-IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest,
- DISABLED_AddEmptyProfile) {
+IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest, AddEmptyProfile) {
ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
- AddProfile(0, CreateAutofillProfile(PROFILE_NULL));
+ AutoFillProfiles expected_profiles;
+ expected_profiles.push_back(new AutoFillProfile);
+ FillProfile(PROFILE_NULL, expected_profiles[0]);
+ AddProfile(GetPersonalDataManager(0), *expected_profiles[0]);
ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
- ASSERT_TRUE(ProfilesMatch(0,1));
- ASSERT_EQ(1U, GetAllProfiles(0).size());
+
+ AutoFillProfile::AdjustInferredLabels(&expected_profiles);
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(0))));
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(1))));
+ STLDeleteElements(&expected_profiles);
}
// TestScribe ID - 422839.
-// TODO(lipalani): Enable this test after new autofill sync is enabled.
-IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest, DISABLED_AddProfile) {
+IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest, AddProfile) {
ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
- AddProfile(0, CreateAutofillProfile(PROFILE_NULL));
+ AutoFillProfiles expected_profiles;
+ expected_profiles.push_back(new AutoFillProfile);
+ FillProfile(PROFILE_HOMER, expected_profiles[0]);
+ AddProfile(GetPersonalDataManager(0), *expected_profiles[0]);
ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
- ASSERT_TRUE(ProfilesMatch(0,1));
- ASSERT_EQ(1U, GetAllProfiles(0).size());
+
+ AutoFillProfile::AdjustInferredLabels(&expected_profiles);
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(0))));
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(1))));
+ STLDeleteElements(&expected_profiles);
}
// TestScribe ID - 425335.
-// TODO(lipalani): Enable this test after new autofill sync is enabled.
+// Marked as FAILS -- see http://crbug.com/60368.
IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest,
- DISABLED_AddMultipleProfiles) {
+ FAILS_AddMultipleProfiles) {
ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
- AddProfile(0, CreateAutofillProfile(PROFILE_NULL));
- AddProfile(0, CreateAutofillProfile(PROFILE_HOMER));
- AddProfile(0, CreateAutofillProfile(PROFILE_MARION));
- AddProfile(0, CreateAutofillProfile(PROFILE_FRASIER));
- ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
- ASSERT_TRUE(ProfilesMatch(0,1));
- ASSERT_EQ(4U, GetAllProfiles(0).size());
+ AutoFillProfiles expected_profiles;
+ expected_profiles.push_back(new AutoFillProfile);
+ FillProfile(PROFILE_MARION, expected_profiles[0]);
+ AddProfile(GetPersonalDataManager(0), *expected_profiles[0]);
+
+ expected_profiles.push_back(new AutoFillProfile);
+ FillProfile(PROFILE_HOMER, expected_profiles[1]);
+ AddProfile(GetPersonalDataManager(0), *expected_profiles[1]);
+
+ expected_profiles.push_back(new AutoFillProfile);
+ FillProfile(PROFILE_NULL, expected_profiles[2]);
+ AddProfile(GetPersonalDataManager(0), *expected_profiles[2]);
+
+ expected_profiles.push_back(new AutoFillProfile);
+ FillProfile(PROFILE_FRASIER, expected_profiles[3]);
+ AddProfile(GetPersonalDataManager(0), *expected_profiles[3]);
+
+ ASSERT_TRUE(AwaitQuiescence());
+
+ ASSERT_TRUE(CompareAutoFillProfiles(
+ GetAllAutoFillProfiles(GetPersonalDataManager(1)),
+ GetAllAutoFillProfiles(GetPersonalDataManager(0))));
+ STLDeleteElements(&expected_profiles);
+}
+
+// TestScribe ID - 426758.
+IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest, AddUnicodeProfile) {
+ ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
+
+ AutofillKeys expected_keys;
+ const string16 kUnicodeString = WideToUTF16(L"\u00CE\u00F1\u0163\u00E9");
+ expected_keys.insert(AutofillKey(kUnicodeString, kUnicodeString));
+ AddFormFieldsToWebData(GetWebDataService(0), expected_keys);
+
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+ ASSERT_TRUE(AwaitQuiescence());
+
+ AutofillKeys synced_keys;
+ GetAllAutofillKeys(GetWebDataService(1), &synced_keys);
+
+ ASSERT_EQ(expected_keys, synced_keys);
}
// TestScribe ID - 425337.
-// TODO(lipalani): Enable this test after new autofill sync is enabled.
-IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest, DISABLED_DeleteProfile) {
+IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest, DeleteProfile) {
ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
- AddProfile(0, CreateAutofillProfile(PROFILE_HOMER));
+ AutoFillProfiles expected_profiles;
+ expected_profiles.push_back(new AutoFillProfile);
+ FillProfile(PROFILE_MARION, expected_profiles[0]);
+ AddProfile(GetPersonalDataManager(0), *expected_profiles[0]);
ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
- ASSERT_TRUE(ProfilesMatch(0,1));
- ASSERT_EQ(1U, GetAllProfiles(0).size());
- RemoveProfile(1, GetAllProfiles(1)[0]->guid());
+ AutoFillProfile::AdjustInferredLabels(&expected_profiles);
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(0))));
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(1))));
+
+ string16 label = expected_profiles.front()->Label();
+ delete expected_profiles.front();
+ expected_profiles.erase(expected_profiles.begin());
+ RemoveProfile(GetPersonalDataManager(1), label);
ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0)));
- ASSERT_TRUE(ProfilesMatch(0,1));
- ASSERT_EQ(0U, GetAllProfiles(0).size());
+
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(0))));
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(1))));
}
// TestScribe ID - 426760.
-// TODO(lipalani): Enable this test after new autofill sync is enabled.
-IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest, DISABLED_MergeProfiles) {
- ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
-
- AddProfile(0, CreateAutofillProfile(PROFILE_NULL));
- AddProfile(0, CreateAutofillProfile(PROFILE_HOMER));
- AddProfile(1, CreateAutofillProfile(PROFILE_MARION));
- AddProfile(1, CreateAutofillProfile(PROFILE_FRASIER));
+// Marked as FAILS -- see http://crbug.com/60368.
+IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest, FAILS_MergeProfiles) {
ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
- ASSERT_TRUE(AwaitQuiescence());
- ASSERT_TRUE(ProfilesMatch(0,1));
- ASSERT_EQ(4U, GetAllProfiles(0).size());
+
+ AutoFillProfiles expected_profiles;
+ expected_profiles.push_back(new AutoFillProfile);
+ FillProfile(PROFILE_HOMER, expected_profiles[0]);
+ AddProfile(GetPersonalDataManager(0), *expected_profiles[0]);
+
+ expected_profiles.push_back(new AutoFillProfile);
+ FillProfile(PROFILE_NULL, expected_profiles[1]);
+ AddProfile(GetPersonalDataManager(0), *expected_profiles[1]);
+
+ expected_profiles.push_back(new AutoFillProfile);
+ FillProfile(PROFILE_MARION, expected_profiles[2]);
+ AddProfile(GetPersonalDataManager(1), *expected_profiles[2]);
+
+ expected_profiles.push_back(new AutoFillProfile);
+ FillProfile(PROFILE_FRASIER, expected_profiles[3]);
+ AddProfile(GetPersonalDataManager(1), *expected_profiles[3]);
+ ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0)));
+
+ AutoFillProfile::AdjustInferredLabels(&expected_profiles);
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(0))));
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(1))));
+ STLDeleteElements(&expected_profiles);
}
// TestScribe ID - 426756.
-// TODO(lipalani): Enable this test after new autofill sync is enabled.
-IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest, DISABLED_UpdateFields) {
+IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest, UpdateFields) {
ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
- AddProfile(0, CreateAutofillProfile(PROFILE_HOMER));
+ AutoFillProfiles expected_profiles;
+ expected_profiles.push_back(new AutoFillProfile);
+ FillProfile(PROFILE_HOMER, expected_profiles[0]);
+ AddProfile(GetPersonalDataManager(0), *expected_profiles[0]);
ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
- ASSERT_TRUE(ProfilesMatch(0,1));
- ASSERT_EQ(1U, GetAllProfiles(0).size());
- UpdateProfile(0, GetAllProfiles(0)[0]->guid(), AutoFillType(NAME_FIRST),
- ASCIIToUTF16("Lisa"));
- UpdateProfile(0, GetAllProfiles(0)[0]->guid(), AutoFillType(EMAIL_ADDRESS),
- ASCIIToUTF16("grrrl@TV.com"));
- ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
- ASSERT_TRUE(ProfilesMatch(0,1));
- ASSERT_EQ(1U, GetAllProfiles(0).size());
+ AutoFillProfile::AdjustInferredLabels(&expected_profiles);
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(0))));
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(1))));
+
+ expected_profiles[0]->SetInfo(AutoFillType(NAME_FIRST), ASCIIToUTF16("Lisa"));
+ expected_profiles[0]->SetInfo(
+ AutoFillType(EMAIL_ADDRESS), ASCIIToUTF16("grrrl@TV.com"));
+ UpdateProfile(GetPersonalDataManager(0), expected_profiles[0]->Label(),
+ AutoFillType(NAME_FIRST), ASCIIToUTF16("Lisa"));
+ UpdateProfile(GetPersonalDataManager(0), expected_profiles[0]->Label(),
+ AutoFillType(EMAIL_ADDRESS), ASCIIToUTF16("grrrl@TV.com"));
+ ASSERT_TRUE(AwaitQuiescence());
+
+ ASSERT_TRUE(CompareAutoFillProfiles(
+ GetAllAutoFillProfiles(GetPersonalDataManager(0)),
+ GetAllAutoFillProfiles(GetPersonalDataManager(1))));
+ STLDeleteElements(&expected_profiles);
+}
+
+// TestScribe ID - 426755.
+IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest, UpdateLabel) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+
+ AutoFillProfiles expected_profiles;
+ AutoFillProfiles profiles0;
+ profiles0.push_back(new AutoFillProfile);
+ FillProfile(PROFILE_HOMER, profiles0[0]);
+ expected_profiles.push_back(profiles0[0]);
+
+ AutoFillProfiles profiles1;
+ profiles1.push_back(new AutoFillProfile);
+ FillProfile(PROFILE_MARION, profiles1[0]);
+ profiles1[0]->set_label(ASCIIToUTF16("Shipping"));
+ expected_profiles.push_back(profiles1[0]);
+
+ AddProfile(GetPersonalDataManager(0), *profiles0[0]);
+ AddProfile(GetPersonalDataManager(1), *profiles1[0]);
+
+ ASSERT_TRUE(AwaitQuiescence());
+
+ AutoFillProfile::AdjustInferredLabels(&expected_profiles);
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(0))));
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(1))));
+ STLDeleteElements(&profiles0);
+ STLDeleteElements(&profiles1);
}
// TestScribe ID - 432634.
-// TODO(lipalani): Enable this test after new autofill sync is enabled.
-IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest,
- DISABLED_ConflictingFields) {
+IN_PROC_BROWSER_TEST_F(TwoClientLiveAutofillSyncTest, ConflictFields) {
ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
- AddProfile(0, CreateAutofillProfile(PROFILE_HOMER));
+ AutoFillProfiles expected_profiles;
+ expected_profiles.push_back(new AutoFillProfile);
+ FillProfile(PROFILE_HOMER, expected_profiles[0]);
+ AddProfile(GetPersonalDataManager(0), *expected_profiles[0]);
ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
- ASSERT_TRUE(ProfilesMatch(0,1));
- ASSERT_EQ(1U, GetAllProfiles(0).size());
- UpdateProfile(0, GetAllProfiles(0)[0]->guid(), AutoFillType(NAME_FIRST),
- ASCIIToUTF16("Lisa"));
- UpdateProfile(1, GetAllProfiles(1)[0]->guid(), AutoFillType(NAME_FIRST),
- ASCIIToUTF16("Bart"));
+
+ AutoFillProfile::AdjustInferredLabels(&expected_profiles);
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(0))));
+ ASSERT_TRUE(CompareAutoFillProfiles(expected_profiles,
+ GetAllAutoFillProfiles(GetPersonalDataManager(1))));
+
+ UpdateProfile(GetPersonalDataManager(0), expected_profiles[0]->Label(),
+ AutoFillType(NAME_FIRST), ASCIIToUTF16("Lisa"));
+ UpdateProfile(GetPersonalDataManager(1), expected_profiles[0]->Label(),
+ AutoFillType(NAME_FIRST), ASCIIToUTF16("Bart"));
+
ASSERT_TRUE(AwaitQuiescence());
- ASSERT_TRUE(ProfilesMatch(0,1));
- ASSERT_EQ(2U, GetAllProfiles(0).size());
+
+ ASSERT_TRUE(CompareAutoFillProfiles(
+ GetAllAutoFillProfiles(GetPersonalDataManager(0)),
+ GetAllAutoFillProfiles(GetPersonalDataManager(1))));
+ STLDeleteElements(&expected_profiles);
}