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 3 // found in the LICENSE file. 4 5 #include "sync/internal_api/public/test/test_internal_components_factory.h" 6 7 #include "sync/sessions/sync_session_context.h" 8 #include "sync/syncable/deferred_on_disk_directory_backing_store.h" 9 #include "sync/syncable/in_memory_directory_backing_store.h" 10 #include "sync/syncable/on_disk_directory_backing_store.h" 11 #include "sync/syncable/invalid_directory_backing_store.h" 12 #include "sync/test/engine/fake_sync_scheduler.h" 13 14 namespace syncer { 15 16 TestInternalComponentsFactory::TestInternalComponentsFactory( 17 const Switches& switches, 18 StorageOption option, 19 StorageOption* storage_used) 20 : switches_(switches), 21 storage_override_(option), 22 storage_used_(storage_used) { 23 } 24 25 TestInternalComponentsFactory::~TestInternalComponentsFactory() { } 26 27 scoped_ptr<SyncScheduler> TestInternalComponentsFactory::BuildScheduler( 28 const std::string& name, 29 sessions::SyncSessionContext* context, 30 syncer::CancelationSignal* cancelation_signal) { 31 return scoped_ptr<SyncScheduler>(new FakeSyncScheduler()); 32 } 33 34 scoped_ptr<sessions::SyncSessionContext> 35 TestInternalComponentsFactory::BuildContext( 36 ServerConnectionManager* connection_manager, 37 syncable::Directory* directory, 38 ExtensionsActivity* monitor, 39 const std::vector<SyncEngineEventListener*>& listeners, 40 sessions::DebugInfoGetter* debug_info_getter, 41 ModelTypeRegistry* model_type_registry, 42 const std::string& invalidator_client_id) { 43 44 // Tests don't wire up listeners. 45 std::vector<SyncEngineEventListener*> empty_listeners; 46 return scoped_ptr<sessions::SyncSessionContext>( 47 new sessions::SyncSessionContext( 48 connection_manager, directory, monitor, 49 empty_listeners, debug_info_getter, 50 model_type_registry, 51 switches_.encryption_method == ENCRYPTION_KEYSTORE, 52 switches_.pre_commit_updates_policy == 53 FORCE_ENABLE_PRE_COMMIT_UPDATE_AVOIDANCE, 54 invalidator_client_id)); 55 56 } 57 58 scoped_ptr<syncable::DirectoryBackingStore> 59 TestInternalComponentsFactory::BuildDirectoryBackingStore( 60 StorageOption storage, const std::string& dir_name, 61 const base::FilePath& backing_filepath) { 62 if (storage_used_) 63 *storage_used_ = storage; 64 65 switch (storage_override_) { 66 case STORAGE_IN_MEMORY: 67 return scoped_ptr<syncable::DirectoryBackingStore>( 68 new syncable::InMemoryDirectoryBackingStore(dir_name)); 69 case STORAGE_ON_DISK: 70 return scoped_ptr<syncable::DirectoryBackingStore>( 71 new syncable::OnDiskDirectoryBackingStore(dir_name, 72 backing_filepath)); 73 case STORAGE_ON_DISK_DEFERRED: 74 return scoped_ptr<syncable::DirectoryBackingStore>( 75 new syncable::DeferredOnDiskDirectoryBackingStore(dir_name, 76 backing_filepath)); 77 case STORAGE_INVALID: 78 return scoped_ptr<syncable::DirectoryBackingStore>( 79 new syncable::InvalidDirectoryBackingStore()); 80 } 81 NOTREACHED(); 82 return scoped_ptr<syncable::DirectoryBackingStore>(); 83 } 84 85 InternalComponentsFactory::Switches 86 TestInternalComponentsFactory::GetSwitches() const { 87 return switches_; 88 } 89 90 } // namespace syncer 91