| Index: chrome/browser/media_galleries/linux/mtp_device_task_helper.cc
|
| diff --git a/chrome/browser/media_galleries/linux/mtp_device_task_helper.cc b/chrome/browser/media_galleries/linux/mtp_device_task_helper.cc
|
| index e19ce1815bba6ba8dc91f98a9dfa264b32f44e6a..5fb766fd2e92e0c7d40094f83ff9b2c2ae26e20c 100644
|
| --- a/chrome/browser/media_galleries/linux/mtp_device_task_helper.cc
|
| +++ b/chrome/browser/media_galleries/linux/mtp_device_task_helper.cc
|
| @@ -59,6 +59,7 @@ MTPDeviceTaskHelper::~MTPDeviceTaskHelper() {
|
| }
|
|
|
| void MTPDeviceTaskHelper::OpenStorage(const std::string& storage_name,
|
| + const bool read_only,
|
| const OpenStorageCallback& callback) {
|
| DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| DCHECK(!storage_name.empty());
|
| @@ -68,11 +69,12 @@ void MTPDeviceTaskHelper::OpenStorage(const std::string& storage_name,
|
| base::Bind(callback, true));
|
| return;
|
| }
|
| +
|
| + const std::string mode =
|
| + read_only ? mtpd::kReadOnlyMode : mtpd::kReadWriteMode;
|
| GetMediaTransferProtocolManager()->OpenStorage(
|
| - storage_name, mtpd::kReadOnlyMode,
|
| - base::Bind(&MTPDeviceTaskHelper::OnDidOpenStorage,
|
| - weak_ptr_factory_.GetWeakPtr(),
|
| - callback));
|
| + storage_name, mode, base::Bind(&MTPDeviceTaskHelper::OnDidOpenStorage,
|
| + weak_ptr_factory_.GetWeakPtr(), callback));
|
| }
|
|
|
| void MTPDeviceTaskHelper::GetFileInfo(
|
| @@ -136,6 +138,22 @@ void MTPDeviceTaskHelper::ReadBytes(
|
| weak_ptr_factory_.GetWeakPtr(), request));
|
| }
|
|
|
| +void MTPDeviceTaskHelper::CopyFileFromLocal(
|
| + const std::string& storage_name,
|
| + const int source_file_descriptor,
|
| + const uint32 parent_id,
|
| + const std::string& file_name,
|
| + const CopyFileFromLocalSuccessCallback& success_callback,
|
| + const ErrorCallback& error_callback) {
|
| + DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| +
|
| + GetMediaTransferProtocolManager()->CopyFileFromLocal(
|
| + device_handle_, source_file_descriptor, parent_id, file_name,
|
| + base::Bind(&MTPDeviceTaskHelper::OnCopyFileFromLocal,
|
| + weak_ptr_factory_.GetWeakPtr(), success_callback,
|
| + error_callback));
|
| +}
|
| +
|
| void MTPDeviceTaskHelper::CloseStorage() const {
|
| DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| if (device_handle_.empty())
|
| @@ -266,6 +284,22 @@ void MTPDeviceTaskHelper::OnDidReadBytes(
|
| file_info, data.length()));
|
| }
|
|
|
| +void MTPDeviceTaskHelper::OnCopyFileFromLocal(
|
| + const CopyFileFromLocalSuccessCallback& success_callback,
|
| + const ErrorCallback& error_callback,
|
| + const bool error) const {
|
| + DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| + if (error) {
|
| + content::BrowserThread::PostTask(
|
| + content::BrowserThread::IO, FROM_HERE,
|
| + base::Bind(error_callback, base::File::FILE_ERROR_FAILED));
|
| + return;
|
| + }
|
| +
|
| + content::BrowserThread::PostTask(content::BrowserThread::IO, FROM_HERE,
|
| + base::Bind(success_callback));
|
| +}
|
| +
|
| void MTPDeviceTaskHelper::HandleDeviceError(
|
| const ErrorCallback& error_callback,
|
| base::File::Error error) const {
|
|
|