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

Unified Diff: webkit/browser/database/vfs_backend.cc

Issue 539143002: Migrate webkit/browser/ to storage/browser/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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
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

Powered by Google App Engine
This is Rietveld 408576698