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

Side by Side Diff: chrome/browser/sync/profile_sync_service_autofill_unittest.cc

Issue 14081043: Hook up Autofill Backend interface to SyncableServices (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update interface Created 7 years, 7 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
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 <set> 5 #include <set>
6 #include <string> 6 #include <string>
7 #include <vector> 7 #include <vector>
8 8
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 10
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 return (profile.Compare(arg) == 0); 137 return (profile.Compare(arg) == 0);
138 } 138 }
139 139
140 class WebDatabaseFake : public WebDatabase { 140 class WebDatabaseFake : public WebDatabase {
141 public: 141 public:
142 explicit WebDatabaseFake(AutofillTable* autofill_table) { 142 explicit WebDatabaseFake(AutofillTable* autofill_table) {
143 AddTable(autofill_table); 143 AddTable(autofill_table);
144 } 144 }
145 }; 145 };
146 146
147 class MockAutofillBackend : public autofill::AutofillWebDataBackend {
148 public:
149 MockAutofillBackend(
150 WebDatabase* web_database,
151 const base::Closure& on_changed)
152 : web_database_(web_database),
Ilya Sherman 2013/05/13 23:44:47 nit: Indent each of these three two more spaces.
Cait (Slow) 2013/05/14 22:30:08 Done.
153 on_changed_(on_changed) {
154 }
Ilya Sherman 2013/05/13 23:44:47 nit: De-indent this line two spaces, or move it to
Cait (Slow) 2013/05/14 22:30:08 Done.
155
156 virtual ~MockAutofillBackend() {}
157 virtual WebDatabase* GetDatabase() OVERRIDE { return web_database_; }
158 virtual void AddObserver(
159 autofill::AutofillWebDataServiceObserverOnDBThread* observer) OVERRIDE {}
160 virtual void RemoveObserver(
161 autofill::AutofillWebDataServiceObserverOnDBThread* observer) OVERRIDE {}
162 virtual void RemoveExpiredFormElementsWrapper() OVERRIDE {}
163 virtual void NotifyOfMultipleAutofillChanges() OVERRIDE {
164 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
165 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, on_changed_);
166 }
167
168 private:
169 WebDatabase* web_database_;
170 base::Closure on_changed_;
171 };
172
147 class ProfileSyncServiceAutofillTest; 173 class ProfileSyncServiceAutofillTest;
148 174
149 template<class AutofillProfile> 175 template<class AutofillProfile>
150 syncer::ModelType GetModelType() { 176 syncer::ModelType GetModelType() {
151 return syncer::UNSPECIFIED; 177 return syncer::UNSPECIFIED;
152 } 178 }
153 179
154 template<> 180 template<>
155 syncer::ModelType GetModelType<AutofillEntry>() { 181 syncer::ModelType GetModelType<AutofillEntry>() {
156 return syncer::AUTOFILL; 182 return syncer::AUTOFILL;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 syncable_service_created_or_destroyed_(false, false) { 225 syncable_service_created_or_destroyed_(false, false) {
200 } 226 }
201 227
202 void SetDatabase(WebDatabase* web_database) { 228 void SetDatabase(WebDatabase* web_database) {
203 web_database_ = web_database; 229 web_database_ = web_database;
204 } 230 }
205 231
206 void StartSyncableService() { 232 void StartSyncableService() {
207 // The |autofill_profile_syncable_service_| must be constructed on the DB 233 // The |autofill_profile_syncable_service_| must be constructed on the DB
208 // thread. 234 // thread.
235 const base::Closure& on_changed_callback = base::Bind(
236 &AutofillWebDataService::NotifyAutofillMultipleChangedOnUIThread,
237 AsWeakPtr());
238
209 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, 239 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE,
210 base::Bind(&WebDataServiceFake::CreateSyncableService, 240 base::Bind(&WebDataServiceFake::CreateSyncableService,
211 base::Unretained(this))); 241 base::Unretained(this),
242 on_changed_callback));
212 syncable_service_created_or_destroyed_.Wait(); 243 syncable_service_created_or_destroyed_.Wait();
213 } 244 }
214 245
215 void ShutdownSyncableService() { 246 void ShutdownSyncableService() {
216 // The |autofill_profile_syncable_service_| must be destructed on the DB 247 // The |autofill_profile_syncable_service_| must be destructed on the DB
217 // thread. 248 // thread.
218 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, 249 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE,
219 base::Bind(&WebDataServiceFake::DestroySyncableService, 250 base::Bind(&WebDataServiceFake::DestroySyncableService,
220 base::Unretained(this))); 251 base::Unretained(this)));
221 syncable_service_created_or_destroyed_.Wait(); 252 syncable_service_created_or_destroyed_.Wait();
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 BrowserThread::PostTask( 286 BrowserThread::PostTask(
256 BrowserThread::DB, 287 BrowserThread::DB,
257 FROM_HERE, 288 FROM_HERE,
258 base::Bind(&RunAndSignal, notify_cb, &event)); 289 base::Bind(&RunAndSignal, notify_cb, &event));
259 event.Wait(); 290 event.Wait();
260 } 291 }
261 292
262 private: 293 private:
263 virtual ~WebDataServiceFake() {} 294 virtual ~WebDataServiceFake() {}
264 295
265 void CreateSyncableService() { 296 void CreateSyncableService(const base::Closure& on_changed_callback) {
266 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::DB)); 297 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::DB));
267 // These services are deleted in DestroySyncableService(). 298 // These services are deleted in DestroySyncableService().
268 AutocompleteSyncableService::CreateForWebDataService(this); 299 backend_.reset(new MockAutofillBackend(
269 AutofillProfileSyncableService::CreateForWebDataService(this, "en-US"); 300 GetDatabase(), on_changed_callback));
301 AutocompleteSyncableService::CreateForWebDataService(this, backend_.get());
302 AutofillProfileSyncableService::CreateForWebDataService(
303 this, backend_.get(), "en-US");
270 304
271 autocomplete_syncable_service_ = 305 autocomplete_syncable_service_ =
272 AutocompleteSyncableService::FromWebDataService(this); 306 AutocompleteSyncableService::FromWebDataService(this);
273 autofill_profile_syncable_service_ = 307 autofill_profile_syncable_service_ =
274 AutofillProfileSyncableService::FromWebDataService(this); 308 AutofillProfileSyncableService::FromWebDataService(this);
275 309
276 syncable_service_created_or_destroyed_.Signal(); 310 syncable_service_created_or_destroyed_.Signal();
277 } 311 }
278 312
279 void DestroySyncableService() { 313 void DestroySyncableService() {
280 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::DB)); 314 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::DB));
281 AutofillWebDataService::ShutdownOnDBThread(); 315 AutofillWebDataService::ShutdownOnDBThread();
282 autocomplete_syncable_service_ = NULL; 316 autocomplete_syncable_service_ = NULL;
283 autofill_profile_syncable_service_ = NULL; 317 autofill_profile_syncable_service_ = NULL;
318 backend_.reset();
284 syncable_service_created_or_destroyed_.Signal(); 319 syncable_service_created_or_destroyed_.Signal();
285 } 320 }
286 321
287 WebDatabase* web_database_; 322 WebDatabase* web_database_;
288 AutocompleteSyncableService* autocomplete_syncable_service_; 323 AutocompleteSyncableService* autocomplete_syncable_service_;
289 AutofillProfileSyncableService* autofill_profile_syncable_service_; 324 AutofillProfileSyncableService* autofill_profile_syncable_service_;
325 scoped_ptr<autofill::AutofillWebDataBackend> backend_;
290 326
291 WaitableEvent syncable_service_created_or_destroyed_; 327 WaitableEvent syncable_service_created_or_destroyed_;
292 328
293 DISALLOW_COPY_AND_ASSIGN(WebDataServiceFake); 329 DISALLOW_COPY_AND_ASSIGN(WebDataServiceFake);
294 }; 330 };
295 331
296 ProfileKeyedService* BuildMockWebDataServiceWrapper( 332 ProfileKeyedService* BuildMockWebDataServiceWrapper(
297 content::BrowserContext* profile) { 333 content::BrowserContext* profile) {
298 return new MockWebDataServiceWrapper( 334 return new MockWebDataServiceWrapper(
299 new TokenWebDataServiceFake(), 335 new TokenWebDataServiceFake(),
(...skipping 1064 matching lines...) Expand 10 before | Expand all | Expand 10 after
1364 std::vector<AutofillEntry> sync_entries; 1400 std::vector<AutofillEntry> sync_entries;
1365 std::vector<AutofillProfile> sync_profiles; 1401 std::vector<AutofillProfile> sync_profiles;
1366 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&sync_entries, &sync_profiles)); 1402 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&sync_entries, &sync_profiles));
1367 EXPECT_EQ(3U, sync_entries.size()); 1403 EXPECT_EQ(3U, sync_entries.size());
1368 EXPECT_EQ(0U, sync_profiles.size()); 1404 EXPECT_EQ(0U, sync_profiles.size());
1369 for (size_t i = 0; i < sync_entries.size(); i++) { 1405 for (size_t i = 0; i < sync_entries.size(); i++) {
1370 DVLOG(1) << "Entry " << i << ": " << sync_entries[i].key().name() 1406 DVLOG(1) << "Entry " << i << ": " << sync_entries[i].key().name()
1371 << ", " << sync_entries[i].key().value(); 1407 << ", " << sync_entries[i].key().value();
1372 } 1408 }
1373 } 1409 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698