summaryrefslogtreecommitdiffstats
path: root/webkit/fileapi/file_system_context.cc
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/fileapi/file_system_context.cc')
-rw-r--r--webkit/fileapi/file_system_context.cc81
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);