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.
5 #ifndef SYNC_SYNCABLE_ON_DISK_DIRECTORY_BACKING_STORE_H_
6 #define SYNC_SYNCABLE_ON_DISK_DIRECTORY_BACKING_STORE_H_
8 #include "base/files/file_path.h"
9 #include "sync/base/sync_export.h"
10 #include "sync/syncable/directory_backing_store.h"
15 // This is the concrete class that provides a useful implementation of
16 // DirectoryBackingStore.
17 class SYNC_EXPORT_PRIVATE OnDiskDirectoryBackingStore
18 : public DirectoryBackingStore
{
20 OnDiskDirectoryBackingStore(const std::string
& dir_name
,
21 const base::FilePath
& backing_filepath
);
22 ~OnDiskDirectoryBackingStore() override
;
23 DirOpenResult
Load(Directory::MetahandlesMap
* handles_map
,
24 JournalIndex
* delete_journals
,
25 MetahandleSet
* metahandles_to_purge
,
26 Directory::KernelLoadInfo
* kernel_load_info
) override
;
28 // A helper function that will make one attempt to load the directory.
29 // Unlike Load(), it does not attempt to recover from failure.
30 DirOpenResult
TryLoad(Directory::MetahandlesMap
* handles_map
,
31 JournalIndex
* delete_journals
,
32 MetahandleSet
* metahandles_to_purge
,
33 Directory::KernelLoadInfo
* kernel_load_info
);
36 // Subclasses may override this to avoid a possible DCHECK.
37 virtual void ReportFirstTryOpenFailure();
40 FRIEND_TEST_ALL_PREFIXES(DirectoryBackingStoreTest
, MinorCorruption
);
42 bool allow_failure_for_test_
;
43 base::FilePath backing_filepath_
;
45 DISALLOW_COPY_AND_ASSIGN(OnDiskDirectoryBackingStore
);
48 } // namespace syncable
51 #endif // SYNC_SYNCABLE_ON_DISK_DIRECTORY_BACKING_STORE_H_