summaryrefslogtreecommitdiffstats
path: root/sync/syncable/deferred_on_disk_directory_backing_store.h
diff options
context:
space:
mode:
Diffstat (limited to 'sync/syncable/deferred_on_disk_directory_backing_store.h')
-rw-r--r--sync/syncable/deferred_on_disk_directory_backing_store.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/sync/syncable/deferred_on_disk_directory_backing_store.h b/sync/syncable/deferred_on_disk_directory_backing_store.h
new file mode 100644
index 0000000..9e6429a
--- /dev/null
+++ b/sync/syncable/deferred_on_disk_directory_backing_store.h
@@ -0,0 +1,45 @@
+// Copyright 2014 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.
+
+#ifndef SYNC_SYNCABLE_DEFERRED_ON_DISK_DIRECTORY_BACKING_STORE_H_
+#define SYNC_SYNCABLE_DEFERRED_ON_DISK_DIRECTORY_BACKING_STORE_H_
+
+#include "base/files/file_path.h"
+#include "sync/base/sync_export.h"
+#include "sync/syncable/directory_backing_store.h"
+
+namespace syncer {
+namespace syncable {
+
+// Store used for backing up user's data before first sync. It creates an
+// in-memory store first and switch to on-disk store if SaveChanges() is
+// called, which only happens when SyncBackupManager is shut down and a
+// syncing backend is to be created. Thus we guarantee that user data is not
+// persisted until user is actually going to sync.
+class SYNC_EXPORT_PRIVATE DeferredOnDiskDirectoryBackingStore
+ : public DirectoryBackingStore {
+ public:
+ DeferredOnDiskDirectoryBackingStore(const std::string& dir_name,
+ const base::FilePath& backing_filepath);
+ virtual ~DeferredOnDiskDirectoryBackingStore();
+ virtual DirOpenResult Load(
+ Directory::MetahandlesMap* handles_map,
+ JournalIndex* delete_journals,
+ Directory::KernelLoadInfo* kernel_load_info) OVERRIDE;
+ virtual bool SaveChanges(const Directory::SaveChangesSnapshot& snapshot)
+ OVERRIDE;
+
+ private:
+ base::FilePath backing_filepath_;
+
+ // Whether current DB is on disk.
+ bool db_is_on_disk_;
+
+ DISALLOW_COPY_AND_ASSIGN(DeferredOnDiskDirectoryBackingStore);
+};
+
+} // namespace syncable
+} // namespace syncer
+
+#endif // SYNC_SYNCABLE_DEFERRED_ON_DISK_DIRECTORY_BACKING_STORE_H_