Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5214)

Unified Diff: chrome/browser/media_galleries/linux/mtp_device_task_helper.cc

Issue 947943002: Implement CopyFileFromLocal of MTPDeviceAsyncDelegate. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 {

Powered by Google App Engine
This is Rietveld 408576698