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..926e480fa3123acc733dc52672a5619f7a9abd73 100644 |
--- a/webkit/fileapi/file_system_origin_database_unittest.cc |
+++ b/webkit/fileapi/file_system_origin_database_unittest.cc |
@@ -258,4 +258,39 @@ TEST(FileSystemOriginDatabaseTest, DatabaseRecoveryTest) { |
EXPECT_FALSE(file_util::PathExists(kGarbageDir)); |
} |
+TEST(FileSystemOriginDatabaseTest, DatabaseRecoveryForMissingManifestTest) { |
+ 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, leveldb::kDescriptorFile); |
+ |
+ database.reset(new FileSystemOriginDatabase(kFSDir)); |
+ std::vector<FileSystemOriginDatabase::OriginRecord> origins_in_db; |
+ EXPECT_TRUE(database->ListAllOrigins(&origins_in_db)); |
+ |
+ EXPECT_EQ(1u, origins_in_db.size()); |
+ |
+ 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 |