| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 24 matching lines...) Expand all Loading... |
| 35 #include "chrome/browser/sync/profile_sync_components_factory.h" | 35 #include "chrome/browser/sync/profile_sync_components_factory.h" |
| 36 #include "chrome/browser/sync/profile_sync_service.h" | 36 #include "chrome/browser/sync/profile_sync_service.h" |
| 37 #include "chrome/browser/sync/profile_sync_test_util.h" | 37 #include "chrome/browser/sync/profile_sync_test_util.h" |
| 38 #include "chrome/browser/sync/test_profile_sync_service.h" | 38 #include "chrome/browser/sync/test_profile_sync_service.h" |
| 39 #include "chrome/browser/webdata/autocomplete_syncable_service.h" | 39 #include "chrome/browser/webdata/autocomplete_syncable_service.h" |
| 40 #include "chrome/browser/webdata/autofill_change.h" | 40 #include "chrome/browser/webdata/autofill_change.h" |
| 41 #include "chrome/browser/webdata/autofill_entry.h" | 41 #include "chrome/browser/webdata/autofill_entry.h" |
| 42 #include "chrome/browser/webdata/autofill_profile_syncable_service.h" | 42 #include "chrome/browser/webdata/autofill_profile_syncable_service.h" |
| 43 #include "chrome/browser/webdata/autofill_table.h" | 43 #include "chrome/browser/webdata/autofill_table.h" |
| 44 #include "chrome/browser/webdata/web_database.h" | 44 #include "chrome/browser/webdata/web_database.h" |
| 45 #include "chrome/browser/webdata/web_data_service.h" |
| 46 #include "chrome/browser/webdata/web_data_service_factory.h" |
| 45 #include "chrome/common/chrome_notification_types.h" | 47 #include "chrome/common/chrome_notification_types.h" |
| 46 #include "chrome/common/net/gaia/gaia_constants.h" | 48 #include "chrome/common/net/gaia/gaia_constants.h" |
| 47 #include "content/public/browser/notification_source.h" | 49 #include "content/public/browser/notification_source.h" |
| 48 #include "content/test/test_browser_thread.h" | 50 #include "content/test/test_browser_thread.h" |
| 49 #include "sync/engine/model_changing_syncer_command.h" | 51 #include "sync/engine/model_changing_syncer_command.h" |
| 50 #include "sync/internal_api/read_node.h" | 52 #include "sync/internal_api/read_node.h" |
| 51 #include "sync/internal_api/read_transaction.h" | 53 #include "sync/internal_api/read_transaction.h" |
| 52 #include "sync/internal_api/write_node.h" | 54 #include "sync/internal_api/write_node.h" |
| 53 #include "sync/internal_api/write_transaction.h" | 55 #include "sync/internal_api/write_transaction.h" |
| 54 #include "sync/protocol/autofill_specifics.pb.h" | 56 #include "sync/protocol/autofill_specifics.pb.h" |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 153 return syncable::AUTOFILL; | 155 return syncable::AUTOFILL; |
| 154 } | 156 } |
| 155 | 157 |
| 156 template<> | 158 template<> |
| 157 syncable::ModelType GetModelType<AutofillProfile>() { | 159 syncable::ModelType GetModelType<AutofillProfile>() { |
| 158 return syncable::AUTOFILL_PROFILE; | 160 return syncable::AUTOFILL_PROFILE; |
| 159 } | 161 } |
| 160 | 162 |
| 161 class WebDataServiceFake : public WebDataService { | 163 class WebDataServiceFake : public WebDataService { |
| 162 public: | 164 public: |
| 163 explicit WebDataServiceFake(WebDatabase* web_database) | 165 WebDataServiceFake() |
| 164 : web_database_(web_database), | 166 : web_database_(NULL), |
| 165 syncable_service_created_or_destroyed_(false, false) { | 167 syncable_service_created_or_destroyed_(false, false) { |
| 166 } | 168 } |
| 167 | 169 |
| 170 static scoped_refptr<RefcountedProfileKeyedService> Build(Profile* profile) { |
| 171 return new WebDataServiceFake; |
| 172 } |
| 173 |
| 174 void SetDatabase(WebDatabase* web_database) { |
| 175 web_database_ = web_database; |
| 176 } |
| 177 |
| 168 void StartSyncableService() { | 178 void StartSyncableService() { |
| 169 // The |autofill_profile_syncable_service_| must be constructed on the DB | 179 // The |autofill_profile_syncable_service_| must be constructed on the DB |
| 170 // thread. | 180 // thread. |
| 171 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 181 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, |
| 172 base::Bind(&WebDataServiceFake::CreateSyncableService, | 182 base::Bind(&WebDataServiceFake::CreateSyncableService, |
| 173 base::Unretained(this))); | 183 base::Unretained(this))); |
| 174 syncable_service_created_or_destroyed_.Wait(); | 184 syncable_service_created_or_destroyed_.Wait(); |
| 175 } | 185 } |
| 176 | 186 |
| 177 void ShutdownSyncableService() { | 187 void ShutdownSyncableService() { |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 212 } | 222 } |
| 213 | 223 |
| 214 virtual AutofillProfileSyncableService* | 224 virtual AutofillProfileSyncableService* |
| 215 GetAutofillProfileSyncableService() const OVERRIDE { | 225 GetAutofillProfileSyncableService() const OVERRIDE { |
| 216 EXPECT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::DB)); | 226 EXPECT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::DB)); |
| 217 EXPECT_TRUE(autofill_profile_syncable_service_); | 227 EXPECT_TRUE(autofill_profile_syncable_service_); |
| 218 | 228 |
| 219 return autofill_profile_syncable_service_; | 229 return autofill_profile_syncable_service_; |
| 220 } | 230 } |
| 221 | 231 |
| 232 virtual void ShutdownOnUIThread() OVERRIDE {} |
| 233 |
| 222 private: | 234 private: |
| 223 virtual ~WebDataServiceFake() {} | 235 virtual ~WebDataServiceFake() {} |
| 224 | 236 |
| 225 void CreateSyncableService() { | 237 void CreateSyncableService() { |
| 226 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::DB)); | 238 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::DB)); |
| 227 // These services are deleted in DestroySyncableService(). | 239 // These services are deleted in DestroySyncableService(). |
| 228 autocomplete_syncable_service_ = new AutocompleteSyncableService(this); | 240 autocomplete_syncable_service_ = new AutocompleteSyncableService(this); |
| 229 autofill_profile_syncable_service_ = | 241 autofill_profile_syncable_service_ = |
| 230 new AutofillProfileSyncableService(this); | 242 new AutofillProfileSyncableService(this); |
| 231 syncable_service_created_or_destroyed_.Signal(); | 243 syncable_service_created_or_destroyed_.Signal(); |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 338 MOCK_METHOD0(LoadProfiles, void()); | 350 MOCK_METHOD0(LoadProfiles, void()); |
| 339 MOCK_METHOD0(LoadCreditCards, void()); | 351 MOCK_METHOD0(LoadCreditCards, void()); |
| 340 MOCK_METHOD0(Refresh, void()); | 352 MOCK_METHOD0(Refresh, void()); |
| 341 }; | 353 }; |
| 342 template <class T> class AddAutofillHelper; | 354 template <class T> class AddAutofillHelper; |
| 343 | 355 |
| 344 class ProfileSyncServiceAutofillTest : public AbstractProfileSyncServiceTest { | 356 class ProfileSyncServiceAutofillTest : public AbstractProfileSyncServiceTest { |
| 345 protected: | 357 protected: |
| 346 ProfileSyncServiceAutofillTest() { | 358 ProfileSyncServiceAutofillTest() { |
| 347 } | 359 } |
| 360 virtual ~ProfileSyncServiceAutofillTest() { |
| 361 } |
| 348 | 362 |
| 349 AutofillProfileFactory profile_factory_; | 363 AutofillProfileFactory profile_factory_; |
| 350 AutofillEntryFactory entry_factory_; | 364 AutofillEntryFactory entry_factory_; |
| 351 | 365 |
| 352 AbstractAutofillFactory* GetFactory(syncable::ModelType type) { | 366 AbstractAutofillFactory* GetFactory(syncable::ModelType type) { |
| 353 if (type == syncable::AUTOFILL) { | 367 if (type == syncable::AUTOFILL) { |
| 354 return &entry_factory_; | 368 return &entry_factory_; |
| 355 } else if (type == syncable::AUTOFILL_PROFILE) { | 369 } else if (type == syncable::AUTOFILL_PROFILE) { |
| 356 return &profile_factory_; | 370 return &profile_factory_; |
| 357 } else { | 371 } else { |
| 358 NOTREACHED(); | 372 NOTREACHED(); |
| 359 return NULL; | 373 return NULL; |
| 360 } | 374 } |
| 361 } | 375 } |
| 362 | 376 |
| 363 virtual void SetUp() OVERRIDE { | 377 virtual void SetUp() OVERRIDE { |
| 364 AbstractProfileSyncServiceTest::SetUp(); | 378 AbstractProfileSyncServiceTest::SetUp(); |
| 365 profile_.CreateRequestContext(); | 379 profile_.CreateRequestContext(); |
| 366 web_database_.reset(new WebDatabaseFake(&autofill_table_)); | 380 web_database_.reset(new WebDatabaseFake(&autofill_table_)); |
| 367 web_data_service_ = new WebDataServiceFake(web_database_.get()); | 381 web_data_service_ = static_cast<WebDataServiceFake*>( |
| 382 WebDataServiceFactory::GetInstance()->SetTestingFactoryAndUse( |
| 383 &profile_, WebDataServiceFake::Build).get()); |
| 384 web_data_service_->SetDatabase(web_database_.get()); |
| 368 personal_data_manager_ = static_cast<PersonalDataManagerMock*>( | 385 personal_data_manager_ = static_cast<PersonalDataManagerMock*>( |
| 369 PersonalDataManagerFactory::GetInstance()->SetTestingFactoryAndUse( | 386 PersonalDataManagerFactory::GetInstance()->SetTestingFactoryAndUse( |
| 370 &profile_, PersonalDataManagerMock::Build)); | 387 &profile_, PersonalDataManagerMock::Build)); |
| 371 token_service_ = static_cast<TokenService*>( | 388 token_service_ = static_cast<TokenService*>( |
| 372 TokenServiceFactory::GetInstance()->SetTestingFactoryAndUse( | 389 TokenServiceFactory::GetInstance()->SetTestingFactoryAndUse( |
| 373 &profile_, BuildTokenService)); | 390 &profile_, BuildTokenService)); |
| 374 // GetHistoryService() gets called indirectly, but the result is ignored, so | 391 // GetHistoryService() gets called indirectly, but the result is ignored, so |
| 375 // it is safe to return NULL. | 392 // it is safe to return NULL. |
| 376 EXPECT_CALL(profile_, GetHistoryService(_)). | 393 EXPECT_CALL(profile_, GetHistoryService(_)). |
| 377 WillRepeatedly(Return(static_cast<HistoryService*>(NULL))); | 394 WillRepeatedly(Return(static_cast<HistoryService*>(NULL))); |
| 378 EXPECT_CALL(*personal_data_manager_, LoadProfiles()).Times(1); | 395 EXPECT_CALL(*personal_data_manager_, LoadProfiles()).Times(1); |
| 379 EXPECT_CALL(*personal_data_manager_, LoadCreditCards()).Times(1); | 396 EXPECT_CALL(*personal_data_manager_, LoadCreditCards()).Times(1); |
| 380 EXPECT_CALL(profile_, GetWebDataService(_)). | 397 |
| 381 // TokenService::Initialize | |
| 382 // AutofillDataTypeController::StartModels() | |
| 383 // In some tests: | |
| 384 // AutofillProfileSyncableService::AutofillProfileSyncableService() | |
| 385 WillRepeatedly(Return(web_data_service_.get())); | |
| 386 personal_data_manager_->Init(&profile_); | 398 personal_data_manager_->Init(&profile_); |
| 387 | 399 |
| 388 // Note: This must be called *after* the notification service is created. | 400 // Note: This must be called *after* the notification service is created. |
| 389 web_data_service_->StartSyncableService(); | 401 web_data_service_->StartSyncableService(); |
| 390 } | 402 } |
| 391 | 403 |
| 392 virtual void TearDown() OVERRIDE { | 404 virtual void TearDown() OVERRIDE { |
| 393 // Note: The tear down order is important. | 405 // Note: The tear down order is important. |
| 394 service_.reset(); | 406 service_.reset(); |
| 395 web_data_service_->ShutdownSyncableService(); | 407 web_data_service_->ShutdownSyncableService(); |
| (...skipping 845 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1241 std::vector<AutofillEntry> sync_entries; | 1253 std::vector<AutofillEntry> sync_entries; |
| 1242 std::vector<AutofillProfile> sync_profiles; | 1254 std::vector<AutofillProfile> sync_profiles; |
| 1243 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&sync_entries, &sync_profiles)); | 1255 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&sync_entries, &sync_profiles)); |
| 1244 EXPECT_EQ(3U, sync_entries.size()); | 1256 EXPECT_EQ(3U, sync_entries.size()); |
| 1245 EXPECT_EQ(0U, sync_profiles.size()); | 1257 EXPECT_EQ(0U, sync_profiles.size()); |
| 1246 for (size_t i = 0; i < sync_entries.size(); i++) { | 1258 for (size_t i = 0; i < sync_entries.size(); i++) { |
| 1247 DVLOG(1) << "Entry " << i << ": " << sync_entries[i].key().name() | 1259 DVLOG(1) << "Entry " << i << ": " << sync_entries[i].key().name() |
| 1248 << ", " << sync_entries[i].key().value(); | 1260 << ", " << sync_entries[i].key().value(); |
| 1249 } | 1261 } |
| 1250 } | 1262 } |
| OLD | NEW |