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