diff options
author | pilgrim <pilgrim@chromium.org> | 2014-09-05 10:30:15 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-09-05 17:32:24 +0000 |
commit | 4af8c2120e23d17c1cac3f929c3a1d901c5701ab (patch) | |
tree | 40e4ca0d45ec498ea74b9b4b232764abc1ec6ab1 /webkit/browser/fileapi/sandbox_directory_database.h | |
parent | a602902631a762be0b49ac0af09de0c9c840e183 (diff) | |
download | chromium_src-4af8c2120e23d17c1cac3f929c3a1d901c5701ab.zip chromium_src-4af8c2120e23d17c1cac3f929c3a1d901c5701ab.tar.gz chromium_src-4af8c2120e23d17c1cac3f929c3a1d901c5701ab.tar.bz2 |
Migrate webkit/browser/ to storage/browser/
using TBR because Darin told me he defers to James' judgement. Using NOTRY because there is one presubmit error (dump_file_system.cc was moved and it spews printf).
BUG=338338
TBR=darin@chromium.org
NOTRY=true
Review URL: https://codereview.chromium.org/539143002
Cr-Commit-Position: refs/heads/master@{#293547}
Diffstat (limited to 'webkit/browser/fileapi/sandbox_directory_database.h')
-rw-r--r-- | webkit/browser/fileapi/sandbox_directory_database.h | 134 |
1 files changed, 2 insertions, 132 deletions
diff --git a/webkit/browser/fileapi/sandbox_directory_database.h b/webkit/browser/fileapi/sandbox_directory_database.h index 7dbc166..c8452b0 100644 --- a/webkit/browser/fileapi/sandbox_directory_database.h +++ b/webkit/browser/fileapi/sandbox_directory_database.h @@ -1,135 +1,5 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef WEBKIT_BROWSER_FILEAPI_SANDBOX_DIRECTORY_DATABASE_H_ -#define WEBKIT_BROWSER_FILEAPI_SANDBOX_DIRECTORY_DATABASE_H_ - -#include <string> -#include <vector> - -#include "base/files/file.h" -#include "base/files/file_path.h" -#include "base/memory/scoped_ptr.h" -#include "base/time/time.h" -#include "webkit/browser/storage_browser_export.h" - -namespace content { -class SandboxDirectoryDatabaseTest; -} - -namespace tracked_objects { -class Location; -} - -namespace leveldb { -class DB; -class Env; -class Status; -class WriteBatch; -} - -namespace storage { - -// This class WILL NOT protect you against producing directory loops, giving an -// empty directory a backing data file, giving two files the same backing file, -// or pointing to a nonexistent backing file. It does no file IO other than -// that involved with talking to its underlying database. It does not create or -// in any way touch real files; it only creates path entries in its database. - -// TODO(ericu): Safe mode, which does more checks such as the above on debug -// builds. -// TODO(ericu): Add a method that will give a unique filename for a data file. -class STORAGE_EXPORT_PRIVATE SandboxDirectoryDatabase { - public: - typedef int64 FileId; - - struct STORAGE_EXPORT_PRIVATE FileInfo { - FileInfo(); - ~FileInfo(); - - bool is_directory() const { - return data_path.empty(); - } - - FileId parent_id; - base::FilePath data_path; - base::FilePath::StringType name; - // This modification time is valid only for directories, not files, as - // FileWriter will get the files out of sync. - // For files, look at the modification time of the underlying data_path. - base::Time modification_time; - }; - - SandboxDirectoryDatabase( - const base::FilePath& filesystem_data_directory, - leveldb::Env* env_override); - ~SandboxDirectoryDatabase(); - - bool GetChildWithName( - FileId parent_id, - const base::FilePath::StringType& name, - FileId* child_id); - bool GetFileWithPath(const base::FilePath& path, FileId* file_id); - // ListChildren will succeed, returning 0 children, if parent_id doesn't - // exist. - bool ListChildren(FileId parent_id, std::vector<FileId>* children); - bool GetFileInfo(FileId file_id, FileInfo* info); - base::File::Error AddFileInfo(const FileInfo& info, FileId* file_id); - bool RemoveFileInfo(FileId file_id); - // This does a full update of the FileInfo, and is what you'd use for moves - // and renames. If you just want to update the modification_time, use - // UpdateModificationTime. - bool UpdateFileInfo(FileId file_id, const FileInfo& info); - bool UpdateModificationTime( - FileId file_id, const base::Time& modification_time); - // This is used for an overwriting move of a file [not a directory] on top of - // another file [also not a directory]; we need to alter two files' info in a - // single transaction to avoid weird backing file references in the event of a - // partial failure. - bool OverwritingMoveFile(FileId src_file_id, FileId dest_file_id); - - // This produces the series 0, 1, 2..., starting at 0 when the underlying - // filesystem is first created, and maintaining state across - // creation/destruction of SandboxDirectoryDatabase objects. - bool GetNextInteger(int64* next); - - bool IsDirectory(FileId file_id); - - // Returns true if the database looks consistent with local filesystem. - bool IsFileSystemConsistent(); - - static bool DestroyDatabase(const base::FilePath& path, - leveldb::Env* env_override); - - private: - enum RecoveryOption { - DELETE_ON_CORRUPTION, - REPAIR_ON_CORRUPTION, - FAIL_ON_CORRUPTION, - }; - - friend class content::SandboxDirectoryDatabaseTest; - friend class ObfuscatedFileUtil; - - 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); - bool AddFileInfoHelper( - const FileInfo& info, FileId file_id, leveldb::WriteBatch* batch); - bool RemoveFileInfoHelper(FileId file_id, leveldb::WriteBatch* batch); - void HandleError(const tracked_objects::Location& from_here, - const leveldb::Status& status); - - const base::FilePath filesystem_data_directory_; - leveldb::Env* env_override_; - scoped_ptr<leveldb::DB> db_; - base::Time last_reported_time_; - DISALLOW_COPY_AND_ASSIGN(SandboxDirectoryDatabase); -}; - -} // namespace storage - -#endif // WEBKIT_BROWSER_FILEAPI_SANDBOX_DIRECTORY_DATABASE_H_ +#include "storage/browser/fileapi/sandbox_directory_database.h" |