| OLD | NEW |
| 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 22 matching lines...) Expand all Loading... |
| 33 #include "chrome/browser/sync/profile_sync_components_factory.h" | 33 #include "chrome/browser/sync/profile_sync_components_factory.h" |
| 34 #include "chrome/browser/sync/profile_sync_service.h" | 34 #include "chrome/browser/sync/profile_sync_service.h" |
| 35 #include "chrome/browser/sync/profile_sync_service_factory.h" | 35 #include "chrome/browser/sync/profile_sync_service_factory.h" |
| 36 #include "chrome/browser/sync/profile_sync_test_util.h" | 36 #include "chrome/browser/sync/profile_sync_test_util.h" |
| 37 #include "chrome/browser/sync/test_profile_sync_service.h" | 37 #include "chrome/browser/sync/test_profile_sync_service.h" |
| 38 #include "chrome/browser/webdata/autocomplete_syncable_service.h" | 38 #include "chrome/browser/webdata/autocomplete_syncable_service.h" |
| 39 #include "chrome/browser/webdata/autofill_profile_syncable_service.h" | 39 #include "chrome/browser/webdata/autofill_profile_syncable_service.h" |
| 40 #include "chrome/browser/webdata/web_data_service_factory.h" | 40 #include "chrome/browser/webdata/web_data_service_factory.h" |
| 41 #include "components/autofill/browser/autofill_common_test.h" | 41 #include "components/autofill/browser/autofill_common_test.h" |
| 42 #include "components/autofill/browser/personal_data_manager.h" | 42 #include "components/autofill/browser/personal_data_manager.h" |
| 43 #include "components/autofill/browser/webdata/autofill_backend_delegate.h" |
| 43 #include "components/autofill/browser/webdata/autofill_change.h" | 44 #include "components/autofill/browser/webdata/autofill_change.h" |
| 44 #include "components/autofill/browser/webdata/autofill_entry.h" | 45 #include "components/autofill/browser/webdata/autofill_entry.h" |
| 45 #include "components/autofill/browser/webdata/autofill_table.h" | 46 #include "components/autofill/browser/webdata/autofill_table.h" |
| 47 #include "components/autofill/browser/webdata/autofill_webdata_backend.h" |
| 46 #include "components/autofill/browser/webdata/autofill_webdata_service.h" | 48 #include "components/autofill/browser/webdata/autofill_webdata_service.h" |
| 47 #include "components/webdata/common/web_data_service_test_util.h" | 49 #include "components/webdata/common/web_data_service_test_util.h" |
| 48 #include "components/webdata/common/web_database.h" | 50 #include "components/webdata/common/web_database.h" |
| 49 #include "content/public/test/test_browser_thread.h" | 51 #include "content/public/test/test_browser_thread.h" |
| 50 #include "google_apis/gaia/gaia_constants.h" | 52 #include "google_apis/gaia/gaia_constants.h" |
| 51 #include "sync/internal_api/public/base/model_type.h" | 53 #include "sync/internal_api/public/base/model_type.h" |
| 52 #include "sync/internal_api/public/read_node.h" | 54 #include "sync/internal_api/public/read_node.h" |
| 53 #include "sync/internal_api/public/read_transaction.h" | 55 #include "sync/internal_api/public/read_transaction.h" |
| 54 #include "sync/internal_api/public/write_node.h" | 56 #include "sync/internal_api/public/write_node.h" |
| 55 #include "sync/internal_api/public/write_transaction.h" | 57 #include "sync/internal_api/public/write_transaction.h" |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 135 | 137 |
| 136 MATCHER_P(MatchProfiles, profile, "") { | 138 MATCHER_P(MatchProfiles, profile, "") { |
| 137 return (profile.Compare(arg) == 0); | 139 return (profile.Compare(arg) == 0); |
| 138 } | 140 } |
| 139 | 141 |
| 140 class WebDatabaseFake : public WebDatabase { | 142 class WebDatabaseFake : public WebDatabase { |
| 141 public: | 143 public: |
| 142 explicit WebDatabaseFake(AutofillTable* autofill_table) { | 144 explicit WebDatabaseFake(AutofillTable* autofill_table) { |
| 143 AddTable(autofill_table); | 145 AddTable(autofill_table); |
| 144 } | 146 } |
| 147 |
| 148 void DetachFromThread() { |
| 149 weak_ptr_factory_.DetachFromThread(); |
| 150 } |
| 151 |
| 145 }; | 152 }; |
| 146 | 153 |
| 147 class ProfileSyncServiceAutofillTest; | 154 class ProfileSyncServiceAutofillTest; |
| 148 | 155 |
| 149 template<class AutofillProfile> | 156 template<class AutofillProfile> |
| 150 syncer::ModelType GetModelType() { | 157 syncer::ModelType GetModelType() { |
| 151 return syncer::UNSPECIFIED; | 158 return syncer::UNSPECIFIED; |
| 152 } | 159 } |
| 153 | 160 |
| 154 template<> | 161 template<> |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 226 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, |
| 220 base::Bind(&WebDataServiceFake::DestroySyncableService, | 227 base::Bind(&WebDataServiceFake::DestroySyncableService, |
| 221 base::Unretained(this))); | 228 base::Unretained(this))); |
| 222 syncable_service_created_or_destroyed_.Wait(); | 229 syncable_service_created_or_destroyed_.Wait(); |
| 223 } | 230 } |
| 224 | 231 |
| 225 virtual bool IsDatabaseLoaded() OVERRIDE { | 232 virtual bool IsDatabaseLoaded() OVERRIDE { |
| 226 return true; | 233 return true; |
| 227 } | 234 } |
| 228 | 235 |
| 229 virtual WebDatabase* GetDatabase() OVERRIDE { | 236 WebDatabase* GetDatabase() { |
| 230 return web_database_; | 237 return web_database_; |
| 231 } | 238 } |
| 232 | 239 |
| 233 virtual void ShutdownOnUIThread() OVERRIDE {} | 240 virtual void ShutdownOnUIThread() OVERRIDE {} |
| 234 | 241 |
| 235 void OnAutofillEntriesChanged(const AutofillChangeList& changes) { | 242 void OnAutofillEntriesChanged(const AutofillChangeList& changes) { |
| 236 WaitableEvent event(true, false); | 243 WaitableEvent event(true, false); |
| 237 | 244 |
| 238 base::Closure notify_cb = | 245 base::Closure notify_cb = |
| 239 base::Bind(&AutocompleteSyncableService::AutofillEntriesChanged, | 246 base::Bind(&AutocompleteSyncableService::AutofillEntriesChanged, |
| (...skipping 19 matching lines...) Expand all Loading... |
| 259 base::Bind(&RunAndSignal, notify_cb, &event)); | 266 base::Bind(&RunAndSignal, notify_cb, &event)); |
| 260 event.Wait(); | 267 event.Wait(); |
| 261 } | 268 } |
| 262 | 269 |
| 263 private: | 270 private: |
| 264 virtual ~WebDataServiceFake() {} | 271 virtual ~WebDataServiceFake() {} |
| 265 | 272 |
| 266 void CreateSyncableService() { | 273 void CreateSyncableService() { |
| 267 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::DB)); | 274 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::DB)); |
| 268 // These services are deleted in DestroySyncableService(). | 275 // These services are deleted in DestroySyncableService(). |
| 269 AutocompleteSyncableService::CreateForWebDataService(this); | 276 delegate_.reset(new autofill::AutofillBackendDelegate( |
| 270 AutofillProfileSyncableService::CreateForWebDataService(this, "en-US"); | 277 GetDatabase()->AsWeakPtr(), |
| 278 base::WeakPtr<autofill::AutofillWebDataBackend>())); |
| 279 AutocompleteSyncableService::CreateForWebDataService(this, delegate_.get()); |
| 280 AutofillProfileSyncableService::CreateForWebDataService( |
| 281 this, delegate_.get(), "en-US"); |
| 271 | 282 |
| 272 autocomplete_syncable_service_ = | 283 autocomplete_syncable_service_ = |
| 273 AutocompleteSyncableService::FromWebDataService(this); | 284 AutocompleteSyncableService::FromWebDataService(this); |
| 274 autofill_profile_syncable_service_ = | 285 autofill_profile_syncable_service_ = |
| 275 AutofillProfileSyncableService::FromWebDataService(this); | 286 AutofillProfileSyncableService::FromWebDataService(this); |
| 276 | 287 |
| 277 syncable_service_created_or_destroyed_.Signal(); | 288 syncable_service_created_or_destroyed_.Signal(); |
| 278 } | 289 } |
| 279 | 290 |
| 280 void DestroySyncableService() { | 291 void DestroySyncableService() { |
| 281 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::DB)); | 292 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::DB)); |
| 282 AutofillWebDataService::ShutdownOnDBThread(); | 293 AutofillWebDataService::ShutdownOnDBThread(); |
| 283 autocomplete_syncable_service_ = NULL; | 294 autocomplete_syncable_service_ = NULL; |
| 284 autofill_profile_syncable_service_ = NULL; | 295 autofill_profile_syncable_service_ = NULL; |
| 296 delegate_.reset(); |
| 285 syncable_service_created_or_destroyed_.Signal(); | 297 syncable_service_created_or_destroyed_.Signal(); |
| 286 } | 298 } |
| 287 | 299 |
| 288 WebDatabase* web_database_; | 300 WebDatabase* web_database_; |
| 289 AutocompleteSyncableService* autocomplete_syncable_service_; | 301 AutocompleteSyncableService* autocomplete_syncable_service_; |
| 290 AutofillProfileSyncableService* autofill_profile_syncable_service_; | 302 AutofillProfileSyncableService* autofill_profile_syncable_service_; |
| 291 | 303 scoped_ptr<autofill::AutofillBackendDelegate> delegate_; |
| 292 WaitableEvent syncable_service_created_or_destroyed_; | 304 WaitableEvent syncable_service_created_or_destroyed_; |
| 293 | 305 |
| 294 DISALLOW_COPY_AND_ASSIGN(WebDataServiceFake); | 306 DISALLOW_COPY_AND_ASSIGN(WebDataServiceFake); |
| 295 }; | 307 }; |
| 296 | 308 |
| 297 ProfileKeyedService* BuildMockWebDataServiceWrapper(Profile* profile) { | 309 ProfileKeyedService* BuildMockWebDataServiceWrapper(Profile* profile) { |
| 298 return new MockWebDataServiceWrapper( | 310 return new MockWebDataServiceWrapper( |
| 299 new TokenWebDataServiceFake(), | 311 new TokenWebDataServiceFake(), |
| 300 new WebDataServiceFake()); | 312 new WebDataServiceFake()); |
| 301 } | 313 } |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 495 | 507 |
| 496 web_data_service_->StartSyncableService(); | 508 web_data_service_->StartSyncableService(); |
| 497 } | 509 } |
| 498 | 510 |
| 499 virtual void TearDown() OVERRIDE { | 511 virtual void TearDown() OVERRIDE { |
| 500 // Note: The tear down order is important. | 512 // Note: The tear down order is important. |
| 501 ProfileSyncServiceFactory::GetInstance()->SetTestingFactory( | 513 ProfileSyncServiceFactory::GetInstance()->SetTestingFactory( |
| 502 profile_.get(), NULL); | 514 profile_.get(), NULL); |
| 503 web_data_service_->ShutdownSyncableService(); | 515 web_data_service_->ShutdownSyncableService(); |
| 504 web_data_service_ = NULL; | 516 web_data_service_ = NULL; |
| 517 web_database_->DetachFromThread(); |
| 505 profile_->ResetRequestContext(); | 518 profile_->ResetRequestContext(); |
| 506 // To prevent a leak, fully release TestURLRequestContext to ensure its | 519 // To prevent a leak, fully release TestURLRequestContext to ensure its |
| 507 // destruction on the IO message loop. | 520 // destruction on the IO message loop. |
| 508 profile_.reset(); | 521 profile_.reset(); |
| 509 AbstractProfileSyncServiceTest::TearDown(); | 522 AbstractProfileSyncServiceTest::TearDown(); |
| 510 } | 523 } |
| 511 | 524 |
| 512 | 525 |
| 513 int GetSyncCount(syncer::ModelType type) { | 526 int GetSyncCount(syncer::ModelType type) { |
| 514 syncer::ReadTransaction trans(FROM_HERE, sync_service_->GetUserShare()); | 527 syncer::ReadTransaction trans(FROM_HERE, sync_service_->GetUserShare()); |
| (...skipping 850 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1365 std::vector<AutofillEntry> sync_entries; | 1378 std::vector<AutofillEntry> sync_entries; |
| 1366 std::vector<AutofillProfile> sync_profiles; | 1379 std::vector<AutofillProfile> sync_profiles; |
| 1367 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&sync_entries, &sync_profiles)); | 1380 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&sync_entries, &sync_profiles)); |
| 1368 EXPECT_EQ(3U, sync_entries.size()); | 1381 EXPECT_EQ(3U, sync_entries.size()); |
| 1369 EXPECT_EQ(0U, sync_profiles.size()); | 1382 EXPECT_EQ(0U, sync_profiles.size()); |
| 1370 for (size_t i = 0; i < sync_entries.size(); i++) { | 1383 for (size_t i = 0; i < sync_entries.size(); i++) { |
| 1371 DVLOG(1) << "Entry " << i << ": " << sync_entries[i].key().name() | 1384 DVLOG(1) << "Entry " << i << ": " << sync_entries[i].key().name() |
| 1372 << ", " << sync_entries[i].key().value(); | 1385 << ", " << sync_entries[i].key().value(); |
| 1373 } | 1386 } |
| 1374 } | 1387 } |
| OLD | NEW |