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

Unified Diff: components/autofill/core/browser/webdata/autocomplete_sync_bridge_unittest.cc

Issue 2652393003: [Sync] MergeSyncData implementation for Autocomplete. (Closed)
Patch Set: Created 3 years, 11 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
« no previous file with comments | « components/autofill/core/browser/webdata/autocomplete_sync_bridge.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/autofill/core/browser/webdata/autocomplete_sync_bridge_unittest.cc
diff --git a/components/autofill/core/browser/webdata/autocomplete_sync_bridge_unittest.cc b/components/autofill/core/browser/webdata/autocomplete_sync_bridge_unittest.cc
index b12d0ef223f295c93988b5d0c0b708a329ba70a1..8430543d9e6c6d7bd31d3d41983252d38f3a773b 100644
--- a/components/autofill/core/browser/webdata/autocomplete_sync_bridge_unittest.cc
+++ b/components/autofill/core/browser/webdata/autocomplete_sync_bridge_unittest.cc
@@ -6,6 +6,7 @@
#include <algorithm>
#include <map>
+#include <utility>
#include <vector>
#include "base/bind.h"
@@ -35,10 +36,11 @@ using base::TimeDelta;
using sync_pb::AutofillSpecifics;
using sync_pb::EntitySpecifics;
using syncer::DataBatch;
-using syncer::EntityData;
-using syncer::EntityDataPtr;
using syncer::EntityChange;
using syncer::EntityChangeList;
+using syncer::EntityData;
+using syncer::EntityDataPtr;
+using syncer::EntityDataMap;
using syncer::FakeModelTypeChangeProcessor;
using syncer::KeyAndData;
using syncer::ModelError;
@@ -194,6 +196,15 @@ class AutocompleteSyncBridgeTest : public testing::Test {
return changes;
}
+ EntityDataMap CreateEntityDataMap(
+ const std::vector<AutofillSpecifics>& specifics_vector) {
+ EntityDataMap map;
+ for (const auto& specifics : specifics_vector) {
+ map[GetStorageKey(specifics)] = SpecificsToEntity(specifics);
+ }
+ return map;
+ }
+
void VerifyApplyChanges(const std::vector<EntityChange>& changes) {
const auto error = bridge()->ApplySyncChanges(
bridge()->CreateMetadataChangeList(), changes);
@@ -204,6 +215,12 @@ class AutocompleteSyncBridgeTest : public testing::Test {
VerifyApplyChanges(EntityAddList(specifics));
}
+ void VerifyMerge(const std::vector<AutofillSpecifics>& specifics) {
+ const auto error = bridge()->MergeSyncData(
+ bridge()->CreateMetadataChangeList(), CreateEntityDataMap(specifics));
+ EXPECT_FALSE(error);
+ }
+
std::map<std::string, AutofillSpecifics> ExpectedMap(
const std::vector<AutofillSpecifics>& specifics_vector) {
std::map<std::string, AutofillSpecifics> map;
@@ -521,4 +538,89 @@ TEST_F(AutocompleteSyncBridgeTest, LoadMetadataCalled) {
EXPECT_TRUE(processor()->metadata()->GetModelTypeState().initial_sync_done());
}
+TEST_F(AutocompleteSyncBridgeTest, MergeSyncDataEmpty) {
+ VerifyMerge(std::vector<AutofillSpecifics>());
+
+ VerifyAllData(std::vector<AutofillSpecifics>());
+ EXPECT_EQ(0u, processor()->delete_set().size());
+ EXPECT_EQ(0u, processor()->put_multimap().size());
+}
+
+TEST_F(AutocompleteSyncBridgeTest, MergeSyncDataRemoteOnly) {
+ const AutofillSpecifics specifics1 = CreateSpecifics(1, {2});
+ const AutofillSpecifics specifics2 = CreateSpecifics(2, {3, 4});
+
+ VerifyMerge({specifics1, specifics2});
+
+ VerifyAllData({specifics1, specifics2});
+ EXPECT_EQ(0u, processor()->delete_set().size());
+ EXPECT_EQ(0u, processor()->put_multimap().size());
+}
+
+TEST_F(AutocompleteSyncBridgeTest, MergeSyncDataLocalOnly) {
+ const AutofillSpecifics specifics1 = CreateSpecifics(1, {2});
+ const AutofillSpecifics specifics2 = CreateSpecifics(2, {3, 4});
+ VerifyApplyAdds({specifics1, specifics2});
+ VerifyAllData({specifics1, specifics2});
+
+ VerifyMerge(std::vector<AutofillSpecifics>());
+
+ VerifyAllData({specifics1, specifics2});
+ EXPECT_EQ(2u, processor()->put_multimap().size());
+ VerifyProcessorRecordedPut(specifics1);
+ VerifyProcessorRecordedPut(specifics2);
+ EXPECT_EQ(0u, processor()->delete_set().size());
+}
+
+TEST_F(AutocompleteSyncBridgeTest, MergeSyncDataAllMerged) {
+ const AutofillSpecifics local1 = CreateSpecifics(1, {2});
+ const AutofillSpecifics local2 = CreateSpecifics(2, {3, 4});
+ const AutofillSpecifics local3 = CreateSpecifics(3, {4});
+ const AutofillSpecifics local4 = CreateSpecifics(4, {5, 6});
+ const AutofillSpecifics local5 = CreateSpecifics(5, {6, 9});
+ const AutofillSpecifics local6 = CreateSpecifics(6, {7, 9});
+ const AutofillSpecifics remote1 = local1;
+ const AutofillSpecifics remote2 = local2;
+ const AutofillSpecifics remote3 = CreateSpecifics(3, {5});
+ const AutofillSpecifics remote4 = CreateSpecifics(4, {7, 8});
+ const AutofillSpecifics remote5 = CreateSpecifics(5, {8, 9});
+ const AutofillSpecifics remote6 = CreateSpecifics(6, {8, 10});
+ const AutofillSpecifics merged1 = local1;
+ const AutofillSpecifics merged2 = local2;
+ const AutofillSpecifics merged3 = CreateSpecifics(3, {4, 5});
+ const AutofillSpecifics merged4 = CreateSpecifics(4, {5, 8});
+ const AutofillSpecifics merged5 = local5;
+ const AutofillSpecifics merged6 = CreateSpecifics(6, {7, 10});
+ VerifyApplyAdds({local1, local2, local3, local4, local5, local6});
+
+ VerifyMerge({remote1, remote2, remote3, remote4, remote5, remote6});
+
+ VerifyAllData({merged1, merged2, merged3, merged4, merged5, merged6});
+ EXPECT_EQ(4u, processor()->put_multimap().size());
+ VerifyProcessorRecordedPut(merged3);
+ VerifyProcessorRecordedPut(merged4);
+ VerifyProcessorRecordedPut(merged5);
+ VerifyProcessorRecordedPut(merged6);
+ EXPECT_EQ(0u, processor()->delete_set().size());
+}
+
+TEST_F(AutocompleteSyncBridgeTest, MergeSyncDataMixed) {
+ const AutofillSpecifics local1 = CreateSpecifics(1, {2, 3});
+ const AutofillSpecifics remote2 = CreateSpecifics(2, {2, 3});
+ const AutofillSpecifics specifics3 = CreateSpecifics(3, {2, 3});
+ const AutofillSpecifics local4 = CreateSpecifics(4, {1, 3});
+ const AutofillSpecifics remote4 = CreateSpecifics(4, {2, 4});
+ const AutofillSpecifics merged4 = CreateSpecifics(4, {1, 4});
+
+ VerifyApplyAdds({local1, specifics3, local4});
+
+ VerifyMerge({remote2, specifics3, remote4});
+
+ VerifyAllData({local1, remote2, specifics3, merged4});
+ EXPECT_EQ(2u, processor()->put_multimap().size());
+ VerifyProcessorRecordedPut(local1);
+ VerifyProcessorRecordedPut(merged4);
+ EXPECT_EQ(0u, processor()->delete_set().size());
+}
+
} // namespace autofill
« no previous file with comments | « components/autofill/core/browser/webdata/autocomplete_sync_bridge.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698