1 // Copyright 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 #ifndef SYNC_SYNCABLE_IN_MEMORY_DIRECTORY_BACKING_STORE_H_ 6 #define SYNC_SYNCABLE_IN_MEMORY_DIRECTORY_BACKING_STORE_H_ 7 8 #include "sync/syncable/directory_backing_store.h" 9 #include "sync/base/sync_export.h" 10 11 namespace syncer { 12 namespace syncable { 13 14 // This implementation of DirectoryBackingStore is used in tests that do not 15 // require us to write to a file. An in-memory sqlite database is much faster 16 // than an on-disk database, so this can result in significant speedups in our 17 // unit tests. 18 // 19 // An InMemoryDirectoryBackingStore cannot load data from existing databases. 20 // When an InMemoryDirectoryBackingStore is destroyed, all data stored in this 21 // database is lost. If these limitations are a problem for you, consider using 22 // TestDirectoryBackingStore. 23 class SYNC_EXPORT_PRIVATE InMemoryDirectoryBackingStore 24 : public DirectoryBackingStore { 25 public: 26 explicit InMemoryDirectoryBackingStore(const std::string& dir_name); 27 virtual DirOpenResult Load( 28 Directory::MetahandlesMap* handles_map, 29 JournalIndex* delete_journals, 30 Directory::KernelLoadInfo* kernel_load_info) OVERRIDE; 31 request_consistent_cache_guid()32 void request_consistent_cache_guid() { 33 consistent_cache_guid_requested_ = true; 34 } 35 36 private: 37 bool consistent_cache_guid_requested_; 38 39 DISALLOW_COPY_AND_ASSIGN(InMemoryDirectoryBackingStore); 40 }; 41 42 } // namespace syncable 43 } // namespace syncer 44 45 #endif // SYNC_SYNCABLE_IN_MEMORY_DIRECTORY_BACKING_STORE_H_ 46