Index: chrome/browser/sync/test_profile_sync_service.h |
diff --git a/chrome/browser/sync/test_profile_sync_service.h b/chrome/browser/sync/test_profile_sync_service.h |
index 3cad8dc41774d64417618f497dae57082fc759fd..b4115ad6ba732b30f480a9bb6bf2044e01d85c9b 100644 |
--- a/chrome/browser/sync/test_profile_sync_service.h |
+++ b/chrome/browser/sync/test_profile_sync_service.h |
@@ -22,6 +22,7 @@ |
#include "chrome/common/notification_service.h" |
#include "chrome/test/profile_mock.h" |
#include "chrome/test/sync/test_http_bridge_factory.h" |
+#include "chrome/test/sync/engine/test_id_factory.h" |
#include "testing/gmock/include/gmock/gmock.h" |
using browser_sync::ModelSafeRoutingInfo; |
@@ -33,6 +34,8 @@ using syncable::DirectoryManager; |
using syncable::ModelType; |
using syncable::ScopedDirLookup; |
+class TestProfileSyncService; |
+ |
ACTION_P(CallOnPaused, core) { |
core->OnPaused(); |
}; |
@@ -60,7 +63,7 @@ class SyncBackendHostForProfileSyncTest : public SyncBackendHost { |
// this is false, configuring data types will require a syncer nudge. |
// |synchronous_init| causes initialization to block until the syncapi has |
// completed setting itself up and called us back. |
- SyncBackendHostForProfileSyncTest(SyncFrontend* frontend, |
+ SyncBackendHostForProfileSyncTest(TestProfileSyncService* service, |
Profile* profile, |
const FilePath& profile_path, |
const DataTypeController::TypeMap& data_type_controllers, |
@@ -68,114 +71,33 @@ class SyncBackendHostForProfileSyncTest : public SyncBackendHost { |
int num_expected_resumes, |
int num_expected_pauses, |
bool set_initial_sync_ended_on_init, |
- bool synchronous_init) |
- : browser_sync::SyncBackendHost(frontend, profile, profile_path, |
- data_type_controllers), |
- initial_condition_setup_task_(initial_condition_setup_task), |
- set_initial_sync_ended_on_init_(set_initial_sync_ended_on_init), |
- synchronous_init_(synchronous_init) { |
- // By default, the RequestPause and RequestResume methods will |
- // send the confirmation notification and return true. |
- ON_CALL(*this, RequestPause()). |
- WillByDefault(testing::DoAll(CallOnPaused(core_), |
- testing::Return(true))); |
- ON_CALL(*this, RequestResume()). |
- WillByDefault(testing::DoAll(CallOnResumed(core_), |
- testing::Return(true))); |
- ON_CALL(*this, RequestNudge()).WillByDefault(testing::Invoke(this, |
- &SyncBackendHostForProfileSyncTest:: |
- SimulateSyncCycleCompletedInitialSyncEnded)); |
- |
- EXPECT_CALL(*this, RequestPause()).Times(num_expected_pauses); |
- EXPECT_CALL(*this, RequestResume()).Times(num_expected_resumes); |
- EXPECT_CALL(*this, RequestNudge()). |
- Times(set_initial_sync_ended_on_init ? 0 : 1); |
- } |
+ bool synchronous_init); |
MOCK_METHOD0(RequestPause, bool()); |
MOCK_METHOD0(RequestResume, bool()); |
MOCK_METHOD0(RequestNudge, void()); |
- void SetInitialSyncEndedForEnabledTypes() { |
- UserShare* user_share = core_->syncapi()->GetUserShare(); |
- DirectoryManager* dir_manager = user_share->dir_manager.get(); |
- |
- ScopedDirLookup dir(dir_manager, user_share->name); |
- if (!dir.good()) |
- FAIL(); |
- |
- ModelSafeRoutingInfo enabled_types; |
- GetModelSafeRoutingInfo(&enabled_types); |
- for (ModelSafeRoutingInfo::const_iterator i = enabled_types.begin(); |
- i != enabled_types.end(); ++i) { |
- dir->set_initial_sync_ended_for_type(i->first, true); |
- } |
- } |
+ void SetInitialSyncEndedForEnabledTypes(); |
- virtual void HandleInitializationCompletedOnFrontendLoop() { |
- set_syncapi_initialized(); // Need to do this asap so task below works. |
- |
- // Set up any nodes the test wants around before model association. |
- if (initial_condition_setup_task_) { |
- initial_condition_setup_task_->Run(); |
- } |
- |
- // Pretend we downloaded initial updates and set initial sync ended bits |
- // if we were asked to. |
- if (set_initial_sync_ended_on_init_) |
- SetInitialSyncEndedForEnabledTypes(); |
- |
- SyncBackendHost::HandleInitializationCompletedOnFrontendLoop(); |
- } |
+ virtual void HandleInitializationCompletedOnFrontendLoop(); |
// Called when a nudge comes in. |
- void SimulateSyncCycleCompletedInitialSyncEnded() { |
- syncable::ModelTypeBitSet sync_ended; |
- ModelSafeRoutingInfo enabled_types; |
- GetModelSafeRoutingInfo(&enabled_types); |
- for (ModelSafeRoutingInfo::const_iterator i = enabled_types.begin(); |
- i != enabled_types.end(); ++i) { |
- sync_ended.set(i->first); |
- } |
- core_->HandleSyncCycleCompletedOnFrontendLoop(new SyncSessionSnapshot( |
- SyncerStatus(), ErrorCounters(), 0, 0, false, |
- sync_ended, false, false, 0, 0, false)); |
- } |
+ void SimulateSyncCycleCompletedInitialSyncEnded(); |
virtual sync_api::HttpPostProviderFactory* MakeHttpBridgeFactory( |
URLRequestContextGetter* getter) { |
return new browser_sync::TestHttpBridgeFactory; |
} |
- virtual void InitCore(const Core::DoInitializeOptions& options) { |
- std::wstring user = L"testuser"; |
- core_loop()->PostTask(FROM_HERE, |
- NewRunnableMethod(core_.get(), |
- &SyncBackendHost::Core::DoInitializeForTest, |
- user, |
- options.http_bridge_factory, |
- options.delete_sync_data_folder)); |
+ virtual void InitCore(const Core::DoInitializeOptions& options); |
- // TODO(akalin): Figure out a better way to do this. |
- if (synchronous_init_) { |
- // The SyncBackend posts a task to the current loop when |
- // initialization completes. |
- MessageLoop::current()->Run(); |
- } |
- } |
- |
- static void SetDefaultExpectationsForWorkerCreation(ProfileMock* profile) { |
- EXPECT_CALL(*profile, GetPasswordStore(testing::_)). |
- WillOnce(testing::Return((PasswordStore*)NULL)); |
- EXPECT_CALL(*profile, GetHistoryService(testing::_)). |
- WillOnce(testing::Return((HistoryService*)NULL)); |
- } |
+ static void SetDefaultExpectationsForWorkerCreation(ProfileMock* profile); |
private: |
Task* initial_condition_setup_task_; |
bool set_initial_sync_ended_on_init_; |
bool synchronous_init_; |
- |
+ TestProfileSyncService* test_service_; |
}; |
} // namespace browser_sync |
@@ -186,49 +108,16 @@ class TestProfileSyncService : public ProfileSyncService { |
Profile* profile, |
const std::string& test_user, |
bool synchronous_backend_initialization, |
- Task* initial_condition_setup_task) |
- : ProfileSyncService(factory, profile, |
- !test_user.empty() ? |
- test_user : ""), |
- synchronous_backend_initialization_( |
- synchronous_backend_initialization), |
- synchronous_sync_configuration_(false), |
- num_expected_resumes_(1), |
- num_expected_pauses_(1), |
- initial_condition_setup_task_(initial_condition_setup_task), |
- set_initial_sync_ended_on_init_(true) { |
- RegisterPreferences(); |
- SetSyncSetupCompleted(); |
- } |
+ Task* initial_condition_setup_task); |
virtual ~TestProfileSyncService() { } |
- virtual void CreateBackend() { |
- backend_.reset(new browser_sync::SyncBackendHostForProfileSyncTest( |
- this, profile(), |
- profile()->GetPath(), data_type_controllers(), |
- initial_condition_setup_task_.release(), |
- num_expected_resumes_, num_expected_pauses_, |
- set_initial_sync_ended_on_init_, |
- synchronous_backend_initialization_)); |
- } |
+ virtual void CreateBackend(); |
- virtual void OnBackendInitialized() { |
- ProfileSyncService::OnBackendInitialized(); |
- // TODO(akalin): Figure out a better way to do this. |
- if (synchronous_backend_initialization_) { |
- MessageLoop::current()->Quit(); |
- } |
- } |
+ virtual void OnBackendInitialized(); |
virtual void Observe(NotificationType type, |
const NotificationSource& source, |
- const NotificationDetails& details) { |
- ProfileSyncService::Observe(type, source, details); |
- if (type == NotificationType::SYNC_CONFIGURE_DONE && |
- !synchronous_sync_configuration_) { |
- MessageLoop::current()->Quit(); |
- } |
- } |
+ const NotificationDetails& details); |
void set_num_expected_resumes(int times) { |
num_expected_resumes_ = times; |
@@ -243,6 +132,8 @@ class TestProfileSyncService : public ProfileSyncService { |
synchronous_sync_configuration_ = true; |
} |
+ browser_sync::TestIdFactory* id_factory() { return &id_factory_; } |
+ |
private: |
// When testing under ChromiumOS, this method must not return an empty |
// value value in order for the profile sync service to start. |
@@ -261,6 +152,8 @@ class TestProfileSyncService : public ProfileSyncService { |
scoped_ptr<Task> initial_condition_setup_task_; |
bool set_initial_sync_ended_on_init_; |
+ browser_sync::TestIdFactory id_factory_; |
+ |
}; |
#endif // CHROME_BROWSER_SYNC_TEST_PROFILE_SYNC_SERVICE_H_ |