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(); |
} |