diff options
Diffstat (limited to 'chromium/webkit/browser/fileapi/sandbox_directory_database.cc')
-rw-r--r-- | chromium/webkit/browser/fileapi/sandbox_directory_database.cc | 38 |
1 files changed, 24 insertions, 14 deletions
diff --git a/chromium/webkit/browser/fileapi/sandbox_directory_database.cc b/chromium/webkit/browser/fileapi/sandbox_directory_database.cc index dd376116eef..75aa691d523 100644 --- a/chromium/webkit/browser/fileapi/sandbox_directory_database.cc +++ b/chromium/webkit/browser/fileapi/sandbox_directory_database.cc @@ -243,7 +243,7 @@ bool DatabaseCheckHelper::ScanDatabase() { return false; // Ensure the backing file exists as a normal file. - base::PlatformFileInfo platform_file_info; + base::File::Info platform_file_info; if (!base::GetFileInfo( path_.Append(file_info.data_path), &platform_file_info) || platform_file_info.is_directory || @@ -410,8 +410,10 @@ SandboxDirectoryDatabase::FileInfo::~FileInfo() { } SandboxDirectoryDatabase::SandboxDirectoryDatabase( - const base::FilePath& filesystem_data_directory) - : filesystem_data_directory_(filesystem_data_directory) { + const base::FilePath& filesystem_data_directory, + leveldb::Env* env_override) + : filesystem_data_directory_(filesystem_data_directory), + env_override_(env_override) { } SandboxDirectoryDatabase::~SandboxDirectoryDatabase() { @@ -518,10 +520,10 @@ bool SandboxDirectoryDatabase::GetFileInfo(FileId file_id, FileInfo* info) { return false; } -base::PlatformFileError SandboxDirectoryDatabase::AddFileInfo( +base::File::Error SandboxDirectoryDatabase::AddFileInfo( const FileInfo& info, FileId* file_id) { if (!Init(REPAIR_ON_CORRUPTION)) - return base::PLATFORM_FILE_ERROR_FAILED; + return base::File::FILE_ERROR_FAILED; DCHECK(file_id); std::string child_key = GetChildLookupKey(info.parent_id, info.name); std::string child_id_string; @@ -529,16 +531,16 @@ base::PlatformFileError SandboxDirectoryDatabase::AddFileInfo( db_->Get(leveldb::ReadOptions(), child_key, &child_id_string); if (status.ok()) { LOG(ERROR) << "File exists already!"; - return base::PLATFORM_FILE_ERROR_EXISTS; + return base::File::FILE_ERROR_EXISTS; } if (!status.IsNotFound()) { HandleError(FROM_HERE, status); - return base::PLATFORM_FILE_ERROR_NOT_FOUND; + return base::File::FILE_ERROR_NOT_FOUND; } if (!IsDirectory(info.parent_id)) { LOG(ERROR) << "New parent directory is a file!"; - return base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY; + return base::File::FILE_ERROR_NOT_A_DIRECTORY; } // This would be a fine place to limit the number of files in a directory, if @@ -546,21 +548,21 @@ base::PlatformFileError SandboxDirectoryDatabase::AddFileInfo( FileId temp_id; if (!GetLastFileId(&temp_id)) - return base::PLATFORM_FILE_ERROR_FAILED; + return base::File::FILE_ERROR_FAILED; ++temp_id; leveldb::WriteBatch batch; if (!AddFileInfoHelper(info, temp_id, &batch)) - return base::PLATFORM_FILE_ERROR_FAILED; + return base::File::FILE_ERROR_FAILED; batch.Put(LastFileIdKey(), base::Int64ToString(temp_id)); status = db_->Write(leveldb::WriteOptions(), &batch); if (!status.ok()) { HandleError(FROM_HERE, status); - return base::PLATFORM_FILE_ERROR_FAILED; + return base::File::FILE_ERROR_FAILED; } *file_id = temp_id; - return base::PLATFORM_FILE_OK; + return base::File::FILE_OK; } bool SandboxDirectoryDatabase::RemoveFileInfo(FileId file_id) { @@ -699,9 +701,13 @@ bool SandboxDirectoryDatabase::GetNextInteger(int64* next) { } // static -bool SandboxDirectoryDatabase::DestroyDatabase(const base::FilePath& path) { +bool SandboxDirectoryDatabase::DestroyDatabase(const base::FilePath& path, + leveldb::Env* env_override) { std::string name = FilePathToString(path.Append(kDirectoryDatabaseName)); - leveldb::Status status = leveldb::DestroyDB(name, leveldb::Options()); + leveldb::Options options; + if (env_override) + options.env = env_override; + leveldb::Status status = leveldb::DestroyDB(name, options); if (status.ok()) return true; LOG(WARNING) << "Failed to destroy a database with status " << @@ -719,6 +725,8 @@ bool SandboxDirectoryDatabase::Init(RecoveryOption recovery_option) { leveldb::Options options; options.max_open_files = 0; // Use minimum. options.create_if_missing = true; + if (env_override_) + options.env = env_override_; leveldb::DB* db; leveldb::Status status = leveldb::DB::Open(options, path, &db); ReportInitStatus(status); @@ -766,6 +774,8 @@ bool SandboxDirectoryDatabase::RepairDatabase(const std::string& db_path) { DCHECK(!db_.get()); leveldb::Options options; options.max_open_files = 0; // Use minimum. + if (env_override_) + options.env = env_override_; if (!leveldb::RepairDB(db_path, options).ok()) return false; if (!Init(FAIL_ON_CORRUPTION)) |