Chromium Code Reviews| Index: chrome/browser/sync/glue/sync_backend_host.cc |
| diff --git a/chrome/browser/sync/glue/sync_backend_host.cc b/chrome/browser/sync/glue/sync_backend_host.cc |
| index 907b176b7e468225d964532ff43993b96f4abe66..85ac63ca6e7cf39779bb24f2012096475ddd9708 100644 |
| --- a/chrome/browser/sync/glue/sync_backend_host.cc |
| +++ b/chrome/browser/sync/glue/sync_backend_host.cc |
| @@ -31,6 +31,7 @@ |
| #include "chrome/browser/sync/glue/change_processor.h" |
| #include "chrome/browser/sync/glue/chrome_encryptor.h" |
| #include "chrome/browser/sync/glue/device_info.h" |
| +#include "chrome/browser/sync/glue/dummy_invalidator.h" |
| #include "chrome/browser/sync/glue/sync_backend_registrar.h" |
| #include "chrome/browser/sync/glue/synced_device_tracker.h" |
| #include "chrome/browser/sync/sync_prefs.h" |
| @@ -61,6 +62,10 @@ |
| #include "sync/protocol/sync.pb.h" |
| #include "sync/util/nigori.h" |
| +#if defined(ENABLE_MANAGED_USERS) |
| +#include "chrome/browser/managed_mode/managed_user_service.h" |
| +#endif |
| + |
| static const int kSaveChangesIntervalSeconds = 10; |
| static const base::FilePath::CharType kSyncDataFolderName[] = |
| FILE_PATH_LITERAL("Sync Data"); |
| @@ -461,6 +466,12 @@ void SyncBackendHost::Initialize( |
| InternalComponentsFactoryImpl::BACKOFF_SHORT_INITIAL_RETRY_OVERRIDE; |
| } |
| + bool create_invalidator = true; |
| +#if defined(ENABLE_MANAGED_USERS) |
| + if (ManagedUserService::ProfileIsManaged(profile_)) |
| + create_invalidator = false; |
| +#endif |
| + |
| initialization_state_ = CREATING_SYNC_MANAGER; |
| InitCore(DoInitializeOptions( |
| sync_thread_.message_loop(), |
| @@ -483,7 +494,8 @@ void SyncBackendHost::Initialize( |
| new InternalComponentsFactoryImpl(factory_switches), |
| unrecoverable_error_handler, |
| report_unrecoverable_error_function, |
| - !cl->HasSwitch(switches::kSyncDisableOAuth2Token))); |
| + !cl->HasSwitch(switches::kSyncDisableOAuth2Token), |
| + create_invalidator)); |
| } |
| void SyncBackendHost::UpdateCredentials(const SyncCredentials& credentials) { |
| @@ -968,7 +980,8 @@ SyncBackendHost::DoInitializeOptions::DoInitializeOptions( |
| syncer::UnrecoverableErrorHandler* unrecoverable_error_handler, |
| syncer::ReportUnrecoverableErrorFunction |
| report_unrecoverable_error_function, |
| - bool use_oauth2_token) |
| + bool use_oauth2_token, |
| + bool create_invalidator) |
| : sync_loop(sync_loop), |
| registrar(registrar), |
| routing_info(routing_info), |
| @@ -989,7 +1002,8 @@ SyncBackendHost::DoInitializeOptions::DoInitializeOptions( |
| unrecoverable_error_handler(unrecoverable_error_handler), |
| report_unrecoverable_error_function( |
| report_unrecoverable_error_function), |
| - use_oauth2_token(use_oauth2_token) { |
| + use_oauth2_token(use_oauth2_token), |
| + create_invalidator(create_invalidator) { |
| } |
| SyncBackendHost::DoInitializeOptions::~DoInitializeOptions() {} |
| @@ -1240,34 +1254,37 @@ void SyncBackendHost::Core::DoInitialize(const DoInitializeOptions& options) { |
| sync_manager_ = options.sync_manager_factory->CreateSyncManager(name_); |
| sync_manager_->AddObserver(this); |
| - sync_manager_->Init( |
| - sync_data_folder_path_, |
| - options.event_handler, |
| - options.service_url.host() + options.service_url.path(), |
| - options.service_url.EffectiveIntPort(), |
| - options.service_url.SchemeIsSecure(), |
| - options.make_http_bridge_factory_fn.Run().Pass(), |
| - options.workers, |
| - options.extensions_activity_monitor, |
| - options.registrar /* as SyncManager::ChangeDelegate */, |
| - options.credentials, |
| + scoped_ptr<syncer::Invalidator> invalidator; |
| + if (options.create_invalidator) { |
| #if defined(OS_ANDROID) |
| - scoped_ptr<syncer::Invalidator>( |
| - new AndroidInvalidatorBridgeProxy( |
| - options.android_invalidator_bridge)), |
| + invalidator.reset( |
| + new AndroidInvalidatorBridgeProxy(options.android_invalidator_bridge)); |
| #else |
| - scoped_ptr<syncer::Invalidator>( |
| - options.invalidator_factory->CreateInvalidator()), |
| + invalidator.reset(options.invalidator_factory->CreateInvalidator()); |
| #endif |
| - options.invalidator_factory->GetInvalidatorClientId(), |
| - options.restored_key_for_bootstrapping, |
| - options.restored_keystore_key_for_bootstrapping, |
| - scoped_ptr<InternalComponentsFactory>( |
| - options.internal_components_factory), |
| - &encryptor_, |
| - options.unrecoverable_error_handler, |
| - options.report_unrecoverable_error_function, |
| - options.use_oauth2_token); |
| + } else { |
| + invalidator.reset(new DummyInvalidator()); |
|
tim (not reviewing)
2013/06/18 21:10:04
Can't this conditional construction type be comput
Bernhard Bauer
2013/06/18 21:21:29
No, the #define is true when the feature itself is
|
| + } |
| + sync_manager_->Init(sync_data_folder_path_, |
| + options.event_handler, |
| + options.service_url.host() + options.service_url.path(), |
| + options.service_url.EffectiveIntPort(), |
| + options.service_url.SchemeIsSecure(), |
| + options.make_http_bridge_factory_fn.Run().Pass(), |
| + options.workers, |
| + options.extensions_activity_monitor, |
| + options.registrar /* as SyncManager::ChangeDelegate */, |
| + options.credentials, |
| + invalidator.Pass(), |
| + options.invalidator_factory->GetInvalidatorClientId(), |
| + options.restored_key_for_bootstrapping, |
| + options.restored_keystore_key_for_bootstrapping, |
| + scoped_ptr<InternalComponentsFactory>( |
| + options.internal_components_factory), |
| + &encryptor_, |
| + options.unrecoverable_error_handler, |
| + options.report_unrecoverable_error_function, |
| + options.use_oauth2_token); |
| // |sync_manager_| may end up being NULL here in tests (in |
| // synchronous initialization mode). |