Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(152)

Unified Diff: webkit/fileapi/file_system_directory_database_unittest.cc

Issue 9663021: Add database recovery for FileSystemOriginDatabase (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: deletion for directory database Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webkit/fileapi/file_system_directory_database_unittest.cc
diff --git a/webkit/fileapi/file_system_directory_database_unittest.cc b/webkit/fileapi/file_system_directory_database_unittest.cc
index 3a47c91c8d0ca286439120e87466bca7cd35964e..5a24871cbf6f22b5e575df5edb2033ad0b69070d 100644
--- a/webkit/fileapi/file_system_directory_database_unittest.cc
+++ b/webkit/fileapi/file_system_directory_database_unittest.cc
@@ -6,6 +6,7 @@
#include <math.h>
+#include "base/platform_file.h"
#include "base/memory/scoped_ptr.h"
#include "base/scoped_temp_dir.h"
#include "base/string_number_conversions.h"
@@ -14,6 +15,10 @@
namespace fileapi {
+namespace {
+const FilePath::CharType kDirectoryDatabaseName[] = FILE_PATH_LITERAL("Paths");
+}
+
class FileSystemDirectoryDatabaseTest : public testing::Test {
public:
typedef FileSystemDirectoryDatabase::FileId FileId;
@@ -29,9 +34,12 @@ class FileSystemDirectoryDatabaseTest : public testing::Test {
}
void InitDatabase() {
+ CloseDatabase();
+ db_.reset(new FileSystemDirectoryDatabase(sandbox_path()));
+ }
+
+ void CloseDatabase() {
db_.reset();
- FilePath path = base_.path().AppendASCII("db");
- db_.reset(new FileSystemDirectoryDatabase(path));
}
bool AddFileInfo(FileId parent_id, const FilePath::StringType& name) {
@@ -42,6 +50,10 @@ class FileSystemDirectoryDatabaseTest : public testing::Test {
return db_->AddFileInfo(info, &file_id);
}
+ FilePath sandbox_path() const {
+ return base_.path();
+ }
+
protected:
// Common temp base for nondestructive uses.
ScopedTempDir base_;
@@ -417,4 +429,28 @@ TEST_F(FileSystemDirectoryDatabaseTest, TestGetNextInteger) {
EXPECT_EQ(4, next);
}
+TEST_F(FileSystemDirectoryDatabaseTest, TestDatabaseRecovery) {
+ int64 next = -1;
+ EXPECT_TRUE(db()->GetNextInteger(&next));
+ EXPECT_EQ(0, next);
+ InitDatabase();
+ EXPECT_TRUE(db()->GetNextInteger(&next));
+ EXPECT_EQ(1, next);
+ CloseDatabase();
+
+ bool created = false;
+ base::PlatformFileError error = base::PLATFORM_FILE_ERROR_FAILED;
+ base::PlatformFile file = base::CreatePlatformFile(
+ sandbox_path().Append(kDirectoryDatabaseName).AppendASCII("CURRENT"),
+ base::PLATFORM_FILE_CREATE_ALWAYS | base::PLATFORM_FILE_WRITE,
+ &created, &error);
+ EXPECT_EQ(base::PLATFORM_FILE_OK, error);
+ EXPECT_TRUE(created);
+ EXPECT_TRUE(base::ClosePlatformFile(file));
+
+ InitDatabase();
+ EXPECT_TRUE(db()->GetNextInteger(&next));
+ EXPECT_EQ(0, next);
+}
+
} // namespace fileapi

Powered by Google App Engine
This is Rietveld 408576698