Chromium Code Reviews| 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 "chrome/browser/sync/test_profile_sync_service.h" | 5 #include "chrome/browser/sync/test_profile_sync_service.h" |
| 6 | 6 |
| 7 #include "chrome/browser/signin/signin_manager.h" | 7 #include "chrome/browser/signin/signin_manager.h" |
| 8 #include "chrome/browser/signin/signin_manager_factory.h" | 8 #include "chrome/browser/signin/signin_manager_factory.h" |
| 9 #include "chrome/browser/sync/glue/data_type_controller.h" | 9 #include "chrome/browser/sync/glue/data_type_controller.h" |
| 10 #include "chrome/browser/sync/glue/sync_backend_host.h" | 10 #include "chrome/browser/sync/glue/sync_backend_host.h" |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 26 using syncer::sessions::SyncSourceInfo; | 26 using syncer::sessions::SyncSourceInfo; |
| 27 using syncer::UserShare; | 27 using syncer::UserShare; |
| 28 using syncer::syncable::Directory; | 28 using syncer::syncable::Directory; |
| 29 using syncer::DEVICE_INFO; | 29 using syncer::DEVICE_INFO; |
| 30 using syncer::EXPERIMENTS; | 30 using syncer::EXPERIMENTS; |
| 31 using syncer::NIGORI; | 31 using syncer::NIGORI; |
| 32 using syncer::PRIORITY_PREFERENCES; | 32 using syncer::PRIORITY_PREFERENCES; |
| 33 | 33 |
| 34 namespace browser_sync { | 34 namespace browser_sync { |
| 35 | 35 |
| 36 MessageLoopRunner::MessageLoopRunner() | |
| 37 : running_(false) { | |
| 38 } | |
| 39 | |
|
Andrew T Wilson (Slow)
2013/05/31 12:57:28
Doesn't MessageLoop already expose is_running()? C
pavely
2013/06/04 00:49:59
Thank you. I was reading through RunLoop trying to
| |
| 40 MessageLoopRunner::~MessageLoopRunner() { | |
| 41 DCHECK(!running_); | |
| 42 } | |
| 43 | |
| 44 void MessageLoopRunner::Run() { | |
| 45 if (running_) | |
| 46 return; | |
| 47 running_ = true; | |
| 48 MessageLoop::current()->Run(); | |
| 49 running_ = false; | |
| 50 } | |
| 51 | |
| 52 void MessageLoopRunner::Quit() { | |
| 53 if (running_) | |
| 54 MessageLoop::current()->Quit(); | |
| 55 } | |
| 56 | |
| 36 SyncBackendHostForProfileSyncTest::SyncBackendHostForProfileSyncTest( | 57 SyncBackendHostForProfileSyncTest::SyncBackendHostForProfileSyncTest( |
| 37 Profile* profile, | 58 Profile* profile, |
| 38 const base::WeakPtr<SyncPrefs>& sync_prefs, | 59 const base::WeakPtr<SyncPrefs>& sync_prefs, |
| 39 const base::WeakPtr<invalidation::InvalidatorStorage>& invalidator_storage, | 60 const base::WeakPtr<invalidation::InvalidatorStorage>& invalidator_storage, |
| 40 syncer::TestIdFactory& id_factory, | 61 syncer::TestIdFactory& id_factory, |
| 41 base::Closure& callback, | 62 base::Closure& callback, |
| 42 bool set_initial_sync_ended_on_init, | 63 bool set_initial_sync_ended_on_init, |
| 43 bool synchronous_init, | 64 bool synchronous_init, |
| 44 bool fail_initial_download, | 65 bool fail_initial_download, |
| 45 syncer::StorageOption storage_option) | 66 syncer::StorageOption storage_option, |
| 67 MessageLoopRunner* message_loop_runner) | |
| 46 : browser_sync::SyncBackendHost( | 68 : browser_sync::SyncBackendHost( |
| 47 profile->GetDebugName(), profile, sync_prefs, invalidator_storage), | 69 profile->GetDebugName(), profile, sync_prefs, invalidator_storage), |
| 48 weak_ptr_factory_(this), | 70 weak_ptr_factory_(this), |
| 49 id_factory_(id_factory), | 71 id_factory_(id_factory), |
| 50 callback_(callback), | 72 callback_(callback), |
| 51 fail_initial_download_(fail_initial_download), | 73 fail_initial_download_(fail_initial_download), |
| 52 set_initial_sync_ended_on_init_(set_initial_sync_ended_on_init), | 74 set_initial_sync_ended_on_init_(set_initial_sync_ended_on_init), |
| 53 synchronous_init_(synchronous_init), | 75 synchronous_init_(synchronous_init), |
| 54 storage_option_(storage_option) {} | 76 storage_option_(storage_option), |
| 77 message_loop_runner_(message_loop_runner) {} | |
| 55 | 78 |
| 56 SyncBackendHostForProfileSyncTest::~SyncBackendHostForProfileSyncTest() {} | 79 SyncBackendHostForProfileSyncTest::~SyncBackendHostForProfileSyncTest() {} |
| 57 | 80 |
| 58 namespace { | 81 namespace { |
| 59 | 82 |
| 60 scoped_ptr<syncer::HttpPostProviderFactory> MakeTestHttpBridgeFactory() { | 83 scoped_ptr<syncer::HttpPostProviderFactory> MakeTestHttpBridgeFactory() { |
| 61 return scoped_ptr<syncer::HttpPostProviderFactory>( | 84 return scoped_ptr<syncer::HttpPostProviderFactory>( |
| 62 new browser_sync::TestHttpBridgeFactory()); | 85 new browser_sync::TestHttpBridgeFactory()); |
| 63 } | 86 } |
| 64 | 87 |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 81 test_options.internal_components_factory->GetSwitches(); | 104 test_options.internal_components_factory->GetSwitches(); |
| 82 delete test_options.internal_components_factory; | 105 delete test_options.internal_components_factory; |
| 83 | 106 |
| 84 test_options.internal_components_factory = | 107 test_options.internal_components_factory = |
| 85 new TestInternalComponentsFactory(factory_switches, storage); | 108 new TestInternalComponentsFactory(factory_switches, storage); |
| 86 | 109 |
| 87 SyncBackendHost::InitCore(test_options); | 110 SyncBackendHost::InitCore(test_options); |
| 88 if (synchronous_init_) { | 111 if (synchronous_init_) { |
| 89 // The SyncBackend posts a task to the current loop when | 112 // The SyncBackend posts a task to the current loop when |
| 90 // initialization completes. | 113 // initialization completes. |
| 91 base::MessageLoop::current()->Run(); | 114 message_loop_runner_->Run(); |
| 92 } | 115 } |
| 93 } | 116 } |
| 94 | 117 |
| 95 void SyncBackendHostForProfileSyncTest::UpdateCredentials( | 118 void SyncBackendHostForProfileSyncTest::UpdateCredentials( |
| 96 const syncer::SyncCredentials& credentials) { | 119 const syncer::SyncCredentials& credentials) { |
| 97 // If we had failed the initial download, complete initialization now. | 120 // If we had failed the initial download, complete initialization now. |
| 98 if (!initial_download_closure_.is_null()) { | 121 if (!initial_download_closure_.is_null()) { |
| 99 initial_download_closure_.Run(); | 122 initial_download_closure_.Run(); |
| 100 initial_download_closure_.Reset(); | 123 initial_download_closure_.Reset(); |
| 101 } | 124 } |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 162 | 185 |
| 163 initial_download_closure_ = base::Bind( | 186 initial_download_closure_ = base::Bind( |
| 164 &SyncBackendHostForProfileSyncTest::ContinueInitialization, | 187 &SyncBackendHostForProfileSyncTest::ContinueInitialization, |
| 165 weak_ptr_factory_.GetWeakPtr(), | 188 weak_ptr_factory_.GetWeakPtr(), |
| 166 js_backend, | 189 js_backend, |
| 167 debug_info_listener, | 190 debug_info_listener, |
| 168 restored_types); | 191 restored_types); |
| 169 if (fail_initial_download_) { | 192 if (fail_initial_download_) { |
| 170 frontend()->OnSyncConfigureRetry(); | 193 frontend()->OnSyncConfigureRetry(); |
| 171 if (synchronous_init_) | 194 if (synchronous_init_) |
| 172 base::MessageLoop::current()->Quit(); | 195 message_loop_runner_->Quit(); |
| 173 } else { | 196 } else { |
| 174 initial_download_closure_.Run(); | 197 initial_download_closure_.Run(); |
| 175 initial_download_closure_.Reset(); | 198 initial_download_closure_.Reset(); |
| 176 } | 199 } |
| 177 } | 200 } |
| 178 | 201 |
| 179 void SyncBackendHostForProfileSyncTest::EmitOnInvalidatorStateChange( | 202 void SyncBackendHostForProfileSyncTest::EmitOnInvalidatorStateChange( |
| 180 syncer::InvalidatorState state) { | 203 syncer::InvalidatorState state) { |
| 181 frontend()->OnInvalidatorStateChange(state); | 204 frontend()->OnInvalidatorStateChange(state); |
| 182 } | 205 } |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 240 return new TestProfileSyncService( | 263 return new TestProfileSyncService( |
| 241 factory, profile, signin, ProfileSyncService::AUTO_START, false); | 264 factory, profile, signin, ProfileSyncService::AUTO_START, false); |
| 242 } | 265 } |
| 243 | 266 |
| 244 ProfileSyncComponentsFactoryMock* | 267 ProfileSyncComponentsFactoryMock* |
| 245 TestProfileSyncService::components_factory_mock() { | 268 TestProfileSyncService::components_factory_mock() { |
| 246 // We always create a mock factory, see Build* routines. | 269 // We always create a mock factory, see Build* routines. |
| 247 return static_cast<ProfileSyncComponentsFactoryMock*>(factory()); | 270 return static_cast<ProfileSyncComponentsFactoryMock*>(factory()); |
| 248 } | 271 } |
| 249 | 272 |
| 273 void TestProfileSyncService::RequestAccessToken( | |
| 274 bool invalidate_previous_token, | |
| 275 bool invoke_callback) { | |
| 276 ProfileSyncService::RequestAccessToken(invalidate_previous_token, | |
| 277 invoke_callback); | |
| 278 if (synchronous_backend_initialization_ && invoke_callback) { | |
| 279 message_loop_runner_.Run(); | |
| 280 } | |
| 281 } | |
| 282 | |
| 283 void TestProfileSyncService::OnGetTokenFailure( | |
| 284 const OAuth2TokenService::Request* request, | |
| 285 const GoogleServiceAuthError& error) { | |
| 286 ProfileSyncService::OnGetTokenFailure(request, error); | |
| 287 if (synchronous_backend_initialization_) { | |
| 288 message_loop_runner_.Quit(); | |
| 289 } | |
| 290 } | |
| 291 | |
| 292 | |
| 250 void TestProfileSyncService::OnBackendInitialized( | 293 void TestProfileSyncService::OnBackendInitialized( |
| 251 const syncer::WeakHandle<syncer::JsBackend>& backend, | 294 const syncer::WeakHandle<syncer::JsBackend>& backend, |
| 252 const syncer::WeakHandle<syncer::DataTypeDebugInfoListener>& | 295 const syncer::WeakHandle<syncer::DataTypeDebugInfoListener>& |
| 253 debug_info_listener, | 296 debug_info_listener, |
| 254 bool success) { | 297 bool success) { |
| 255 ProfileSyncService::OnBackendInitialized(backend, | 298 ProfileSyncService::OnBackendInitialized(backend, |
| 256 debug_info_listener, | 299 debug_info_listener, |
| 257 success); | 300 success); |
| 258 | 301 |
| 259 // TODO(akalin): Figure out a better way to do this. | 302 // TODO(akalin): Figure out a better way to do this. |
| 260 if (synchronous_backend_initialization_) { | 303 if (synchronous_backend_initialization_) { |
| 261 base::MessageLoop::current()->Quit(); | 304 message_loop_runner_.Quit(); |
| 262 } | 305 } |
| 263 } | 306 } |
| 264 | 307 |
| 265 void TestProfileSyncService::OnConfigureDone( | 308 void TestProfileSyncService::OnConfigureDone( |
| 266 const browser_sync::DataTypeManager::ConfigureResult& result) { | 309 const browser_sync::DataTypeManager::ConfigureResult& result) { |
| 267 ProfileSyncService::OnConfigureDone(result); | 310 ProfileSyncService::OnConfigureDone(result); |
| 268 if (!synchronous_sync_configuration_) | 311 if (!synchronous_sync_configuration_) |
| 269 base::MessageLoop::current()->Quit(); | 312 base::MessageLoop::current()->Quit(); |
| 270 } | 313 } |
| 271 | 314 |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 290 void TestProfileSyncService::CreateBackend() { | 333 void TestProfileSyncService::CreateBackend() { |
| 291 backend_.reset(new browser_sync::SyncBackendHostForProfileSyncTest( | 334 backend_.reset(new browser_sync::SyncBackendHostForProfileSyncTest( |
| 292 profile(), | 335 profile(), |
| 293 sync_prefs_.AsWeakPtr(), | 336 sync_prefs_.AsWeakPtr(), |
| 294 invalidator_storage_.AsWeakPtr(), | 337 invalidator_storage_.AsWeakPtr(), |
| 295 id_factory_, | 338 id_factory_, |
| 296 callback_, | 339 callback_, |
| 297 set_initial_sync_ended_on_init_, | 340 set_initial_sync_ended_on_init_, |
| 298 synchronous_backend_initialization_, | 341 synchronous_backend_initialization_, |
| 299 fail_initial_download_, | 342 fail_initial_download_, |
| 300 storage_option_)); | 343 storage_option_, |
| 344 &message_loop_runner_)); | |
| 301 } | 345 } |
| 346 | |
| 347 scoped_ptr<OAuth2TokenService::Request> FakeOAuth2TokenService::StartRequest( | |
| 348 const OAuth2TokenService::ScopeSet& scopes, | |
| 349 OAuth2TokenService::Consumer* consumer) { | |
| 350 // Ensure token in question is cached and never expires. Request will succeed | |
| 351 // without network IO. | |
| 352 RegisterCacheEntry(GetRefreshToken(), scopes, "access_token", | |
| 353 base::Time::Max()); | |
| 354 return ProfileOAuth2TokenService::StartRequest(scopes, consumer); | |
| 355 } | |
| 356 | |
| 357 BrowserContextKeyedService* FakeOAuth2TokenService::BuildTokenService( | |
| 358 content::BrowserContext* context) { | |
| 359 Profile* profile = static_cast<Profile*>(context); | |
| 360 | |
| 361 FakeOAuth2TokenService* service = | |
| 362 new FakeOAuth2TokenService(context->GetRequestContext()); | |
| 363 service->Initialize(profile); | |
| 364 return service; | |
| 365 } | |
| OLD | NEW |