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

Unified Diff: webkit/fileapi/file_system_origin_database_unittest.cc

Issue 13946004: FileAPI: Run database recovery on IOError. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: +comment, +test for other db files Created 7 years, 8 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
« no previous file with comments | « webkit/fileapi/file_system_origin_database.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/fileapi/file_system_origin_database_unittest.cc
diff --git a/webkit/fileapi/file_system_origin_database_unittest.cc b/webkit/fileapi/file_system_origin_database_unittest.cc
index 294560d8430775fee3c8e9ddcf6887782137f5ee..a943863c62e8d8455c4173b3393d9adcc0e5cc20 100644
--- a/webkit/fileapi/file_system_origin_database_unittest.cc
+++ b/webkit/fileapi/file_system_origin_database_unittest.cc
@@ -258,4 +258,49 @@ TEST(FileSystemOriginDatabaseTest, DatabaseRecoveryTest) {
EXPECT_FALSE(file_util::PathExists(kGarbageDir));
}
+TEST(FileSystemOriginDatabaseTest, DatabaseRecoveryForMissingDBFileTest) {
+ const leveldb::FileType kLevelDBFileTypes[] = {
+ leveldb::kLogFile,
+ leveldb::kDBLockFile,
+ leveldb::kTableFile,
+ leveldb::kDescriptorFile,
+ leveldb::kCurrentFile,
+ leveldb::kTempFile,
+ leveldb::kInfoLogFile,
+ };
+
+ for (size_t i = 0; i < arraysize(kLevelDBFileTypes); ++i) {
+ base::ScopedTempDir dir;
+ ASSERT_TRUE(dir.CreateUniqueTempDir());
+ const base::FilePath kFSDir = dir.path().Append(kFileSystemDirName);
+ const base::FilePath kDBDir = kFSDir.Append(kOriginDatabaseName);
+ EXPECT_FALSE(file_util::PathExists(kFSDir));
+ EXPECT_TRUE(file_util::CreateDirectory(kFSDir));
+
+ const std::string kOrigin = "foo.example.com";
+ base::FilePath path;
+
+ scoped_ptr<FileSystemOriginDatabase> database(
+ new FileSystemOriginDatabase(kFSDir));
+ EXPECT_FALSE(database->HasOriginPath(kOrigin));
+ EXPECT_TRUE(database->GetPathForOrigin(kOrigin, &path));
+ EXPECT_FALSE(path.empty());
+ EXPECT_TRUE(database->GetPathForOrigin(kOrigin, &path));
+ EXPECT_TRUE(file_util::CreateDirectory(kFSDir.Append(path)));
+ database.reset();
+
+ DeleteDatabaseFile(kDBDir, kLevelDBFileTypes[i]);
+
+ database.reset(new FileSystemOriginDatabase(kFSDir));
+ std::vector<FileSystemOriginDatabase::OriginRecord> origins_in_db;
+ EXPECT_TRUE(database->ListAllOrigins(&origins_in_db));
+
+ const std::string kOrigin2("piyo.example.org");
+ EXPECT_FALSE(database->HasOriginPath(kOrigin2));
+ EXPECT_TRUE(database->GetPathForOrigin(kOrigin2, &path));
+ EXPECT_FALSE(path.empty());
+ EXPECT_TRUE(database->HasOriginPath(kOrigin2));
+ }
+}
+
} // namespace fileapi
« no previous file with comments | « webkit/fileapi/file_system_origin_database.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698