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

Unified Diff: chrome/browser/webdata/autofill_profile_syncable_service_unittest.cc

Issue 16024018: [Autofill] Sync Autofill profiles' origins. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/webdata/autofill_profile_syncable_service_unittest.cc
diff --git a/chrome/browser/webdata/autofill_profile_syncable_service_unittest.cc b/chrome/browser/webdata/autofill_profile_syncable_service_unittest.cc
index bc5161454a2cb5edb82788823820fc8a126c0438..86bc0d299dfe68f767f563b4ce474f272aeb46f1 100644
--- a/chrome/browser/webdata/autofill_profile_syncable_service_unittest.cc
+++ b/chrome/browser/webdata/autofill_profile_syncable_service_unittest.cc
@@ -36,10 +36,13 @@ const char kSettingsOrigin[] = "Chrome settings";
class MockAutofillProfileSyncableService
: public AutofillProfileSyncableService {
public:
- MockAutofillProfileSyncableService() {
- }
+ MockAutofillProfileSyncableService() {}
virtual ~MockAutofillProfileSyncableService() {}
+ using AutofillProfileSyncableService::DataBundle;
+ using AutofillProfileSyncableService::set_sync_processor;
+ using AutofillProfileSyncableService::CreateData;
+
MOCK_METHOD1(LoadAutofillData, bool(std::vector<AutofillProfile*>*));
MOCK_METHOD1(SaveChangesToWebData,
bool(const AutofillProfileSyncableService::DataBundle&));
@@ -71,21 +74,18 @@ MATCHER_P(CheckSyncChanges, n_sync_changes_list, "") {
MATCHER_P(DataBundleCheck, n_bundle, "") {
if ((arg.profiles_to_delete.size() != n_bundle.profiles_to_delete.size()) ||
(arg.profiles_to_update.size() != n_bundle.profiles_to_update.size()) ||
- (arg.profiles_to_add.size() != n_bundle.profiles_to_add.size())) {
+ (arg.profiles_to_add.size() != n_bundle.profiles_to_add.size()))
return false;
- }
for (size_t i = 0; i < arg.profiles_to_delete.size(); ++i) {
if (arg.profiles_to_delete[i] != n_bundle.profiles_to_delete[i])
return false;
}
for (size_t i = 0; i < arg.profiles_to_update.size(); ++i) {
- if (arg.profiles_to_update[i]->guid() !=
- n_bundle.profiles_to_update[i]->guid()) {
+ if (*arg.profiles_to_update[i] != *n_bundle.profiles_to_update[i])
return false;
- }
}
for (size_t i = 0; i < arg.profiles_to_add.size(); ++i) {
- if (arg.profiles_to_add[i]->Compare(*n_bundle.profiles_to_add[i]))
+ if (*arg.profiles_to_add[i] != *n_bundle.profiles_to_add[i])
return false;
}
return true;
@@ -98,7 +98,25 @@ class MockSyncChangeProcessor : public syncer::SyncChangeProcessor {
MOCK_METHOD2(ProcessSyncChanges,
syncer::SyncError(const tracked_objects::Location&,
- const syncer::SyncChangeList&));
+ const syncer::SyncChangeList&));
+};
+
+class TestSyncChangeProcessor : public syncer::SyncChangeProcessor {
+ public:
+ TestSyncChangeProcessor() {}
+ virtual ~TestSyncChangeProcessor() {}
+
+ virtual syncer::SyncError ProcessSyncChanges(
+ const tracked_objects::Location& location,
+ const syncer::SyncChangeList& changes) OVERRIDE {
+ changes_ = changes;
+ return syncer::SyncError();
+ }
+
+ const syncer::SyncChangeList& changes() { return changes_; }
+
+ private:
+ syncer::SyncChangeList changes_;
};
class AutofillProfileSyncableServiceTest : public testing::Test {
@@ -111,6 +129,35 @@ class AutofillProfileSyncableServiceTest : public testing::Test {
sync_processor_.reset(new MockSyncChangeProcessor);
}
+ // Wrapper around AutofillProfileSyncableService::MergeDataAndStartSyncing()
+ // that also verifies expectations.
+ void MergeDataAndStartSyncing(
+ const std::vector<AutofillProfile*>& profiles_from_web_db,
+ const syncer::SyncDataList& data_list,
+ const MockAutofillProfileSyncableService::DataBundle& expected_bundle,
+ const syncer::SyncChangeList& expected_change_list) {
+ EXPECT_CALL(autofill_syncable_service_, LoadAutofillData(_))
+ .Times(1)
+ .WillOnce(DoAll(CopyData(&profiles_from_web_db), Return(true)));
Evan Stade 2013/06/11 21:38:44 I think this crosses the line of acceptably simple
Ilya Sherman 2013/06/11 21:53:42 This is pre-existing gmock code that I've simply m
+ EXPECT_CALL(autofill_syncable_service_,
+ SaveChangesToWebData(DataBundleCheck(expected_bundle)))
+ .Times(1)
+ .WillOnce(Return(true));
+ ON_CALL(*sync_processor_, ProcessSyncChanges(_, _))
+ .WillByDefault(Return(syncer::SyncError()));
+ EXPECT_CALL(*sync_processor_,
+ ProcessSyncChanges(_, CheckSyncChanges(expected_change_list)))
+ .Times(1)
+ .WillOnce(Return(syncer::SyncError()));
+
+ // Takes ownership of sync_processor_.
+ autofill_syncable_service_.MergeDataAndStartSyncing(
+ syncer::AUTOFILL_PROFILE, data_list,
+ sync_processor_.PassAs<syncer::SyncChangeProcessor>(),
+ scoped_ptr<syncer::SyncErrorFactory>(
+ new syncer::SyncErrorFactoryMock()));
+ }
+
protected:
base::MessageLoop message_loop_;
content::TestBrowserThread ui_thread_;
@@ -120,7 +167,7 @@ class AutofillProfileSyncableServiceTest : public testing::Test {
};
TEST_F(AutofillProfileSyncableServiceTest, MergeDataAndStartSyncing) {
- std::vector<AutofillProfile *> profiles_from_web_db;
+ std::vector<AutofillProfile*> profiles_from_web_db;
std::string guid_present1 = kGuid1;
std::string guid_present2 = kGuid2;
std::string guid_synced1 = kGuid3;
@@ -150,7 +197,7 @@ TEST_F(AutofillProfileSyncableServiceTest, MergeDataAndStartSyncing) {
AutofillProfile profile2(guid_synced2, origin_synced2);
profile2.SetRawInfo(autofill::NAME_FIRST, UTF8ToUTF16("Harry"));
data_list.push_back(autofill_syncable_service_.CreateData(profile2));
- // This one will have the name updated.
+ // This one will have the name and origin updated.
AutofillProfile profile3(guid_present2, origin_synced2);
profile3.SetRawInfo(autofill::NAME_FIRST, UTF8ToUTF16("Tom Doe"));
data_list.push_back(autofill_syncable_service_.CreateData(profile3));
@@ -159,38 +206,142 @@ TEST_F(AutofillProfileSyncableServiceTest, MergeDataAndStartSyncing) {
expected_change_list.push_back(
syncer::SyncChange(FROM_HERE,
syncer::SyncChange::ACTION_ADD,
- AutofillProfileSyncableService::CreateData(
- (*profiles_from_web_db.front()))));
+ MockAutofillProfileSyncableService::CreateData(
+ *profiles_from_web_db.front())));
- AutofillProfileSyncableService::DataBundle expected_bundle;
+ MockAutofillProfileSyncableService::DataBundle expected_bundle;
expected_bundle.profiles_to_add.push_back(&profile1);
expected_bundle.profiles_to_add.push_back(&profile2);
expected_bundle.profiles_to_update.push_back(&profile3);
- EXPECT_CALL(autofill_syncable_service_, LoadAutofillData(_))
- .Times(1)
- .WillOnce(DoAll(CopyData(&profiles_from_web_db), Return(true)));
- EXPECT_CALL(autofill_syncable_service_,
- SaveChangesToWebData(DataBundleCheck(expected_bundle)))
- .Times(1)
- .WillOnce(Return(true));
- ON_CALL(*sync_processor_, ProcessSyncChanges(_, _))
- .WillByDefault(Return(syncer::SyncError()));
- EXPECT_CALL(*sync_processor_,
- ProcessSyncChanges(_, CheckSyncChanges(expected_change_list)))
- .Times(1)
- .WillOnce(Return(syncer::SyncError()));
+ MergeDataAndStartSyncing(
+ profiles_from_web_db, data_list, expected_bundle, expected_change_list);
+ autofill_syncable_service_.StopSyncing(syncer::AUTOFILL_PROFILE);
+}
+
+TEST_F(AutofillProfileSyncableServiceTest, MergeIdenticalProfiles) {
+ std::vector<AutofillProfile*> profiles_from_web_db;
+ std::string guid_present1 = kGuid1;
+ std::string guid_present2 = kGuid2;
+ std::string guid_synced1 = kGuid3;
+ std::string guid_synced2 = kGuid4;
+ std::string origin_present1 = kHttpOrigin;
+ std::string origin_present2 = kSettingsOrigin;
+ std::string origin_synced1 = kHttpsOrigin;
+ std::string origin_synced2 = kHttpsOrigin;
+
+ profiles_from_web_db.push_back(
+ new AutofillProfile(guid_present1, origin_present1));
+ profiles_from_web_db.back()->SetRawInfo(
+ autofill::NAME_FIRST, UTF8ToUTF16("John"));
+ profiles_from_web_db.back()->SetRawInfo(
+ autofill::ADDRESS_HOME_LINE1, UTF8ToUTF16("1 1st st"));
+ profiles_from_web_db.push_back(
+ new AutofillProfile(guid_present2, origin_present2));
+ profiles_from_web_db.back()->SetRawInfo(
+ autofill::NAME_FIRST, UTF8ToUTF16("Tom"));
+ profiles_from_web_db.back()->SetRawInfo(
+ autofill::ADDRESS_HOME_LINE1, UTF8ToUTF16("2 2nd st"));
+
+ // The synced profiles are identical to the local ones, except that the guids
+ // are different.
+ syncer::SyncDataList data_list;
+ AutofillProfile profile1(guid_synced1, origin_synced1);
+ profile1.SetRawInfo(autofill::NAME_FIRST, UTF8ToUTF16("John"));
+ profile1.SetRawInfo(autofill::ADDRESS_HOME_LINE1, UTF8ToUTF16("1 1st st"));
+ data_list.push_back(autofill_syncable_service_.CreateData(profile1));
+ AutofillProfile profile2(guid_synced2, origin_synced2);
+ profile2.SetRawInfo(autofill::NAME_FIRST, UTF8ToUTF16("Tom"));
+ profile2.SetRawInfo(autofill::ADDRESS_HOME_LINE1, UTF8ToUTF16("2 2nd st"));
+ data_list.push_back(autofill_syncable_service_.CreateData(profile2));
+
+ AutofillProfile expected_profile(profile2);
+ expected_profile.set_origin(kSettingsOrigin);
+ syncer::SyncChangeList expected_change_list;
+ expected_change_list.push_back(
+ syncer::SyncChange(FROM_HERE,
+ syncer::SyncChange::ACTION_UPDATE,
+ MockAutofillProfileSyncableService::CreateData(
+ expected_profile)));
+
+ MockAutofillProfileSyncableService::DataBundle expected_bundle;
+ expected_bundle.profiles_to_delete.push_back(guid_present1);
+ expected_bundle.profiles_to_delete.push_back(guid_present2);
+ expected_bundle.profiles_to_add.push_back(&profile1);
+ expected_bundle.profiles_to_add.push_back(&expected_profile);
+
+ MergeDataAndStartSyncing(
+ profiles_from_web_db, data_list, expected_bundle, expected_change_list);
+ autofill_syncable_service_.StopSyncing(syncer::AUTOFILL_PROFILE);
+}
+
+TEST_F(AutofillProfileSyncableServiceTest, MergeSimilarProfiles) {
+ std::vector<AutofillProfile*> profiles_from_web_db;
+ std::string guid_present1 = kGuid1;
+ std::string guid_present2 = kGuid2;
+ std::string guid_synced1 = kGuid3;
+ std::string guid_synced2 = kGuid4;
+ std::string origin_present1 = kHttpOrigin;
+ std::string origin_present2 = kSettingsOrigin;
+ std::string origin_synced1 = kHttpsOrigin;
+ std::string origin_synced2 = kHttpsOrigin;
+
+ profiles_from_web_db.push_back(
+ new AutofillProfile(guid_present1, origin_present1));
+ profiles_from_web_db.back()->SetRawInfo(
+ autofill::NAME_FIRST, UTF8ToUTF16("John"));
+ profiles_from_web_db.back()->SetRawInfo(
+ autofill::ADDRESS_HOME_LINE1, UTF8ToUTF16("1 1st st"));
+ profiles_from_web_db.push_back(
+ new AutofillProfile(guid_present2, origin_present2));
+ profiles_from_web_db.back()->SetRawInfo(
+ autofill::NAME_FIRST, UTF8ToUTF16("Tom"));
+ profiles_from_web_db.back()->SetRawInfo(
+ autofill::ADDRESS_HOME_LINE1, UTF8ToUTF16("2 2nd st"));
+
+ // The synced profiles are identical to the local ones, except that the guids
+ // are different.
+ syncer::SyncDataList data_list;
+ AutofillProfile profile1(guid_synced1, origin_synced1);
+ profile1.SetRawInfo(autofill::NAME_FIRST, UTF8ToUTF16("John"));
+ profile1.SetRawInfo(autofill::ADDRESS_HOME_LINE1, UTF8ToUTF16("1 1st st"));
+ profile1.SetRawInfo(autofill::COMPANY_NAME, UTF8ToUTF16("Frobbers, Inc."));
+ data_list.push_back(autofill_syncable_service_.CreateData(profile1));
+ AutofillProfile profile2(guid_synced2, origin_synced2);
+ profile2.SetRawInfo(autofill::NAME_FIRST, UTF8ToUTF16("Tom"));
+ profile2.SetRawInfo(autofill::ADDRESS_HOME_LINE1, UTF8ToUTF16("2 2nd st"));
+ profile2.SetRawInfo(autofill::COMPANY_NAME, UTF8ToUTF16("Fizzbang, LLC."));
+ data_list.push_back(autofill_syncable_service_.CreateData(profile2));
+
+ // The first profile should have its origin updated.
+ // The second profile should remain as-is, because an unverified profile
+ // should never overwrite a verified one.
+ AutofillProfile expected_profile(profile1);
+ expected_profile.set_origin(origin_present1);
+ syncer::SyncChangeList expected_change_list;
+ expected_change_list.push_back(
+ syncer::SyncChange(FROM_HERE,
+ syncer::SyncChange::ACTION_ADD,
+ MockAutofillProfileSyncableService::CreateData(
+ *profiles_from_web_db.back())));
+ expected_change_list.push_back(
+ syncer::SyncChange(FROM_HERE,
+ syncer::SyncChange::ACTION_UPDATE,
+ MockAutofillProfileSyncableService::CreateData(
+ expected_profile)));
- // Takes ownership of sync_processor_.
- autofill_syncable_service_.MergeDataAndStartSyncing(
- syncer::AUTOFILL_PROFILE, data_list,
- sync_processor_.PassAs<syncer::SyncChangeProcessor>(),
- scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
+ MockAutofillProfileSyncableService::DataBundle expected_bundle;
+ expected_bundle.profiles_to_delete.push_back(guid_present1);
+ expected_bundle.profiles_to_add.push_back(&expected_profile);
+ expected_bundle.profiles_to_add.push_back(&profile2);
+
+ MergeDataAndStartSyncing(
+ profiles_from_web_db, data_list, expected_bundle, expected_change_list);
autofill_syncable_service_.StopSyncing(syncer::AUTOFILL_PROFILE);
}
TEST_F(AutofillProfileSyncableServiceTest, GetAllSyncData) {
- std::vector<AutofillProfile *> profiles_from_web_db;
+ std::vector<AutofillProfile*> profiles_from_web_db;
std::string guid_present1 = kGuid1;
std::string guid_present2 = kGuid2;
@@ -203,27 +354,22 @@ TEST_F(AutofillProfileSyncableServiceTest, GetAllSyncData) {
profiles_from_web_db.back()->SetRawInfo(
autofill::NAME_FIRST, UTF8ToUTF16("Jane"));
- EXPECT_CALL(autofill_syncable_service_, LoadAutofillData(_))
- .Times(1)
- .WillOnce(DoAll(CopyData(&profiles_from_web_db), Return(true)));
- EXPECT_CALL(autofill_syncable_service_, SaveChangesToWebData(_))
- .Times(1)
- .WillOnce(Return(true));
- ON_CALL(*sync_processor_, ProcessSyncChanges(_, _))
- .WillByDefault(Return(syncer::SyncError()));
- EXPECT_CALL(*sync_processor_,
- ProcessSyncChanges(
- _,
- Property(&syncer::SyncChangeList::size, Eq(2U))))
- .Times(1)
- .WillOnce(Return(syncer::SyncError()));
+ syncer::SyncChangeList expected_change_list;
+ expected_change_list.push_back(
+ syncer::SyncChange(FROM_HERE,
+ syncer::SyncChange::ACTION_ADD,
+ MockAutofillProfileSyncableService::CreateData(
+ *profiles_from_web_db.front())));
+ expected_change_list.push_back(
+ syncer::SyncChange(FROM_HERE,
+ syncer::SyncChange::ACTION_ADD,
+ MockAutofillProfileSyncableService::CreateData(
+ *profiles_from_web_db.back())));
+ MockAutofillProfileSyncableService::DataBundle expected_bundle;
syncer::SyncDataList data_list;
- // Takes ownership of sync_processor_.
- autofill_syncable_service_.MergeDataAndStartSyncing(
- syncer::AUTOFILL_PROFILE, data_list,
- sync_processor_.PassAs<syncer::SyncChangeProcessor>(),
- scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock()));
+ MergeDataAndStartSyncing(
+ profiles_from_web_db, data_list, expected_bundle, expected_change_list);
syncer::SyncDataList data =
autofill_syncable_service_.GetAllSyncData(syncer::AUTOFILL_PROFILE);
@@ -231,12 +377,10 @@ TEST_F(AutofillProfileSyncableServiceTest, GetAllSyncData) {
ASSERT_EQ(2U, data.size());
EXPECT_EQ(guid_present1, data[0].GetSpecifics().autofill_profile().guid());
EXPECT_EQ(guid_present2, data[1].GetSpecifics().autofill_profile().guid());
- // TODO(isherman): Verify that the origins match once they are saved and read
- // from the database and included in the Sync protocol buffers.
- // http://crbug.com/170401
- // EXPECT_EQ(kHttpOrigin, data[0].GetSpecifics().autofill_profile().origin());
- // EXPECT_EQ(kHttpsOrigin,
- // data[1].GetSpecifics().autofill_profile().origin());
+ EXPECT_EQ(kHttpOrigin, data[0].GetSpecifics().autofill_profile().origin());
+ EXPECT_EQ(kHttpsOrigin, data[1].GetSpecifics().autofill_profile().origin());
+
+ autofill_syncable_service_.StopSyncing(syncer::AUTOFILL_PROFILE);
}
TEST_F(AutofillProfileSyncableServiceTest, ProcessSyncChanges) {
@@ -248,17 +392,18 @@ TEST_F(AutofillProfileSyncableServiceTest, ProcessSyncChanges) {
AutofillProfile profile(guid_synced, kHttpOrigin);
profile.SetRawInfo(autofill::NAME_FIRST, UTF8ToUTF16("Jane"));
change_list.push_back(
- syncer::SyncChange(FROM_HERE,
- syncer::SyncChange::ACTION_ADD,
- AutofillProfileSyncableService::CreateData(profile)));
+ syncer::SyncChange(
+ FROM_HERE,
+ syncer::SyncChange::ACTION_ADD,
+ MockAutofillProfileSyncableService::CreateData(profile)));
AutofillProfile empty_profile(guid_present, kHttpsOrigin);
change_list.push_back(
syncer::SyncChange(
FROM_HERE,
syncer::SyncChange::ACTION_DELETE,
- AutofillProfileSyncableService::CreateData(empty_profile)));
+ MockAutofillProfileSyncableService::CreateData(empty_profile)));
- AutofillProfileSyncableService::DataBundle expected_bundle;
+ MockAutofillProfileSyncableService::DataBundle expected_bundle;
expected_bundle.profiles_to_delete.push_back(guid_present);
expected_bundle.profiles_to_add.push_back(&profile);
@@ -274,20 +419,43 @@ TEST_F(AutofillProfileSyncableServiceTest, ProcessSyncChanges) {
EXPECT_FALSE(error.IsSet());
}
-TEST_F(AutofillProfileSyncableServiceTest, ActOnChange) {
- AutofillProfile profile(kGuid1, std::string());
+TEST_F(AutofillProfileSyncableServiceTest, AutofillProfileAdded) {
+ // Will be owned by the syncable service. Keep a reference available here for
+ // verifying test expectations.
+ TestSyncChangeProcessor* sync_change_processor = new TestSyncChangeProcessor;
+ autofill_syncable_service_.set_sync_processor(sync_change_processor);
+
+ AutofillProfile profile(kGuid1, kHttpsOrigin);
profile.SetRawInfo(autofill::NAME_FIRST, UTF8ToUTF16("Jane"));
- AutofillProfileChange change1(AutofillProfileChange::ADD, kGuid1, &profile);
- AutofillProfileChange change2(AutofillProfileChange::REMOVE, kGuid2, NULL);
- ON_CALL(*sync_processor_, ProcessSyncChanges(_, _))
- .WillByDefault(
- Return(syncer::SyncError(FROM_HERE, std::string("an error"),
- syncer::AUTOFILL_PROFILE)));
- EXPECT_CALL(*sync_processor_, ProcessSyncChanges(_, _)).Times(2);
+ AutofillProfileChange change(AutofillProfileChange::ADD, kGuid1, &profile);
+ autofill_syncable_service_.AutofillProfileChanged(change);
+
+ ASSERT_EQ(1U, sync_change_processor->changes().size());
+ syncer::SyncChange result = sync_change_processor->changes()[0];
+ EXPECT_EQ(syncer::SyncChange::ACTION_ADD, result.change_type());
+
+ sync_pb::AutofillProfileSpecifics specifics =
+ result.sync_data().GetSpecifics().autofill_profile();
+ EXPECT_EQ(kGuid1, specifics.guid());
+ EXPECT_EQ(kHttpsOrigin, specifics.origin());
+ EXPECT_THAT(specifics.name_first(), testing::ElementsAre("Jane"));
+}
- autofill_syncable_service_.set_sync_processor(sync_processor_.release());
- autofill_syncable_service_.ActOnChange(change1);
- autofill_syncable_service_.ActOnChange(change2);
+TEST_F(AutofillProfileSyncableServiceTest, AutofillProfileDeleted) {
+ // Will be owned by the syncable service. Keep a reference available here for
+ // verifying test expectations.
+ TestSyncChangeProcessor* sync_change_processor = new TestSyncChangeProcessor;
+ autofill_syncable_service_.set_sync_processor(sync_change_processor);
+
+ AutofillProfileChange change(AutofillProfileChange::REMOVE, kGuid2, NULL);
+ autofill_syncable_service_.AutofillProfileChanged(change);
+
+ ASSERT_EQ(1U, sync_change_processor->changes().size());
+ syncer::SyncChange result = sync_change_processor->changes()[0];
+ EXPECT_EQ(syncer::SyncChange::ACTION_DELETE, result.change_type());
+ sync_pb::AutofillProfileSpecifics specifics =
+ result.sync_data().GetSpecifics().autofill_profile();
+ EXPECT_EQ(kGuid2, specifics.guid());
}
TEST_F(AutofillProfileSyncableServiceTest, UpdateField) {
@@ -350,7 +518,7 @@ TEST_F(AutofillProfileSyncableServiceTest, MergeProfile) {
values.push_back(UTF8ToUTF16("2@1.com"));
profile1.SetRawMultiInfo(autofill::EMAIL_ADDRESS, values);
- AutofillProfile profile2(kGuid2, std::string());
+ AutofillProfile profile2(kGuid2, kHttpsOrigin);
profile2.SetRawInfo(
autofill::ADDRESS_HOME_LINE1, UTF8ToUTF16("111 First St."));
@@ -398,6 +566,8 @@ TEST_F(AutofillProfileSyncableServiceTest, MergeProfile) {
ASSERT_EQ(values.size(), 1U);
EXPECT_EQ(values[0], UTF8ToUTF16("650234567"));
+ EXPECT_EQ(profile2.origin(), profile1.origin());
+
AutofillProfile profile3(kGuid3, kHttpOrigin);
profile3.SetRawInfo(
autofill::ADDRESS_HOME_LINE1, UTF8ToUTF16("111 First St."));

Powered by Google App Engine
This is Rietveld 408576698