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

Side by Side Diff: chrome/browser/webdata/autofill_profile_syncable_service_unittest.cc

Issue 8065016: [Sync] Refactor non-frontend DTC to handle new API properly. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase++++ Created 9 years, 2 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/webdata/autofill_profile_syncable_service.cc ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/location.h" 5 #include "base/location.h"
6 #include "base/utf_string_conversions.h" 6 #include "base/utf_string_conversions.h"
7 #include "chrome/browser/autofill/autofill_profile.h" 7 #include "chrome/browser/autofill/autofill_profile.h"
8 #include "chrome/browser/sync/internal_api/read_node_mock.h" 8 #include "chrome/browser/sync/internal_api/read_node_mock.h"
9 #include "chrome/browser/sync/internal_api/syncapi_mock.h" 9 #include "chrome/browser/sync/internal_api/syncapi_mock.h"
10 #include "chrome/browser/sync/syncable/syncable.h" 10 #include "chrome/browser/sync/syncable/syncable.h"
(...skipping 14 matching lines...) Expand all
25 class MockAutofillProfileSyncableService 25 class MockAutofillProfileSyncableService
26 : public AutofillProfileSyncableService { 26 : public AutofillProfileSyncableService {
27 public: 27 public:
28 MockAutofillProfileSyncableService() { 28 MockAutofillProfileSyncableService() {
29 } 29 }
30 virtual ~MockAutofillProfileSyncableService() {} 30 virtual ~MockAutofillProfileSyncableService() {}
31 31
32 MOCK_METHOD1(LoadAutofillData, bool(std::vector<AutofillProfile*>*)); 32 MOCK_METHOD1(LoadAutofillData, bool(std::vector<AutofillProfile*>*));
33 MOCK_METHOD1(SaveChangesToWebData, 33 MOCK_METHOD1(SaveChangesToWebData,
34 bool(const AutofillProfileSyncableService::DataBundle&)); 34 bool(const AutofillProfileSyncableService::DataBundle&));
35
36 // Helper for tests that do not need to setup service completely through the
37 // MergeDataAndStartSyncing().
38 class AutoSetSyncProcessor {
39 public:
40 AutoSetSyncProcessor(MockAutofillProfileSyncableService* service,
41 SyncChangeProcessor* sync_processor)
42 : service_(service) {
43 service->set_sync_processor(sync_processor);
44 }
45 ~AutoSetSyncProcessor() {
46 service_->set_sync_processor(NULL);
47 }
48 MockAutofillProfileSyncableService* service_;
49 };
50 }; 35 };
51 36
52 ACTION_P(CopyData, data) { 37 ACTION_P(CopyData, data) {
53 arg0->resize(data->size()); 38 arg0->resize(data->size());
54 std::copy(data->begin(), data->end(), arg0->begin()); 39 std::copy(data->begin(), data->end(), arg0->begin());
55 } 40 }
56 41
57 MATCHER_P(CheckSyncChanges, n_sync_changes_list, "") { 42 MATCHER_P(CheckSyncChanges, n_sync_changes_list, "") {
58 if (arg.size() != n_sync_changes_list.size()) 43 if (arg.size() != n_sync_changes_list.size())
59 return false; 44 return false;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 MOCK_METHOD2(ProcessSyncChanges, 90 MOCK_METHOD2(ProcessSyncChanges,
106 SyncError(const tracked_objects::Location&, 91 SyncError(const tracked_objects::Location&,
107 const SyncChangeList&)); 92 const SyncChangeList&));
108 }; 93 };
109 94
110 class AutofillProfileSyncableServiceTest : public testing::Test { 95 class AutofillProfileSyncableServiceTest : public testing::Test {
111 public: 96 public:
112 AutofillProfileSyncableServiceTest() 97 AutofillProfileSyncableServiceTest()
113 : db_thread_(BrowserThread::DB, &message_loop_) {} 98 : db_thread_(BrowserThread::DB, &message_loop_) {}
114 99
100 virtual void SetUp() OVERRIDE {
101 sync_processor_.reset(new MockSyncChangeProcessor);
102 }
103
104 virtual void TearDown() OVERRIDE {
105 // Each test passes ownership of the sync processor to the SyncableService.
106 // We don't release it immediately so we can verify the mock calls, so
107 // release it at teardown. Any test that doesn't call
108 // MergeDataAndStartSyncing or set_sync_processor must ensure the
109 // sync_processor_ gets properly reset.
110 ignore_result(sync_processor_.release());
111 }
115 protected: 112 protected:
116 MessageLoop message_loop_; 113 MessageLoop message_loop_;
117 BrowserThread db_thread_; 114 BrowserThread db_thread_;
118 MockAutofillProfileSyncableService autofill_syncable_service_; 115 MockAutofillProfileSyncableService autofill_syncable_service_;
119 MockSyncChangeProcessor sync_processor_; 116 scoped_ptr<MockSyncChangeProcessor> sync_processor_;
120 }; 117 };
121 118
122 TEST_F(AutofillProfileSyncableServiceTest, MergeDataAndStartSyncing) { 119 TEST_F(AutofillProfileSyncableServiceTest, MergeDataAndStartSyncing) {
123 std::vector<AutofillProfile *> profiles_from_web_db; 120 std::vector<AutofillProfile *> profiles_from_web_db;
124 std::string guid_present1 = "EDC609ED-7EEE-4F27-B00C-423242A9C44B"; 121 std::string guid_present1 = "EDC609ED-7EEE-4F27-B00C-423242A9C44B";
125 std::string guid_present2 = "EDC609ED-7EEE-4F27-B00C-423242A9C44C"; 122 std::string guid_present2 = "EDC609ED-7EEE-4F27-B00C-423242A9C44C";
126 std::string guid_synced1 = "EDC609ED-7EEE-4F27-B00C-423242A9C44D"; 123 std::string guid_synced1 = "EDC609ED-7EEE-4F27-B00C-423242A9C44D";
127 std::string guid_synced2 = "EDC609ED-7EEE-4F27-B00C-423242A9C44E"; 124 std::string guid_synced2 = "EDC609ED-7EEE-4F27-B00C-423242A9C44E";
128 125
129 profiles_from_web_db.push_back(new AutofillProfile(guid_present1)); 126 profiles_from_web_db.push_back(new AutofillProfile(guid_present1));
(...skipping 24 matching lines...) Expand all
154 expected_bundle.profiles_to_add.push_back(&profile2); 151 expected_bundle.profiles_to_add.push_back(&profile2);
155 expected_bundle.profiles_to_update.push_back(&profile3); 152 expected_bundle.profiles_to_update.push_back(&profile3);
156 153
157 EXPECT_CALL(autofill_syncable_service_, LoadAutofillData(_)) 154 EXPECT_CALL(autofill_syncable_service_, LoadAutofillData(_))
158 .Times(1) 155 .Times(1)
159 .WillOnce(DoAll(CopyData(&profiles_from_web_db), Return(true))); 156 .WillOnce(DoAll(CopyData(&profiles_from_web_db), Return(true)));
160 EXPECT_CALL(autofill_syncable_service_, 157 EXPECT_CALL(autofill_syncable_service_,
161 SaveChangesToWebData(DataBundleCheck(expected_bundle))) 158 SaveChangesToWebData(DataBundleCheck(expected_bundle)))
162 .Times(1) 159 .Times(1)
163 .WillOnce(Return(true)); 160 .WillOnce(Return(true));
164 ON_CALL(sync_processor_, ProcessSyncChanges(_, _)) 161 ON_CALL(*sync_processor_, ProcessSyncChanges(_, _))
165 .WillByDefault(Return(SyncError())); 162 .WillByDefault(Return(SyncError()));
166 EXPECT_CALL(sync_processor_, 163 EXPECT_CALL(*sync_processor_,
167 ProcessSyncChanges(_, CheckSyncChanges(expected_change_list))) 164 ProcessSyncChanges(_, CheckSyncChanges(expected_change_list)))
168 .Times(1) 165 .Times(1)
169 .WillOnce(Return(SyncError())); 166 .WillOnce(Return(SyncError()));
170 167
168 // Takes ownership of sync_processor_.
171 autofill_syncable_service_.MergeDataAndStartSyncing( 169 autofill_syncable_service_.MergeDataAndStartSyncing(
172 syncable::AUTOFILL_PROFILE, data_list, &sync_processor_); 170 syncable::AUTOFILL_PROFILE, data_list, sync_processor_.get());
173 autofill_syncable_service_.StopSyncing(syncable::AUTOFILL_PROFILE); 171 autofill_syncable_service_.StopSyncing(syncable::AUTOFILL_PROFILE);
174 } 172 }
175 173
176 TEST_F(AutofillProfileSyncableServiceTest, GetAllSyncData) { 174 TEST_F(AutofillProfileSyncableServiceTest, GetAllSyncData) {
177 std::vector<AutofillProfile *> profiles_from_web_db; 175 std::vector<AutofillProfile *> profiles_from_web_db;
178 std::string guid_present1 = "EDC609ED-7EEE-4F27-B00C-423242A9C44B"; 176 std::string guid_present1 = "EDC609ED-7EEE-4F27-B00C-423242A9C44B";
179 std::string guid_present2 = "EDC609ED-7EEE-4F27-B00C-423242A9C44C"; 177 std::string guid_present2 = "EDC609ED-7EEE-4F27-B00C-423242A9C44C";
180 178
181 profiles_from_web_db.push_back(new AutofillProfile(guid_present1)); 179 profiles_from_web_db.push_back(new AutofillProfile(guid_present1));
182 profiles_from_web_db.back()->SetInfo(NAME_FIRST, UTF8ToUTF16("John")); 180 profiles_from_web_db.back()->SetInfo(NAME_FIRST, UTF8ToUTF16("John"));
183 profiles_from_web_db.push_back(new AutofillProfile(guid_present2)); 181 profiles_from_web_db.push_back(new AutofillProfile(guid_present2));
184 profiles_from_web_db.back()->SetInfo(NAME_FIRST, UTF8ToUTF16("Jane")); 182 profiles_from_web_db.back()->SetInfo(NAME_FIRST, UTF8ToUTF16("Jane"));
185 183
186 EXPECT_CALL(autofill_syncable_service_, LoadAutofillData(_)) 184 EXPECT_CALL(autofill_syncable_service_, LoadAutofillData(_))
187 .Times(1) 185 .Times(1)
188 .WillOnce(DoAll(CopyData(&profiles_from_web_db), Return(true))); 186 .WillOnce(DoAll(CopyData(&profiles_from_web_db), Return(true)));
189 EXPECT_CALL(autofill_syncable_service_, SaveChangesToWebData(_)) 187 EXPECT_CALL(autofill_syncable_service_, SaveChangesToWebData(_))
190 .Times(1) 188 .Times(1)
191 .WillOnce(Return(true)); 189 .WillOnce(Return(true));
192 ON_CALL(sync_processor_, ProcessSyncChanges(_, _)) 190 ON_CALL(*sync_processor_, ProcessSyncChanges(_, _))
193 .WillByDefault(Return(SyncError())); 191 .WillByDefault(Return(SyncError()));
194 EXPECT_CALL(sync_processor_, 192 EXPECT_CALL(*sync_processor_,
195 ProcessSyncChanges(_, Property(&SyncChangeList::size, Eq(2U)))) 193 ProcessSyncChanges(_, Property(&SyncChangeList::size, Eq(2U))))
196 .Times(1) 194 .Times(1)
197 .WillOnce(Return(SyncError())); 195 .WillOnce(Return(SyncError()));
198 196
199 SyncDataList data_list; 197 SyncDataList data_list;
198 // Takes ownership of sync_processor_.
200 autofill_syncable_service_.MergeDataAndStartSyncing( 199 autofill_syncable_service_.MergeDataAndStartSyncing(
201 syncable::AUTOFILL_PROFILE, data_list, &sync_processor_); 200 syncable::AUTOFILL_PROFILE, data_list, sync_processor_.get());
202 201
203 SyncDataList data = 202 SyncDataList data =
204 autofill_syncable_service_.GetAllSyncData(syncable::AUTOFILL_PROFILE); 203 autofill_syncable_service_.GetAllSyncData(syncable::AUTOFILL_PROFILE);
205 204
206 EXPECT_EQ(2U, data.size()); 205 EXPECT_EQ(2U, data.size());
207 EXPECT_EQ(guid_present1, data.front().GetSpecifics() 206 EXPECT_EQ(guid_present1, data.front().GetSpecifics()
208 .GetExtension(sync_pb::autofill_profile).guid()); 207 .GetExtension(sync_pb::autofill_profile).guid());
209 EXPECT_EQ(guid_present2, data.back().GetSpecifics() 208 EXPECT_EQ(guid_present2, data.back().GetSpecifics()
210 .GetExtension(sync_pb::autofill_profile).guid()); 209 .GetExtension(sync_pb::autofill_profile).guid());
211 } 210 }
(...skipping 16 matching lines...) Expand all
228 227
229 AutofillProfileSyncableService::DataBundle expected_bundle; 228 AutofillProfileSyncableService::DataBundle expected_bundle;
230 expected_bundle.profiles_to_delete.push_back(guid_present); 229 expected_bundle.profiles_to_delete.push_back(guid_present);
231 expected_bundle.profiles_to_add.push_back(&profile); 230 expected_bundle.profiles_to_add.push_back(&profile);
232 231
233 EXPECT_CALL(autofill_syncable_service_, SaveChangesToWebData( 232 EXPECT_CALL(autofill_syncable_service_, SaveChangesToWebData(
234 DataBundleCheck(expected_bundle))) 233 DataBundleCheck(expected_bundle)))
235 .Times(1) 234 .Times(1)
236 .WillOnce(Return(true)); 235 .WillOnce(Return(true));
237 236
238 MockAutofillProfileSyncableService::AutoSetSyncProcessor temp( 237 autofill_syncable_service_.set_sync_processor(sync_processor_.get());
239 &autofill_syncable_service_, &sync_processor_);
240 SyncError error = autofill_syncable_service_.ProcessSyncChanges( 238 SyncError error = autofill_syncable_service_.ProcessSyncChanges(
241 FROM_HERE, change_list); 239 FROM_HERE, change_list);
242 240
243 EXPECT_FALSE(error.IsSet()); 241 EXPECT_FALSE(error.IsSet());
244 } 242 }
245 243
246 TEST_F(AutofillProfileSyncableServiceTest, ActOnChange) { 244 TEST_F(AutofillProfileSyncableServiceTest, ActOnChange) {
247 std::string guid1 = "EDC609ED-7EEE-4F27-B00C-423242A9C44B"; 245 std::string guid1 = "EDC609ED-7EEE-4F27-B00C-423242A9C44B";
248 std::string guid2 = "EDC609ED-7EEE-4F27-B00C-423242A9C44C"; 246 std::string guid2 = "EDC609ED-7EEE-4F27-B00C-423242A9C44C";
249 247
250 AutofillProfile profile(guid1); 248 AutofillProfile profile(guid1);
251 profile.SetInfo(NAME_FIRST, UTF8ToUTF16("Jane")); 249 profile.SetInfo(NAME_FIRST, UTF8ToUTF16("Jane"));
252 AutofillProfileChange change1(AutofillProfileChange::ADD, guid1, &profile); 250 AutofillProfileChange change1(AutofillProfileChange::ADD, guid1, &profile);
253 AutofillProfileChange change2(AutofillProfileChange::REMOVE, guid2, NULL); 251 AutofillProfileChange change2(AutofillProfileChange::REMOVE, guid2, NULL);
254 ON_CALL(sync_processor_, ProcessSyncChanges(_, _)) 252 ON_CALL(*sync_processor_, ProcessSyncChanges(_, _))
255 .WillByDefault(Return(SyncError(FROM_HERE, std::string("an error"), 253 .WillByDefault(Return(SyncError(FROM_HERE, std::string("an error"),
256 syncable::AUTOFILL_PROFILE))); 254 syncable::AUTOFILL_PROFILE)));
257 255
258 MockAutofillProfileSyncableService::AutoSetSyncProcessor temp( 256 autofill_syncable_service_.set_sync_processor(sync_processor_.get());
259 &autofill_syncable_service_, &sync_processor_);
260 autofill_syncable_service_.ActOnChange(change1); 257 autofill_syncable_service_.ActOnChange(change1);
261 autofill_syncable_service_.ActOnChange(change2); 258 autofill_syncable_service_.ActOnChange(change2);
262 } 259 }
OLDNEW
« no previous file with comments | « chrome/browser/webdata/autofill_profile_syncable_service.cc ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698