diff options
Diffstat (limited to 'device/media_transfer_protocol/media_transfer_protocol_daemon_client.cc')
-rw-r--r-- | device/media_transfer_protocol/media_transfer_protocol_daemon_client.cc | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/device/media_transfer_protocol/media_transfer_protocol_daemon_client.cc b/device/media_transfer_protocol/media_transfer_protocol_daemon_client.cc index 0f72677..2dddbce 100644 --- a/device/media_transfer_protocol/media_transfer_protocol_daemon_client.cc +++ b/device/media_transfer_protocol/media_transfer_protocol_daemon_client.cc @@ -72,8 +72,8 @@ class MediaTransferProtocolDaemonClientImpl dbus::MethodCall method_call(mtpd::kMtpdInterface, mtpd::kOpenStorage); dbus::MessageWriter writer(&method_call); writer.AppendString(storage_name); - DCHECK_EQ(mtpd::kReadOnlyMode, mode); - writer.AppendString(mtpd::kReadOnlyMode); + DCHECK(mode == mtpd::kReadOnlyMode || mode == mtpd::kReadWriteMode); + writer.AppendString(mode); proxy_->CallMethod( &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, base::Bind(&MediaTransferProtocolDaemonClientImpl::OnOpenStorage, @@ -171,6 +171,28 @@ class MediaTransferProtocolDaemonClientImpl error_callback)); } + void CopyFileFromLocal(const std::string& handle, + const int source_file_descriptor, + const uint32 parent_id, + const std::string& file_name, + const CopyFileFromLocalCallback& callback, + const ErrorCallback& error_callback) override { + dbus::FileDescriptor file_descriptor(source_file_descriptor); + file_descriptor.CheckValidity(); + + dbus::MethodCall method_call(mtpd::kMtpdInterface, + mtpd::kCopyFileFromLocal); + dbus::MessageWriter writer(&method_call); + writer.AppendString(handle); + writer.AppendFileDescriptor(file_descriptor); + writer.AppendUint32(parent_id); + writer.AppendString(file_name); + proxy_->CallMethod( + &method_call, dbus::ObjectProxy::TIMEOUT_INFINITE, + base::Bind(&MediaTransferProtocolDaemonClientImpl::OnCopyFileFromLocal, + weak_ptr_factory_.GetWeakPtr(), callback, error_callback)); + } + // MediaTransferProtocolDaemonClient override. void ListenForChanges(const MTPStorageEventHandler& handler) override { DCHECK(!listen_for_changes_called_); @@ -349,6 +371,17 @@ class MediaTransferProtocolDaemonClientImpl callback.Run(data); } + void OnCopyFileFromLocal(const CopyFileFromLocalCallback& callback, + const ErrorCallback& error_callback, + dbus::Response* response) { + if (!response) { + error_callback.Run(); + return; + } + + callback.Run(); + } + // Handles MTPStorageAttached/Dettached signals and calls |handler|. void OnMTPStorageSignal(MTPStorageEventHandler handler, bool is_attach, |