Chromium Code Reviews| Index: chrome/browser/chromeos/fileapi/file_system_backend.cc |
| diff --git a/chrome/browser/chromeos/fileapi/file_system_backend.cc b/chrome/browser/chromeos/fileapi/file_system_backend.cc |
| index 62ced143f511537ce8ae8cd9e6951db6e0e62c78..256130a4212941807f1414b4b3ec72886b1f166a 100644 |
| --- a/chrome/browser/chromeos/fileapi/file_system_backend.cc |
| +++ b/chrome/browser/chromeos/fileapi/file_system_backend.cc |
| @@ -9,6 +9,7 @@ |
| #include "base/strings/stringprintf.h" |
| #include "chrome/browser/chromeos/fileapi/file_access_permissions.h" |
| #include "chrome/browser/chromeos/fileapi/file_system_backend_delegate.h" |
| +#include "chrome/browser/media_galleries/fileapi/media_file_system_backend.h" |
| #include "chromeos/dbus/cros_disks_client.h" |
| #include "webkit/browser/blob/file_stream_reader.h" |
| #include "webkit/browser/fileapi/async_file_util.h" |
| @@ -28,10 +29,12 @@ bool FileSystemBackend::CanHandleURL(const fileapi::FileSystemURL& url) { |
| return url.type() == fileapi::kFileSystemTypeNativeLocal || |
| url.type() == fileapi::kFileSystemTypeRestrictedNativeLocal || |
| url.type() == fileapi::kFileSystemTypeDrive || |
| - url.type() == fileapi::kFileSystemTypeProvided; |
| + url.type() == fileapi::kFileSystemTypeProvided || |
| + url.type() == fileapi::kFileSystemTypeDeviceMediaAsFileStorage; |
| } |
| FileSystemBackend::FileSystemBackend( |
| + const base::FilePath& profile_path, |
| FileSystemBackendDelegate* drive_delegate, |
| FileSystemBackendDelegate* file_system_provider_delegate, |
| scoped_refptr<quota::SpecialStoragePolicy> special_storage_policy, |
| @@ -40,6 +43,8 @@ FileSystemBackend::FileSystemBackend( |
| : special_storage_policy_(special_storage_policy), |
| file_access_permissions_(new FileAccessPermissions()), |
| local_file_util_(fileapi::AsyncFileUtil::CreateForLocalFileSystem()), |
| + device_media_async_file_util_( |
| + DeviceMediaAsyncFileUtil::Create(profile_path)), |
| drive_delegate_(drive_delegate), |
| file_system_provider_delegate_(file_system_provider_delegate), |
| mount_points_(mount_points), |
| @@ -76,6 +81,7 @@ bool FileSystemBackend::CanHandleType(fileapi::FileSystemType type) const { |
| case fileapi::kFileSystemTypeRestrictedNativeLocal: |
| case fileapi::kFileSystemTypeNativeLocal: |
| case fileapi::kFileSystemTypeNativeForPlatformApp: |
| + case fileapi::kFileSystemTypeDeviceMediaAsFileStorage: |
| return true; |
| default: |
| return false; |
| @@ -225,6 +231,8 @@ fileapi::AsyncFileUtil* FileSystemBackend::GetAsyncFileUtil( |
| case fileapi::kFileSystemTypeNativeLocal: |
| case fileapi::kFileSystemTypeRestrictedNativeLocal: |
| return local_file_util_.get(); |
| + case fileapi::kFileSystemTypeDeviceMediaAsFileStorage: |
| + return device_media_async_file_util_.get(); |
| default: |
| NOTREACHED(); |
| } |
| @@ -252,10 +260,12 @@ fileapi::FileSystemOperation* FileSystemBackend::CreateFileSystemOperation( |
| DCHECK(url.type() == fileapi::kFileSystemTypeNativeLocal || |
| url.type() == fileapi::kFileSystemTypeRestrictedNativeLocal || |
| - url.type() == fileapi::kFileSystemTypeDrive); |
| + url.type() == fileapi::kFileSystemTypeDrive || |
| + url.type() == fileapi::kFileSystemTypeDeviceMediaAsFileStorage); |
| return fileapi::FileSystemOperation::Create( |
| url, context, |
| - make_scoped_ptr(new fileapi::FileSystemOperationContext(context))); |
| + make_scoped_ptr(new fileapi::FileSystemOperationContext( |
| + context, MediaFileSystemBackend::MediaTaskRunner()))); |
|
vandebo (ex-Chrome)
2014/04/23 16:24:44
Passing in the media task runner here will do the
kinaba
2014/04/24 01:33:30
Right. I can't remember why I wrote it like the fi
|
| } |
| bool FileSystemBackend::SupportsStreaming( |
| @@ -286,6 +296,12 @@ FileSystemBackend::CreateFileStreamReader( |
| return scoped_ptr<webkit_blob::FileStreamReader>( |
| webkit_blob::FileStreamReader::CreateForFileSystemFile( |
| context, url, offset, expected_modification_time)); |
| + case fileapi::kFileSystemTypeDeviceMediaAsFileStorage: |
| + // TODO(kinaba): the stream reader from device media async util limits |
|
vandebo (ex-Chrome)
2014/04/23 16:24:44
I'm not sure what you mean here?
kinaba
2014/04/24 01:33:30
Revised the comment. Does it make sense?
|
| + // itself only for reading arbitrary file types. Handle non-media files |
| + // here as well. |
| + return device_media_async_file_util_->GetFileStreamReader( |
| + url, offset, expected_modification_time, context); |
| default: |
| NOTREACHED(); |
| } |
| @@ -316,6 +332,9 @@ FileSystemBackend::CreateFileStreamWriter( |
| case fileapi::kFileSystemTypeRestrictedNativeLocal: |
| // Restricted native local file system is read only. |
| return scoped_ptr<fileapi::FileStreamWriter>(); |
| + case fileapi::kFileSystemTypeDeviceMediaAsFileStorage: |
| + // TODO(kinaba): support writing. |
| + return scoped_ptr<fileapi::FileStreamWriter>(); |
| default: |
| NOTREACHED(); |
| } |