| Index: webkit/browser/database/vfs_backend.cc
|
| diff --git a/webkit/browser/database/vfs_backend.cc b/webkit/browser/database/vfs_backend.cc
|
| deleted file mode 100644
|
| index 7ed0874b5bd8f5faa1e2012f9f13dffbe589f378..0000000000000000000000000000000000000000
|
| --- a/webkit/browser/database/vfs_backend.cc
|
| +++ /dev/null
|
| @@ -1,158 +0,0 @@
|
| -// Copyright (c) 2011 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.
|
| -
|
| -#include "webkit/browser/database/vfs_backend.h"
|
| -
|
| -#include "base/file_util.h"
|
| -#include "base/files/file_path.h"
|
| -#include "base/logging.h"
|
| -#include "third_party/sqlite/sqlite3.h"
|
| -
|
| -namespace storage {
|
| -
|
| -static const int kFileTypeMask = 0x00007F00;
|
| -
|
| -// static
|
| -bool VfsBackend::OpenTypeIsReadWrite(int desired_flags) {
|
| - return (desired_flags & SQLITE_OPEN_READWRITE) != 0;
|
| -}
|
| -
|
| -// static
|
| -bool VfsBackend::OpenFileFlagsAreConsistent(int desired_flags) {
|
| - const int file_type = desired_flags & kFileTypeMask;
|
| - const bool is_exclusive = (desired_flags & SQLITE_OPEN_EXCLUSIVE) != 0;
|
| - const bool is_delete = (desired_flags & SQLITE_OPEN_DELETEONCLOSE) != 0;
|
| - const bool is_create = (desired_flags & SQLITE_OPEN_CREATE) != 0;
|
| - const bool is_read_only = (desired_flags & SQLITE_OPEN_READONLY) != 0;
|
| - const bool is_read_write = (desired_flags & SQLITE_OPEN_READWRITE) != 0;
|
| -
|
| - // All files should be opened either read-write or read-only, but not both.
|
| - if (is_read_only == is_read_write)
|
| - return false;
|
| -
|
| - // If a new file is created, it must also be writable.
|
| - if (is_create && !is_read_write)
|
| - return false;
|
| -
|
| - // If we're accessing an existing file, we cannot give exclusive access, and
|
| - // we can't delete it.
|
| - // Normally, we'd also check that 'is_delete' is false for a main DB, main
|
| - // journal or master journal file; however, when in incognito mode, we use
|
| - // the SQLITE_OPEN_DELETEONCLOSE flag when opening those files too and keep
|
| - // an open handle to them for as long as the incognito profile is around.
|
| - if ((is_exclusive || is_delete) && !is_create)
|
| - return false;
|
| -
|
| - // Make sure we're opening the DB directory or that a file type is set.
|
| - return (file_type == SQLITE_OPEN_MAIN_DB) ||
|
| - (file_type == SQLITE_OPEN_TEMP_DB) ||
|
| - (file_type == SQLITE_OPEN_MAIN_JOURNAL) ||
|
| - (file_type == SQLITE_OPEN_TEMP_JOURNAL) ||
|
| - (file_type == SQLITE_OPEN_SUBJOURNAL) ||
|
| - (file_type == SQLITE_OPEN_MASTER_JOURNAL) ||
|
| - (file_type == SQLITE_OPEN_TRANSIENT_DB);
|
| -}
|
| -
|
| -// static
|
| -base::File VfsBackend::OpenFile(const base::FilePath& file_path,
|
| - int desired_flags) {
|
| - DCHECK(!file_path.empty());
|
| -
|
| - // Verify the flags for consistency and create the database
|
| - // directory if it doesn't exist.
|
| - if (!OpenFileFlagsAreConsistent(desired_flags) ||
|
| - !base::CreateDirectory(file_path.DirName())) {
|
| - return base::File();
|
| - }
|
| -
|
| - int flags = 0;
|
| - flags |= base::File::FLAG_READ;
|
| - if (desired_flags & SQLITE_OPEN_READWRITE)
|
| - flags |= base::File::FLAG_WRITE;
|
| -
|
| - if (!(desired_flags & SQLITE_OPEN_MAIN_DB))
|
| - flags |= base::File::FLAG_EXCLUSIVE_READ | base::File::FLAG_EXCLUSIVE_WRITE;
|
| -
|
| - flags |= ((desired_flags & SQLITE_OPEN_CREATE) ?
|
| - base::File::FLAG_OPEN_ALWAYS : base::File::FLAG_OPEN);
|
| -
|
| - if (desired_flags & SQLITE_OPEN_EXCLUSIVE)
|
| - flags |= base::File::FLAG_EXCLUSIVE_READ | base::File::FLAG_EXCLUSIVE_WRITE;
|
| -
|
| - if (desired_flags & SQLITE_OPEN_DELETEONCLOSE) {
|
| - flags |= base::File::FLAG_TEMPORARY | base::File::FLAG_HIDDEN |
|
| - base::File::FLAG_DELETE_ON_CLOSE;
|
| - }
|
| -
|
| - // This flag will allow us to delete the file later on from the browser
|
| - // process.
|
| - flags |= base::File::FLAG_SHARE_DELETE;
|
| -
|
| - // Try to open/create the DB file.
|
| - return base::File(file_path, flags);
|
| -}
|
| -
|
| -// static
|
| -base::File VfsBackend::OpenTempFileInDirectory(const base::FilePath& dir_path,
|
| - int desired_flags) {
|
| - // We should be able to delete temp files when they're closed
|
| - // and create them as needed
|
| - if (!(desired_flags & SQLITE_OPEN_DELETEONCLOSE) ||
|
| - !(desired_flags & SQLITE_OPEN_CREATE)) {
|
| - return base::File();
|
| - }
|
| -
|
| - // Get a unique temp file name in the database directory.
|
| - base::FilePath temp_file_path;
|
| - if (!base::CreateTemporaryFileInDir(dir_path, &temp_file_path))
|
| - return base::File();
|
| -
|
| - return OpenFile(temp_file_path, desired_flags);
|
| -}
|
| -
|
| -// static
|
| -int VfsBackend::DeleteFile(const base::FilePath& file_path, bool sync_dir) {
|
| - if (!base::PathExists(file_path))
|
| - return SQLITE_OK;
|
| - if (!base::DeleteFile(file_path, false))
|
| - return SQLITE_IOERR_DELETE;
|
| -
|
| - int error_code = SQLITE_OK;
|
| -#if defined(OS_POSIX)
|
| - if (sync_dir) {
|
| - base::File dir(file_path.DirName(), base::File::FLAG_READ);
|
| - if (dir.IsValid()) {
|
| - if (!dir.Flush())
|
| - error_code = SQLITE_IOERR_DIR_FSYNC;
|
| - } else {
|
| - error_code = SQLITE_CANTOPEN;
|
| - }
|
| - }
|
| -#endif
|
| - return error_code;
|
| -}
|
| -
|
| -// static
|
| -uint32 VfsBackend::GetFileAttributes(const base::FilePath& file_path) {
|
| -#if defined(OS_WIN)
|
| - uint32 attributes = ::GetFileAttributes(file_path.value().c_str());
|
| -#elif defined(OS_POSIX)
|
| - uint32 attributes = 0;
|
| - if (!access(file_path.value().c_str(), R_OK))
|
| - attributes |= static_cast<uint32>(R_OK);
|
| - if (!access(file_path.value().c_str(), W_OK))
|
| - attributes |= static_cast<uint32>(W_OK);
|
| - if (!attributes)
|
| - attributes = -1;
|
| -#endif
|
| - return attributes;
|
| -}
|
| -
|
| -// static
|
| -int64 VfsBackend::GetFileSize(const base::FilePath& file_path) {
|
| - int64 size = 0;
|
| - return (base::GetFileSize(file_path, &size) ? size : 0);
|
| -}
|
| -
|
| -} // namespace storage
|
|
|