summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos/fileapi/file_system_backend.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/chromeos/fileapi/file_system_backend.cc')
-rw-r--r--chrome/browser/chromeos/fileapi/file_system_backend.cc96
1 files changed, 45 insertions, 51 deletions
diff --git a/chrome/browser/chromeos/fileapi/file_system_backend.cc b/chrome/browser/chromeos/fileapi/file_system_backend.cc
index 78a5fd8..62ced14 100644
--- a/chrome/browser/chromeos/fileapi/file_system_backend.cc
+++ b/chrome/browser/chromeos/fileapi/file_system_backend.cc
@@ -6,10 +6,7 @@
#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
-#include "base/message_loop/message_loop.h"
#include "base/strings/stringprintf.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/synchronization/lock.h"
#include "chrome/browser/chromeos/fileapi/file_access_permissions.h"
#include "chrome/browser/chromeos/fileapi/file_system_backend_delegate.h"
#include "chromeos/dbus/cros_disks_client.h"
@@ -21,13 +18,6 @@
#include "webkit/browser/fileapi/file_system_operation.h"
#include "webkit/browser/fileapi/file_system_operation_context.h"
#include "webkit/browser/fileapi/file_system_url.h"
-#include "webkit/browser/fileapi/isolated_context.h"
-
-namespace {
-
-const char kChromeUIScheme[] = "chrome";
-
-} // namespace
namespace chromeos {
@@ -152,11 +142,6 @@ bool FileSystemBackend::IsAccessAllowed(
if (!url.is_valid())
return false;
- // Permit access to mount points from internal WebUI.
- const GURL& origin_url = url.origin();
- if (origin_url.SchemeIs(kChromeUIScheme))
- return true;
-
// No extra check is needed for isolated file systems.
if (url.mount_type() == fileapi::kFileSystemTypeIsolated)
return true;
@@ -164,7 +149,7 @@ bool FileSystemBackend::IsAccessAllowed(
if (!CanHandleURL(url))
return false;
- std::string extension_id = origin_url.host();
+ std::string extension_id = url.origin().host();
// TODO(mtomasz): Temporarily whitelist TimeScapes. Remove this in M-31.
// See: crbug.com/271946
if (extension_id == "mlbmkoenclnokonejhlfakkeabdlmpek" &&
@@ -232,14 +217,18 @@ std::vector<base::FilePath> FileSystemBackend::GetRootDirectories() const {
fileapi::AsyncFileUtil* FileSystemBackend::GetAsyncFileUtil(
fileapi::FileSystemType type) {
- if (type == fileapi::kFileSystemTypeDrive)
- return drive_delegate_->GetAsyncFileUtil(type);
- if (type == fileapi::kFileSystemTypeProvided)
- return file_system_provider_delegate_->GetAsyncFileUtil(type);
-
- DCHECK(type == fileapi::kFileSystemTypeNativeLocal ||
- type == fileapi::kFileSystemTypeRestrictedNativeLocal);
- return local_file_util_.get();
+ switch (type) {
+ case fileapi::kFileSystemTypeDrive:
+ return drive_delegate_->GetAsyncFileUtil(type);
+ case fileapi::kFileSystemTypeProvided:
+ return file_system_provider_delegate_->GetAsyncFileUtil(type);
+ case fileapi::kFileSystemTypeNativeLocal:
+ case fileapi::kFileSystemTypeRestrictedNativeLocal:
+ return local_file_util_.get();
+ default:
+ NOTREACHED();
+ }
+ return NULL;
}
fileapi::CopyOrMoveFileValidatorFactory*
@@ -285,19 +274,22 @@ FileSystemBackend::CreateFileStreamReader(
if (!IsAccessAllowed(url))
return scoped_ptr<webkit_blob::FileStreamReader>();
- if (url.type() == fileapi::kFileSystemTypeDrive) {
- return drive_delegate_->CreateFileStreamReader(
- url, offset, expected_modification_time, context);
- }
-
- if (url.type() == fileapi::kFileSystemTypeProvided) {
- return file_system_provider_delegate_->CreateFileStreamReader(
- url, offset, expected_modification_time, context);
+ switch (url.type()) {
+ case fileapi::kFileSystemTypeDrive:
+ return drive_delegate_->CreateFileStreamReader(
+ url, offset, expected_modification_time, context);
+ case fileapi::kFileSystemTypeProvided:
+ return file_system_provider_delegate_->CreateFileStreamReader(
+ url, offset, expected_modification_time, context);
+ case fileapi::kFileSystemTypeNativeLocal:
+ case fileapi::kFileSystemTypeRestrictedNativeLocal:
+ return scoped_ptr<webkit_blob::FileStreamReader>(
+ webkit_blob::FileStreamReader::CreateForFileSystemFile(
+ context, url, offset, expected_modification_time));
+ default:
+ NOTREACHED();
}
-
- return scoped_ptr<webkit_blob::FileStreamReader>(
- webkit_blob::FileStreamReader::CreateForFileSystemFile(
- context, url, offset, expected_modification_time));
+ return scoped_ptr<webkit_blob::FileStreamReader>();
}
scoped_ptr<fileapi::FileStreamWriter>
@@ -310,22 +302,24 @@ FileSystemBackend::CreateFileStreamWriter(
if (!IsAccessAllowed(url))
return scoped_ptr<fileapi::FileStreamWriter>();
- if (url.type() == fileapi::kFileSystemTypeDrive)
- return drive_delegate_->CreateFileStreamWriter(url, offset, context);
-
- if (url.type() == fileapi::kFileSystemTypeRestrictedNativeLocal)
- return scoped_ptr<fileapi::FileStreamWriter>();
-
- if (url.type() == fileapi::kFileSystemTypeProvided) {
- return file_system_provider_delegate_->CreateFileStreamWriter(
- url, offset, context);
+ switch (url.type()) {
+ case fileapi::kFileSystemTypeDrive:
+ return drive_delegate_->CreateFileStreamWriter(url, offset, context);
+ case fileapi::kFileSystemTypeProvided:
+ return file_system_provider_delegate_->CreateFileStreamWriter(
+ url, offset, context);
+ case fileapi::kFileSystemTypeNativeLocal:
+ return scoped_ptr<fileapi::FileStreamWriter>(
+ fileapi::FileStreamWriter::CreateForLocalFile(
+ context->default_file_task_runner(), url.path(), offset,
+ fileapi::FileStreamWriter::OPEN_EXISTING_FILE));
+ case fileapi::kFileSystemTypeRestrictedNativeLocal:
+ // Restricted native local file system is read only.
+ return scoped_ptr<fileapi::FileStreamWriter>();
+ default:
+ NOTREACHED();
}
-
- DCHECK(url.type() == fileapi::kFileSystemTypeNativeLocal);
- return scoped_ptr<fileapi::FileStreamWriter>(
- fileapi::FileStreamWriter::CreateForLocalFile(
- context->default_file_task_runner(), url.path(), offset,
- fileapi::FileStreamWriter::OPEN_EXISTING_FILE));
+ return scoped_ptr<fileapi::FileStreamWriter>();
}
bool FileSystemBackend::GetVirtualPath(