| Index: webkit/browser/fileapi/plugin_private_file_system_backend.cc
|
| diff --git a/webkit/browser/fileapi/plugin_private_file_system_backend.cc b/webkit/browser/fileapi/plugin_private_file_system_backend.cc
|
| deleted file mode 100644
|
| index 0a3cbf9413d8a10600ec9934a8991448d8d03d1e..0000000000000000000000000000000000000000
|
| --- a/webkit/browser/fileapi/plugin_private_file_system_backend.cc
|
| +++ /dev/null
|
| @@ -1,311 +0,0 @@
|
| -// Copyright 2013 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/fileapi/plugin_private_file_system_backend.h"
|
| -
|
| -#include <map>
|
| -
|
| -#include "base/stl_util.h"
|
| -#include "base/synchronization/lock.h"
|
| -#include "base/task_runner_util.h"
|
| -#include "net/base/net_util.h"
|
| -#include "webkit/browser/blob/file_stream_reader.h"
|
| -#include "webkit/browser/fileapi/async_file_util_adapter.h"
|
| -#include "webkit/browser/fileapi/file_stream_writer.h"
|
| -#include "webkit/browser/fileapi/file_system_context.h"
|
| -#include "webkit/browser/fileapi/file_system_operation.h"
|
| -#include "webkit/browser/fileapi/file_system_operation_context.h"
|
| -#include "webkit/browser/fileapi/file_system_options.h"
|
| -#include "webkit/browser/fileapi/isolated_context.h"
|
| -#include "webkit/browser/fileapi/obfuscated_file_util.h"
|
| -#include "webkit/browser/fileapi/quota/quota_reservation.h"
|
| -#include "webkit/common/fileapi/file_system_util.h"
|
| -
|
| -namespace storage {
|
| -
|
| -class PluginPrivateFileSystemBackend::FileSystemIDToPluginMap {
|
| - public:
|
| - explicit FileSystemIDToPluginMap(base::SequencedTaskRunner* task_runner)
|
| - : task_runner_(task_runner) {}
|
| - ~FileSystemIDToPluginMap() {}
|
| -
|
| - std::string GetPluginIDForURL(const FileSystemURL& url) {
|
| - DCHECK(task_runner_->RunsTasksOnCurrentThread());
|
| - Map::iterator found = map_.find(url.filesystem_id());
|
| - if (url.type() != kFileSystemTypePluginPrivate || found == map_.end()) {
|
| - NOTREACHED() << "Unsupported url is given: " << url.DebugString();
|
| - return std::string();
|
| - }
|
| - return found->second;
|
| - }
|
| -
|
| - void RegisterFileSystem(const std::string& filesystem_id,
|
| - const std::string& plugin_id) {
|
| - DCHECK(task_runner_->RunsTasksOnCurrentThread());
|
| - DCHECK(!filesystem_id.empty());
|
| - DCHECK(!ContainsKey(map_, filesystem_id)) << filesystem_id;
|
| - map_[filesystem_id] = plugin_id;
|
| - }
|
| -
|
| - void RemoveFileSystem(const std::string& filesystem_id) {
|
| - DCHECK(task_runner_->RunsTasksOnCurrentThread());
|
| - map_.erase(filesystem_id);
|
| - }
|
| -
|
| - private:
|
| - typedef std::map<std::string, std::string> Map;
|
| - scoped_refptr<base::SequencedTaskRunner> task_runner_;
|
| - Map map_;
|
| -};
|
| -
|
| -namespace {
|
| -
|
| -const base::FilePath::CharType* kFileSystemDirectory =
|
| - SandboxFileSystemBackendDelegate::kFileSystemDirectory;
|
| -const base::FilePath::CharType* kPluginPrivateDirectory =
|
| - FILE_PATH_LITERAL("Plugins");
|
| -
|
| -base::File::Error OpenFileSystemOnFileTaskRunner(
|
| - ObfuscatedFileUtil* file_util,
|
| - PluginPrivateFileSystemBackend::FileSystemIDToPluginMap* plugin_map,
|
| - const GURL& origin_url,
|
| - const std::string& filesystem_id,
|
| - const std::string& plugin_id,
|
| - OpenFileSystemMode mode) {
|
| - base::File::Error error = base::File::FILE_ERROR_FAILED;
|
| - const bool create = (mode == OPEN_FILE_SYSTEM_CREATE_IF_NONEXISTENT);
|
| - file_util->GetDirectoryForOriginAndType(
|
| - origin_url, plugin_id, create, &error);
|
| - if (error == base::File::FILE_OK)
|
| - plugin_map->RegisterFileSystem(filesystem_id, plugin_id);
|
| - return error;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -PluginPrivateFileSystemBackend::PluginPrivateFileSystemBackend(
|
| - base::SequencedTaskRunner* file_task_runner,
|
| - const base::FilePath& profile_path,
|
| - storage::SpecialStoragePolicy* special_storage_policy,
|
| - const FileSystemOptions& file_system_options)
|
| - : file_task_runner_(file_task_runner),
|
| - file_system_options_(file_system_options),
|
| - base_path_(profile_path.Append(kFileSystemDirectory)
|
| - .Append(kPluginPrivateDirectory)),
|
| - plugin_map_(new FileSystemIDToPluginMap(file_task_runner)),
|
| - weak_factory_(this) {
|
| - file_util_.reset(
|
| - new AsyncFileUtilAdapter(new ObfuscatedFileUtil(
|
| - special_storage_policy,
|
| - base_path_, file_system_options.env_override(),
|
| - file_task_runner,
|
| - base::Bind(&FileSystemIDToPluginMap::GetPluginIDForURL,
|
| - base::Owned(plugin_map_)),
|
| - std::set<std::string>(),
|
| - NULL)));
|
| -}
|
| -
|
| -PluginPrivateFileSystemBackend::~PluginPrivateFileSystemBackend() {
|
| - if (!file_task_runner_->RunsTasksOnCurrentThread()) {
|
| - AsyncFileUtil* file_util = file_util_.release();
|
| - if (!file_task_runner_->DeleteSoon(FROM_HERE, file_util))
|
| - delete file_util;
|
| - }
|
| -}
|
| -
|
| -void PluginPrivateFileSystemBackend::OpenPrivateFileSystem(
|
| - const GURL& origin_url,
|
| - FileSystemType type,
|
| - const std::string& filesystem_id,
|
| - const std::string& plugin_id,
|
| - OpenFileSystemMode mode,
|
| - const StatusCallback& callback) {
|
| - if (!CanHandleType(type) || file_system_options_.is_incognito()) {
|
| - base::MessageLoopProxy::current()->PostTask(
|
| - FROM_HERE, base::Bind(callback, base::File::FILE_ERROR_SECURITY));
|
| - return;
|
| - }
|
| -
|
| - PostTaskAndReplyWithResult(
|
| - file_task_runner_.get(),
|
| - FROM_HERE,
|
| - base::Bind(&OpenFileSystemOnFileTaskRunner,
|
| - obfuscated_file_util(), plugin_map_,
|
| - origin_url, filesystem_id, plugin_id, mode),
|
| - callback);
|
| -}
|
| -
|
| -bool PluginPrivateFileSystemBackend::CanHandleType(FileSystemType type) const {
|
| - return type == kFileSystemTypePluginPrivate;
|
| -}
|
| -
|
| -void PluginPrivateFileSystemBackend::Initialize(FileSystemContext* context) {
|
| -}
|
| -
|
| -void PluginPrivateFileSystemBackend::ResolveURL(
|
| - const FileSystemURL& url,
|
| - OpenFileSystemMode mode,
|
| - const OpenFileSystemCallback& callback) {
|
| - // We never allow opening a new plugin-private filesystem via usual
|
| - // ResolveURL.
|
| - base::MessageLoopProxy::current()->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(callback, GURL(), std::string(),
|
| - base::File::FILE_ERROR_SECURITY));
|
| -}
|
| -
|
| -AsyncFileUtil*
|
| -PluginPrivateFileSystemBackend::GetAsyncFileUtil(FileSystemType type) {
|
| - return file_util_.get();
|
| -}
|
| -
|
| -WatcherManager* PluginPrivateFileSystemBackend::GetWatcherManager(
|
| - FileSystemType type) {
|
| - return NULL;
|
| -}
|
| -
|
| -CopyOrMoveFileValidatorFactory*
|
| -PluginPrivateFileSystemBackend::GetCopyOrMoveFileValidatorFactory(
|
| - FileSystemType type,
|
| - base::File::Error* error_code) {
|
| - DCHECK(error_code);
|
| - *error_code = base::File::FILE_OK;
|
| - return NULL;
|
| -}
|
| -
|
| -FileSystemOperation* PluginPrivateFileSystemBackend::CreateFileSystemOperation(
|
| - const FileSystemURL& url,
|
| - FileSystemContext* context,
|
| - base::File::Error* error_code) const {
|
| - scoped_ptr<FileSystemOperationContext> operation_context(
|
| - new FileSystemOperationContext(context));
|
| - return FileSystemOperation::Create(url, context, operation_context.Pass());
|
| -}
|
| -
|
| -bool PluginPrivateFileSystemBackend::SupportsStreaming(
|
| - const storage::FileSystemURL& url) const {
|
| - return false;
|
| -}
|
| -
|
| -bool PluginPrivateFileSystemBackend::HasInplaceCopyImplementation(
|
| - storage::FileSystemType type) const {
|
| - return false;
|
| -}
|
| -
|
| -scoped_ptr<storage::FileStreamReader>
|
| -PluginPrivateFileSystemBackend::CreateFileStreamReader(
|
| - const FileSystemURL& url,
|
| - int64 offset,
|
| - const base::Time& expected_modification_time,
|
| - FileSystemContext* context) const {
|
| - return scoped_ptr<storage::FileStreamReader>();
|
| -}
|
| -
|
| -scoped_ptr<FileStreamWriter>
|
| -PluginPrivateFileSystemBackend::CreateFileStreamWriter(
|
| - const FileSystemURL& url,
|
| - int64 offset,
|
| - FileSystemContext* context) const {
|
| - return scoped_ptr<FileStreamWriter>();
|
| -}
|
| -
|
| -FileSystemQuotaUtil* PluginPrivateFileSystemBackend::GetQuotaUtil() {
|
| - return this;
|
| -}
|
| -
|
| -base::File::Error
|
| -PluginPrivateFileSystemBackend::DeleteOriginDataOnFileTaskRunner(
|
| - FileSystemContext* context,
|
| - storage::QuotaManagerProxy* proxy,
|
| - const GURL& origin_url,
|
| - FileSystemType type) {
|
| - if (!CanHandleType(type))
|
| - return base::File::FILE_ERROR_SECURITY;
|
| - bool result = obfuscated_file_util()->DeleteDirectoryForOriginAndType(
|
| - origin_url, std::string());
|
| - if (result)
|
| - return base::File::FILE_OK;
|
| - return base::File::FILE_ERROR_FAILED;
|
| -}
|
| -
|
| -void PluginPrivateFileSystemBackend::GetOriginsForTypeOnFileTaskRunner(
|
| - FileSystemType type,
|
| - std::set<GURL>* origins) {
|
| - if (!CanHandleType(type))
|
| - return;
|
| - scoped_ptr<ObfuscatedFileUtil::AbstractOriginEnumerator> enumerator(
|
| - obfuscated_file_util()->CreateOriginEnumerator());
|
| - GURL origin;
|
| - while (!(origin = enumerator->Next()).is_empty())
|
| - origins->insert(origin);
|
| -}
|
| -
|
| -void PluginPrivateFileSystemBackend::GetOriginsForHostOnFileTaskRunner(
|
| - FileSystemType type,
|
| - const std::string& host,
|
| - std::set<GURL>* origins) {
|
| - if (!CanHandleType(type))
|
| - return;
|
| - scoped_ptr<ObfuscatedFileUtil::AbstractOriginEnumerator> enumerator(
|
| - obfuscated_file_util()->CreateOriginEnumerator());
|
| - GURL origin;
|
| - while (!(origin = enumerator->Next()).is_empty()) {
|
| - if (host == net::GetHostOrSpecFromURL(origin))
|
| - origins->insert(origin);
|
| - }
|
| -}
|
| -
|
| -int64 PluginPrivateFileSystemBackend::GetOriginUsageOnFileTaskRunner(
|
| - FileSystemContext* context,
|
| - const GURL& origin_url,
|
| - FileSystemType type) {
|
| - // We don't track usage on this filesystem.
|
| - return 0;
|
| -}
|
| -
|
| -scoped_refptr<QuotaReservation>
|
| -PluginPrivateFileSystemBackend::CreateQuotaReservationOnFileTaskRunner(
|
| - const GURL& origin_url,
|
| - FileSystemType type) {
|
| - // We don't track usage on this filesystem.
|
| - NOTREACHED();
|
| - return scoped_refptr<QuotaReservation>();
|
| -}
|
| -
|
| -void PluginPrivateFileSystemBackend::AddFileUpdateObserver(
|
| - FileSystemType type,
|
| - FileUpdateObserver* observer,
|
| - base::SequencedTaskRunner* task_runner) {}
|
| -
|
| -void PluginPrivateFileSystemBackend::AddFileChangeObserver(
|
| - FileSystemType type,
|
| - FileChangeObserver* observer,
|
| - base::SequencedTaskRunner* task_runner) {}
|
| -
|
| -void PluginPrivateFileSystemBackend::AddFileAccessObserver(
|
| - FileSystemType type,
|
| - FileAccessObserver* observer,
|
| - base::SequencedTaskRunner* task_runner) {}
|
| -
|
| -const UpdateObserverList* PluginPrivateFileSystemBackend::GetUpdateObservers(
|
| - FileSystemType type) const {
|
| - return NULL;
|
| -}
|
| -
|
| -const ChangeObserverList* PluginPrivateFileSystemBackend::GetChangeObservers(
|
| - FileSystemType type) const {
|
| - return NULL;
|
| -}
|
| -
|
| -const AccessObserverList* PluginPrivateFileSystemBackend::GetAccessObservers(
|
| - FileSystemType type) const {
|
| - return NULL;
|
| -}
|
| -
|
| -ObfuscatedFileUtil* PluginPrivateFileSystemBackend::obfuscated_file_util() {
|
| - return static_cast<ObfuscatedFileUtil*>(
|
| - static_cast<AsyncFileUtilAdapter*>(file_util_.get())->sync_file_util());
|
| -}
|
| -
|
| -} // namespace storage
|
|
|