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

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: Pure merge 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),
153 on_changed_(on_changed) {
154 }
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 RemoveExpiredFormElements() 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 &WebDataServiceFake::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::CreateForWebDataServiceAndBackend(
302 this, backend_.get());
303 AutofillProfileSyncableService::CreateForWebDataServiceAndBackend(
304 this, backend_.get(), "en-US");
270 305
271 autocomplete_syncable_service_ = 306 autocomplete_syncable_service_ =
272 AutocompleteSyncableService::FromWebDataService(this); 307 AutocompleteSyncableService::FromWebDataService(this);
273 autofill_profile_syncable_service_ = 308 autofill_profile_syncable_service_ =
274 AutofillProfileSyncableService::FromWebDataService(this); 309 AutofillProfileSyncableService::FromWebDataService(this);
275 310
276 syncable_service_created_or_destroyed_.Signal(); 311 syncable_service_created_or_destroyed_.Signal();
277 } 312 }
278 313
279 void DestroySyncableService() { 314 void DestroySyncableService() {
280 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::DB)); 315 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::DB));
281 AutofillWebDataService::ShutdownOnDBThread(); 316 AutofillWebDataService::ShutdownOnDBThread();
282 autocomplete_syncable_service_ = NULL; 317 autocomplete_syncable_service_ = NULL;
283 autofill_profile_syncable_service_ = NULL; 318 autofill_profile_syncable_service_ = NULL;
319 backend_.reset();
284 syncable_service_created_or_destroyed_.Signal(); 320 syncable_service_created_or_destroyed_.Signal();
285 } 321 }
286 322
287 WebDatabase* web_database_; 323 WebDatabase* web_database_;
288 AutocompleteSyncableService* autocomplete_syncable_service_; 324 AutocompleteSyncableService* autocomplete_syncable_service_;
289 AutofillProfileSyncableService* autofill_profile_syncable_service_; 325 AutofillProfileSyncableService* autofill_profile_syncable_service_;
326 scoped_ptr<autofill::AutofillWebDataBackend> backend_;
290 327
291 WaitableEvent syncable_service_created_or_destroyed_; 328 WaitableEvent syncable_service_created_or_destroyed_;
292 329
293 DISALLOW_COPY_AND_ASSIGN(WebDataServiceFake); 330 DISALLOW_COPY_AND_ASSIGN(WebDataServiceFake);
294 }; 331 };
295 332
296 BrowserContextKeyedService* BuildMockWebDataServiceWrapper( 333 BrowserContextKeyedService* BuildMockWebDataServiceWrapper(
297 content::BrowserContext* profile) { 334 content::BrowserContext* profile) {
298 return new MockWebDataServiceWrapper( 335 return new MockWebDataServiceWrapper(
299 new TokenWebDataServiceFake(), 336 new TokenWebDataServiceFake(),
(...skipping 1064 matching lines...) Expand 10 before | Expand all | Expand 10 after
1364 std::vector<AutofillEntry> sync_entries; 1401 std::vector<AutofillEntry> sync_entries;
1365 std::vector<AutofillProfile> sync_profiles; 1402 std::vector<AutofillProfile> sync_profiles;
1366 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&sync_entries, &sync_profiles)); 1403 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&sync_entries, &sync_profiles));
1367 EXPECT_EQ(3U, sync_entries.size()); 1404 EXPECT_EQ(3U, sync_entries.size());
1368 EXPECT_EQ(0U, sync_profiles.size()); 1405 EXPECT_EQ(0U, sync_profiles.size());
1369 for (size_t i = 0; i < sync_entries.size(); i++) { 1406 for (size_t i = 0; i < sync_entries.size(); i++) {
1370 DVLOG(1) << "Entry " << i << ": " << sync_entries[i].key().name() 1407 DVLOG(1) << "Entry " << i << ": " << sync_entries[i].key().name()
1371 << ", " << sync_entries[i].key().value(); 1408 << ", " << sync_entries[i].key().value();
1372 } 1409 }
1373 } 1410 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698