// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "sync/internal_api/public/internal_components_factory_impl.h" #include #include #include "sync/engine/backoff_delay_provider.h" #include "sync/engine/syncer.h" #include "sync/engine/sync_scheduler_impl.h" #include "sync/sessions/sync_session_context.h" #include "sync/syncable/on_disk_directory_backing_store.h" using base::TimeDelta; namespace syncer { InternalComponentsFactoryImpl::InternalComponentsFactoryImpl( const Switches& switches) : switches_(switches) { } InternalComponentsFactoryImpl::~InternalComponentsFactoryImpl() { } scoped_ptr InternalComponentsFactoryImpl::BuildScheduler( const std::string& name, sessions::SyncSessionContext* context, CancelationSignal* cancelation_signal) { scoped_ptr delay(BackoffDelayProvider::FromDefaults()); if (switches_.backoff_override == BACKOFF_SHORT_INITIAL_RETRY_OVERRIDE) delay.reset(BackoffDelayProvider::WithShortInitialRetryOverride()); return scoped_ptr(new SyncSchedulerImpl( name, delay.release(), context, new Syncer(cancelation_signal))); } scoped_ptr InternalComponentsFactoryImpl::BuildContext( ServerConnectionManager* connection_manager, syncable::Directory* directory, ExtensionsActivity* extensions_activity, const std::vector& listeners, sessions::DebugInfoGetter* debug_info_getter, ModelTypeRegistry* model_type_registry, const std::string& invalidation_client_id) { return scoped_ptr( new sessions::SyncSessionContext( connection_manager, directory, extensions_activity, listeners, debug_info_getter, model_type_registry, switches_.encryption_method == ENCRYPTION_KEYSTORE, switches_.pre_commit_updates_policy == FORCE_ENABLE_PRE_COMMIT_UPDATE_AVOIDANCE, invalidation_client_id)); } scoped_ptr InternalComponentsFactoryImpl::BuildDirectoryBackingStore( StorageOption storage, const std::string& dir_name, const base::FilePath& backing_filepath) { if (storage == STORAGE_ON_DISK) { return scoped_ptr( new syncable::OnDiskDirectoryBackingStore(dir_name, backing_filepath)); } else { NOTREACHED(); return scoped_ptr(); } } InternalComponentsFactory::Switches InternalComponentsFactoryImpl::GetSwitches() const { return switches_; } } // namespace syncer