Chromium Code Reviews| Index: chrome/browser/sync/test_profile_sync_service.cc |
| diff --git a/chrome/browser/sync/test_profile_sync_service.cc b/chrome/browser/sync/test_profile_sync_service.cc |
| index a183b7e761eb8b294b89c64379a2177ce4997aaa..6c002e9a09365accaf67055541b68ee42192aadf 100644 |
| --- a/chrome/browser/sync/test_profile_sync_service.cc |
| +++ b/chrome/browser/sync/test_profile_sync_service.cc |
| @@ -33,6 +33,27 @@ using syncer::PRIORITY_PREFERENCES; |
| namespace browser_sync { |
| +MessageLoopRunner::MessageLoopRunner() |
| +: running_(false) { |
| +} |
| + |
| +MessageLoopRunner::~MessageLoopRunner() { |
| + DCHECK(!running_); |
| +} |
| + |
| +void MessageLoopRunner::Run() { |
| + if (running_) |
| + return; |
| + running_ = true; |
| + MessageLoop::current()->Run(); |
| + running_ = false; |
| +} |
| + |
| +void MessageLoopRunner::Quit() { |
| + if (running_) |
| + MessageLoop::current()->Quit(); |
| +} |
| + |
| SyncBackendHostForProfileSyncTest::SyncBackendHostForProfileSyncTest( |
| Profile* profile, |
| const base::WeakPtr<SyncPrefs>& sync_prefs, |
| @@ -42,7 +63,8 @@ SyncBackendHostForProfileSyncTest::SyncBackendHostForProfileSyncTest( |
| bool set_initial_sync_ended_on_init, |
| bool synchronous_init, |
| bool fail_initial_download, |
| - syncer::StorageOption storage_option) |
| + syncer::StorageOption storage_option, |
| + MessageLoopRunner* message_loop_runner) |
| : browser_sync::SyncBackendHost( |
| profile->GetDebugName(), profile, sync_prefs, invalidator_storage), |
| weak_ptr_factory_(this), |
| @@ -51,7 +73,8 @@ SyncBackendHostForProfileSyncTest::SyncBackendHostForProfileSyncTest( |
| fail_initial_download_(fail_initial_download), |
| set_initial_sync_ended_on_init_(set_initial_sync_ended_on_init), |
| synchronous_init_(synchronous_init), |
| - storage_option_(storage_option) {} |
| + storage_option_(storage_option), |
| + message_loop_runner_(message_loop_runner) {} |
| SyncBackendHostForProfileSyncTest::~SyncBackendHostForProfileSyncTest() {} |
| @@ -88,7 +111,7 @@ void SyncBackendHostForProfileSyncTest::InitCore( |
| if (synchronous_init_) { |
| // The SyncBackend posts a task to the current loop when |
| // initialization completes. |
| - MessageLoop::current()->Run(); |
| + message_loop_runner_->Run(); |
| } |
| } |
| @@ -164,9 +187,10 @@ void SyncBackendHostForProfileSyncTest |
| debug_info_listener, |
| restored_types); |
| if (fail_initial_download_) { |
| +// HandleInitializationCompletedOnFrontendLoop(false); |
|
tim (not reviewing)
2013/05/23 19:03:42
Tidy up.
pavely
2013/05/30 07:42:12
Done.
|
| frontend()->OnSyncConfigureRetry(); |
| if (synchronous_init_) |
| - MessageLoop::current()->Quit(); |
| + message_loop_runner_->Quit(); |
| } else { |
| initial_download_closure_.Run(); |
| initial_download_closure_.Reset(); |
| @@ -219,7 +243,8 @@ TestProfileSyncService::TestProfileSyncService( |
| synchronous_sync_configuration_(false), |
| set_initial_sync_ended_on_init_(true), |
| fail_initial_download_(false), |
| - storage_option_(syncer::STORAGE_IN_MEMORY) { |
| + storage_option_(syncer::STORAGE_IN_MEMORY), |
| + message_loop_runner_() { |
|
tim (not reviewing)
2013/05/23 19:03:42
Remove unnecessary initializer.
pavely
2013/05/30 07:42:12
Done.
|
| SetSyncSetupCompleted(); |
| } |
| @@ -244,6 +269,26 @@ TestProfileSyncService::components_factory_mock() { |
| return static_cast<ProfileSyncComponentsFactoryMock*>(factory()); |
| } |
| +void TestProfileSyncService::RequestAccessToken( |
| + bool invalidate_previous_token, |
| + bool invoke_callback) { |
| + ProfileSyncService::RequestAccessToken(invalidate_previous_token, |
| + invoke_callback); |
|
tim (not reviewing)
2013/05/23 19:03:42
nit - indent is off (4 spaces).
pavely
2013/05/30 07:42:12
Done.
|
| + if (synchronous_backend_initialization_ && invoke_callback) { |
| + message_loop_runner_.Run(); |
| + } |
| +} |
| + |
| +void TestProfileSyncService::OnGetTokenFailure( |
| + const OAuth2TokenService::Request* request, |
| + const GoogleServiceAuthError& error) { |
| + ProfileSyncService::OnGetTokenFailure(request, error); |
| + if (synchronous_backend_initialization_) { |
| + message_loop_runner_.Quit(); |
| + } |
| +} |
| + |
| + |
| void TestProfileSyncService::OnBackendInitialized( |
| const syncer::WeakHandle<syncer::JsBackend>& backend, |
| const syncer::WeakHandle<syncer::DataTypeDebugInfoListener>& |
| @@ -255,7 +300,7 @@ void TestProfileSyncService::OnBackendInitialized( |
| // TODO(akalin): Figure out a better way to do this. |
| if (synchronous_backend_initialization_) { |
| - MessageLoop::current()->Quit(); |
| + message_loop_runner_.Quit(); |
|
tim (not reviewing)
2013/05/23 19:03:42
:/ This seems to make it worse than before, it's
|
| } |
| } |
| @@ -294,5 +339,26 @@ void TestProfileSyncService::CreateBackend() { |
| set_initial_sync_ended_on_init_, |
| synchronous_backend_initialization_, |
| fail_initial_download_, |
| - storage_option_)); |
| + storage_option_, |
| + &message_loop_runner_)); |
| +} |
| + |
| +scoped_ptr<OAuth2TokenService::Request> FakeOAuth2TokenService::StartRequest( |
| + const OAuth2TokenService::ScopeSet& scopes, |
| + OAuth2TokenService::Consumer* consumer) { |
| + // Ensure token in question is cached and never expires. Request will succeed |
| + // without network IO. |
| + RegisterCacheEntry(GetRefreshToken(), scopes, "access_token", |
| + base::Time::Max()); |
|
tim (not reviewing)
2013/05/23 19:03:42
indent is off.
pavely
2013/05/30 07:42:12
Done.
|
| + return ProfileOAuth2TokenService::StartRequest(scopes, consumer); |
| +} |
| + |
| +ProfileKeyedService* FakeOAuth2TokenService::BuildTokenService( |
| + content::BrowserContext* context) { |
| + Profile* profile = static_cast<Profile*>(context); |
| + |
| + FakeOAuth2TokenService* service = |
| + new FakeOAuth2TokenService(profile->GetRequestContext()); |
| + service->Initialize(profile); |
| + return service; |
| } |