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

Side by Side Diff: device/media_transfer_protocol/media_transfer_protocol_daemon_client.cc

Issue 947943002: Implement CopyFileFromLocal of MTPDeviceAsyncDelegate. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 5 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "device/media_transfer_protocol/media_transfer_protocol_daemon_client.h " 5 #include "device/media_transfer_protocol/media_transfer_protocol_daemon_client.h "
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/memory/weak_ptr.h" 10 #include "base/memory/weak_ptr.h"
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 } 65 }
66 66
67 // MediaTransferProtocolDaemonClient override. 67 // MediaTransferProtocolDaemonClient override.
68 void OpenStorage(const std::string& storage_name, 68 void OpenStorage(const std::string& storage_name,
69 const std::string& mode, 69 const std::string& mode,
70 const OpenStorageCallback& callback, 70 const OpenStorageCallback& callback,
71 const ErrorCallback& error_callback) override { 71 const ErrorCallback& error_callback) override {
72 dbus::MethodCall method_call(mtpd::kMtpdInterface, mtpd::kOpenStorage); 72 dbus::MethodCall method_call(mtpd::kMtpdInterface, mtpd::kOpenStorage);
73 dbus::MessageWriter writer(&method_call); 73 dbus::MessageWriter writer(&method_call);
74 writer.AppendString(storage_name); 74 writer.AppendString(storage_name);
75 DCHECK_EQ(mtpd::kReadOnlyMode, mode); 75 DCHECK(mode == mtpd::kReadOnlyMode || mode == mtpd::kReadWriteMode);
76 writer.AppendString(mtpd::kReadOnlyMode); 76 writer.AppendString(mode);
77 proxy_->CallMethod( 77 proxy_->CallMethod(
78 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, 78 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
79 base::Bind(&MediaTransferProtocolDaemonClientImpl::OnOpenStorage, 79 base::Bind(&MediaTransferProtocolDaemonClientImpl::OnOpenStorage,
80 weak_ptr_factory_.GetWeakPtr(), 80 weak_ptr_factory_.GetWeakPtr(),
81 callback, 81 callback,
82 error_callback)); 82 error_callback));
83 } 83 }
84 84
85 // MediaTransferProtocolDaemonClient override. 85 // MediaTransferProtocolDaemonClient override.
86 void CloseStorage(const std::string& handle, 86 void CloseStorage(const std::string& handle,
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 writer.AppendUint32(offset); 164 writer.AppendUint32(offset);
165 writer.AppendUint32(bytes_to_read); 165 writer.AppendUint32(bytes_to_read);
166 proxy_->CallMethod( 166 proxy_->CallMethod(
167 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, 167 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
168 base::Bind(&MediaTransferProtocolDaemonClientImpl::OnReadFile, 168 base::Bind(&MediaTransferProtocolDaemonClientImpl::OnReadFile,
169 weak_ptr_factory_.GetWeakPtr(), 169 weak_ptr_factory_.GetWeakPtr(),
170 callback, 170 callback,
171 error_callback)); 171 error_callback));
172 } 172 }
173 173
174 void CopyFileFromLocal(const std::string& handle,
175 const int source_file_descriptor,
176 const uint32 parent_id,
177 const std::string& file_name,
178 const CopyFileFromLocalCallback& callback,
179 const ErrorCallback& error_callback) override {
180 dbus::FileDescriptor file_descriptor(source_file_descriptor);
181 file_descriptor.CheckValidity();
182
183 dbus::MethodCall method_call(mtpd::kMtpdInterface,
184 mtpd::kCopyFileFromLocal);
185 dbus::MessageWriter writer(&method_call);
186 writer.AppendString(handle);
187 writer.AppendFileDescriptor(file_descriptor);
188 writer.AppendUint32(parent_id);
189 writer.AppendString(file_name);
190 proxy_->CallMethod(
191 &method_call, dbus::ObjectProxy::TIMEOUT_INFINITE,
192 base::Bind(&MediaTransferProtocolDaemonClientImpl::OnCopyFileFromLocal,
193 weak_ptr_factory_.GetWeakPtr(), callback, error_callback));
194 }
195
174 // MediaTransferProtocolDaemonClient override. 196 // MediaTransferProtocolDaemonClient override.
175 void ListenForChanges(const MTPStorageEventHandler& handler) override { 197 void ListenForChanges(const MTPStorageEventHandler& handler) override {
176 DCHECK(!listen_for_changes_called_); 198 DCHECK(!listen_for_changes_called_);
177 listen_for_changes_called_ = true; 199 listen_for_changes_called_ = true;
178 200
179 static const SignalEventTuple kSignalEventTuples[] = { 201 static const SignalEventTuple kSignalEventTuples[] = {
180 { mtpd::kMTPStorageAttached, true }, 202 { mtpd::kMTPStorageAttached, true },
181 { mtpd::kMTPStorageDetached, false }, 203 { mtpd::kMTPStorageDetached, false },
182 }; 204 };
183 const size_t kNumSignalEventTuples = arraysize(kSignalEventTuples); 205 const size_t kNumSignalEventTuples = arraysize(kSignalEventTuples);
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 size_t data_length = 0; 364 size_t data_length = 0;
343 dbus::MessageReader reader(response); 365 dbus::MessageReader reader(response);
344 if (!reader.PopArrayOfBytes(&data_bytes, &data_length)) { 366 if (!reader.PopArrayOfBytes(&data_bytes, &data_length)) {
345 error_callback.Run(); 367 error_callback.Run();
346 return; 368 return;
347 } 369 }
348 std::string data(reinterpret_cast<const char*>(data_bytes), data_length); 370 std::string data(reinterpret_cast<const char*>(data_bytes), data_length);
349 callback.Run(data); 371 callback.Run(data);
350 } 372 }
351 373
374 void OnCopyFileFromLocal(const CopyFileFromLocalCallback& callback,
375 const ErrorCallback& error_callback,
376 dbus::Response* response) {
377 if (!response) {
378 error_callback.Run();
379 return;
380 }
381
382 callback.Run();
383 }
384
352 // Handles MTPStorageAttached/Dettached signals and calls |handler|. 385 // Handles MTPStorageAttached/Dettached signals and calls |handler|.
353 void OnMTPStorageSignal(MTPStorageEventHandler handler, 386 void OnMTPStorageSignal(MTPStorageEventHandler handler,
354 bool is_attach, 387 bool is_attach,
355 dbus::Signal* signal) { 388 dbus::Signal* signal) {
356 dbus::MessageReader reader(signal); 389 dbus::MessageReader reader(signal);
357 std::string storage_name; 390 std::string storage_name;
358 if (!reader.PopString(&storage_name)) { 391 if (!reader.PopString(&storage_name)) {
359 LOG(ERROR) << "Invalid signal: " << signal->ToString(); 392 LOG(ERROR) << "Invalid signal: " << signal->ToString();
360 return; 393 return;
361 } 394 }
(...skipping 30 matching lines...) Expand all
392 425
393 MediaTransferProtocolDaemonClient::~MediaTransferProtocolDaemonClient() {} 426 MediaTransferProtocolDaemonClient::~MediaTransferProtocolDaemonClient() {}
394 427
395 // static 428 // static
396 MediaTransferProtocolDaemonClient* MediaTransferProtocolDaemonClient::Create( 429 MediaTransferProtocolDaemonClient* MediaTransferProtocolDaemonClient::Create(
397 dbus::Bus* bus) { 430 dbus::Bus* bus) {
398 return new MediaTransferProtocolDaemonClientImpl(bus); 431 return new MediaTransferProtocolDaemonClientImpl(bus);
399 } 432 }
400 433
401 } // namespace device 434 } // namespace device
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698