summaryrefslogtreecommitdiffstats
path: root/webkit/fileapi/file_system_directory_database.h
diff options
context:
space:
mode:
authortzik@chromium.org <tzik@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-16 04:15:20 +0000
committertzik@chromium.org <tzik@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-16 04:15:20 +0000
commitbb2c4daa57d22a4b798282490e0d2a8bcd8674da (patch)
tree80a15e0bab7daa75fb7c2039601ef7318826847f /webkit/fileapi/file_system_directory_database.h
parent740c14554f0242fedf2034ff6a29bda8641f05e1 (diff)
downloadchromium_src-bb2c4daa57d22a4b798282490e0d2a8bcd8674da.zip
chromium_src-bb2c4daa57d22a4b798282490e0d2a8bcd8674da.tar.gz
chromium_src-bb2c4daa57d22a4b798282490e0d2a8bcd8674da.tar.bz2
Add database recovery for FileSystemDirectoryDatabase.
BUG=103018,116615 TEST='FileSystemDirectoryDatabaseTest.*' Review URL: https://chromiumcodereview.appspot.com/9910005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@132369 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/fileapi/file_system_directory_database.h')
-rw-r--r--webkit/fileapi/file_system_directory_database.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/webkit/fileapi/file_system_directory_database.h b/webkit/fileapi/file_system_directory_database.h
index 47ac60a..fb51f0d 100644
--- a/webkit/fileapi/file_system_directory_database.h
+++ b/webkit/fileapi/file_system_directory_database.h
@@ -32,8 +32,6 @@ namespace fileapi {
// TODO(ericu): Safe mode, which does more checks such as the above on debug
// builds.
-// TODO(ericu): FSCK, for a full-database check [data file validation possibly
-// done elsewhere].
// TODO(ericu): Add a method that will give a unique filename for a data file.
class FileSystemDirectoryDatabase {
public:
@@ -86,15 +84,22 @@ class FileSystemDirectoryDatabase {
// creation/destruction of FileSystemDirectoryDatabase objects.
bool GetNextInteger(int64* next);
+ // Returns true if the database looks consistent with local filesystem.
+ bool IsFileSystemConsistent();
+
static bool DestroyDatabase(const FilePath& path);
private:
enum RecoveryOption {
DELETE_ON_CORRUPTION,
+ REPAIR_ON_CORRUPTION,
FAIL_ON_CORRUPTION,
};
+ friend class FileSystemDirectoryDatabaseTest;
+
bool Init(RecoveryOption recovery_option);
+ bool RepairDatabase(const std::string& db_path);
void ReportInitStatus(const leveldb::Status& status);
bool StoreDefaultValues();
bool GetLastFileId(FileId* file_id);