diff options
Diffstat (limited to 'chrome/browser/chromeos/fileapi/file_system_backend.cc')
-rw-r--r-- | chrome/browser/chromeos/fileapi/file_system_backend.cc | 96 |
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( |