diff options
Diffstat (limited to 'webkit/fileapi/file_system_context.cc')
-rw-r--r-- | webkit/fileapi/file_system_context.cc | 81 |
1 files changed, 64 insertions, 17 deletions
diff --git a/webkit/fileapi/file_system_context.cc b/webkit/fileapi/file_system_context.cc index a88afce..efd56f2 100644 --- a/webkit/fileapi/file_system_context.cc +++ b/webkit/fileapi/file_system_context.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -7,23 +7,32 @@ #include "base/file_util.h" #include "base/message_loop_proxy.h" #include "googleurl/src/gurl.h" -#include "webkit/fileapi/file_system_path_manager.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebFileSystem.h" +#include "webkit/fileapi/file_system_file_util.h" +#include "webkit/fileapi/file_system_options.h" +#include "webkit/fileapi/file_system_quota_client.h" #include "webkit/fileapi/file_system_util.h" #include "webkit/fileapi/sandbox_mount_point_provider.h" -#include "webkit/fileapi/file_system_quota_client.h" #include "webkit/quota/quota_manager.h" +#include "webkit/quota/special_storage_policy.h" + +#if defined(OS_CHROMEOS) +#include "webkit/chromeos/fileapi/cros_mount_point_provider.h" +#endif using quota::QuotaClient; namespace fileapi { namespace { + QuotaClient* CreateQuotaClient( scoped_refptr<base::MessageLoopProxy> file_message_loop, FileSystemContext* context, bool is_incognito) { return new FileSystemQuotaClient(file_message_loop, context, is_incognito); } + } // anonymous namespace FileSystemContext::FileSystemContext( @@ -32,22 +41,23 @@ FileSystemContext::FileSystemContext( scoped_refptr<quota::SpecialStoragePolicy> special_storage_policy, quota::QuotaManagerProxy* quota_manager_proxy, const FilePath& profile_path, - bool is_incognito, - bool allow_file_access_from_files, - FileSystemPathManager* path_manager) + const FileSystemOptions& options) : file_message_loop_(file_message_loop), io_message_loop_(io_message_loop), quota_manager_proxy_(quota_manager_proxy), - path_manager_(path_manager) { - if (!path_manager) { - path_manager_.reset(new FileSystemPathManager( - file_message_loop, profile_path, special_storage_policy, - is_incognito, allow_file_access_from_files)); - } + sandbox_provider_( + new SandboxMountPointProvider( + file_message_loop, + profile_path, + options)) { if (quota_manager_proxy) { quota_manager_proxy->RegisterClient(CreateQuotaClient( - file_message_loop, this, is_incognito)); + file_message_loop, this, options.is_incognito())); } +#if defined(OS_CHROMEOS) + external_provider_.reset( + new chromeos::CrosMountPointProvider(special_storage_policy)); +#endif } FileSystemContext::~FileSystemContext() { @@ -88,6 +98,40 @@ FileSystemContext::GetQuotaUtil(FileSystemType type) const { return NULL; } +FileSystemFileUtil* FileSystemContext::GetFileUtil( + FileSystemType type) const { + FileSystemMountPointProvider* mount_point_provider = + GetMountPointProvider(type); + if (!mount_point_provider) + return NULL; + return mount_point_provider->GetFileUtil(); +} + +FileSystemMountPointProvider* FileSystemContext::GetMountPointProvider( + FileSystemType type) const { + switch (type) { + case kFileSystemTypeTemporary: + case kFileSystemTypePersistent: + return sandbox_provider_.get(); + case kFileSystemTypeExternal: + return external_provider_.get(); + case kFileSystemTypeUnknown: + default: + NOTREACHED(); + return NULL; + } +} + +SandboxMountPointProvider* +FileSystemContext::sandbox_provider() const { + return sandbox_provider_.get(); +} + +ExternalFileSystemMountPointProvider* +FileSystemContext::external_provider() const { + return external_provider_.get(); +} + void FileSystemContext::DeleteOnCorrectThread() const { if (!io_message_loop_->BelongsToCurrentThread()) { io_message_loop_->DeleteSoon(FROM_HERE, this); @@ -96,8 +140,11 @@ void FileSystemContext::DeleteOnCorrectThread() const { delete this; } -SandboxMountPointProvider* FileSystemContext::sandbox_provider() const { - return path_manager_->sandbox_provider(); -} - } // namespace fileapi + +COMPILE_ASSERT(int(WebKit::WebFileSystem::TypeTemporary) == \ + int(fileapi::kFileSystemTypeTemporary), mismatching_enums); +COMPILE_ASSERT(int(WebKit::WebFileSystem::TypePersistent) == \ + int(fileapi::kFileSystemTypePersistent), mismatching_enums); +COMPILE_ASSERT(int(WebKit::WebFileSystem::TypeExternal) == \ + int(fileapi::kFileSystemTypeExternal), mismatching_enums); |