| Index: chrome/browser/media_transfer_protocol/media_transfer_protocol_daemon_client.cc
|
| diff --git a/chrome/browser/media_transfer_protocol/media_transfer_protocol_daemon_client.cc b/chrome/browser/media_transfer_protocol/media_transfer_protocol_daemon_client.cc
|
| deleted file mode 100644
|
| index c88df8a7bb4ba10665fc0f39740c629636dbcf27..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/media_transfer_protocol/media_transfer_protocol_daemon_client.cc
|
| +++ /dev/null
|
| @@ -1,489 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/browser/media_transfer_protocol/media_transfer_protocol_daemon_client.h"
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/memory/weak_ptr.h"
|
| -#include "chrome/browser/media_transfer_protocol/mtp_file_entry.pb.h"
|
| -#include "chrome/browser/media_transfer_protocol/mtp_storage_info.pb.h"
|
| -#include "dbus/bus.h"
|
| -#include "dbus/message.h"
|
| -#include "dbus/object_path.h"
|
| -#include "dbus/object_proxy.h"
|
| -#include "third_party/cros_system_api/dbus/service_constants.h"
|
| -
|
| -namespace chrome {
|
| -
|
| -namespace {
|
| -
|
| -const char kInvalidResponseMsg[] = "Invalid Response: ";
|
| -
|
| -// The MediaTransferProtocolDaemonClient implementation.
|
| -class MediaTransferProtocolDaemonClientImpl
|
| - : public MediaTransferProtocolDaemonClient {
|
| - public:
|
| - explicit MediaTransferProtocolDaemonClientImpl(dbus::Bus* bus)
|
| - : proxy_(bus->GetObjectProxy(
|
| - mtpd::kMtpdServiceName,
|
| - dbus::ObjectPath(mtpd::kMtpdServicePath))),
|
| - weak_ptr_factory_(this) {
|
| - }
|
| -
|
| - // MediaTransferProtocolDaemonClient override.
|
| - virtual void EnumerateStorages(const EnumerateStoragesCallback& callback,
|
| - const ErrorCallback& error_callback) OVERRIDE {
|
| - dbus::MethodCall method_call(mtpd::kMtpdInterface,
|
| - mtpd::kEnumerateStorages);
|
| - proxy_->CallMethod(
|
| - &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
|
| - base::Bind(&MediaTransferProtocolDaemonClientImpl::OnEnumerateStorages,
|
| - weak_ptr_factory_.GetWeakPtr(),
|
| - callback,
|
| - error_callback));
|
| - }
|
| -
|
| - // MediaTransferProtocolDaemonClient override.
|
| - virtual void GetStorageInfo(const std::string& storage_name,
|
| - const GetStorageInfoCallback& callback,
|
| - const ErrorCallback& error_callback) OVERRIDE {
|
| - dbus::MethodCall method_call(mtpd::kMtpdInterface, mtpd::kGetStorageInfo);
|
| - dbus::MessageWriter writer(&method_call);
|
| - writer.AppendString(storage_name);
|
| - proxy_->CallMethod(
|
| - &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
|
| - base::Bind(&MediaTransferProtocolDaemonClientImpl::OnGetStorageInfo,
|
| - weak_ptr_factory_.GetWeakPtr(),
|
| - storage_name,
|
| - callback,
|
| - error_callback));
|
| - }
|
| -
|
| - // MediaTransferProtocolDaemonClient override.
|
| - virtual void OpenStorage(const std::string& storage_name,
|
| - const std::string& mode,
|
| - const OpenStorageCallback& callback,
|
| - const ErrorCallback& error_callback) OVERRIDE {
|
| - 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);
|
| - proxy_->CallMethod(
|
| - &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
|
| - base::Bind(&MediaTransferProtocolDaemonClientImpl::OnOpenStorage,
|
| - weak_ptr_factory_.GetWeakPtr(),
|
| - callback,
|
| - error_callback));
|
| - }
|
| -
|
| - // MediaTransferProtocolDaemonClient override.
|
| - virtual void CloseStorage(const std::string& handle,
|
| - const CloseStorageCallback& callback,
|
| - const ErrorCallback& error_callback) OVERRIDE {
|
| - dbus::MethodCall method_call(mtpd::kMtpdInterface, mtpd::kCloseStorage);
|
| - dbus::MessageWriter writer(&method_call);
|
| - writer.AppendString(handle);
|
| - proxy_->CallMethod(
|
| - &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
|
| - base::Bind(&MediaTransferProtocolDaemonClientImpl::OnCloseStorage,
|
| - weak_ptr_factory_.GetWeakPtr(),
|
| - callback,
|
| - error_callback));
|
| - }
|
| -
|
| - // MediaTransferProtocolDaemonClient override.
|
| - virtual void ReadDirectoryByPath(
|
| - const std::string& handle,
|
| - const std::string& path,
|
| - const ReadDirectoryCallback& callback,
|
| - const ErrorCallback& error_callback) OVERRIDE {
|
| - dbus::MethodCall method_call(mtpd::kMtpdInterface,
|
| - mtpd::kReadDirectoryByPath);
|
| - dbus::MessageWriter writer(&method_call);
|
| - writer.AppendString(handle);
|
| - writer.AppendString(path);
|
| - proxy_->CallMethod(
|
| - &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
|
| - base::Bind(&MediaTransferProtocolDaemonClientImpl::OnReadDirectory,
|
| - weak_ptr_factory_.GetWeakPtr(),
|
| - callback,
|
| - error_callback));
|
| - }
|
| -
|
| - // MediaTransferProtocolDaemonClient override.
|
| - virtual void ReadDirectoryById(
|
| - const std::string& handle,
|
| - uint32 file_id,
|
| - const ReadDirectoryCallback& callback,
|
| - const ErrorCallback& error_callback) OVERRIDE {
|
| - dbus::MethodCall method_call(mtpd::kMtpdInterface,
|
| - mtpd::kReadDirectoryById);
|
| - dbus::MessageWriter writer(&method_call);
|
| - writer.AppendString(handle);
|
| - writer.AppendUint32(file_id);
|
| - proxy_->CallMethod(
|
| - &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
|
| - base::Bind(&MediaTransferProtocolDaemonClientImpl::OnReadDirectory,
|
| - weak_ptr_factory_.GetWeakPtr(),
|
| - callback,
|
| - error_callback));
|
| - }
|
| -
|
| - // MediaTransferProtocolDaemonClient override.
|
| - virtual void ReadFileChunkByPath(
|
| - const std::string& handle,
|
| - const std::string& path,
|
| - uint32 offset,
|
| - uint32 bytes_to_read,
|
| - const ReadFileCallback& callback,
|
| - const ErrorCallback& error_callback) OVERRIDE {
|
| - dbus::MethodCall method_call(mtpd::kMtpdInterface,
|
| - mtpd::kReadFileChunkByPath);
|
| - dbus::MessageWriter writer(&method_call);
|
| - writer.AppendString(handle);
|
| - writer.AppendString(path);
|
| - writer.AppendUint32(offset);
|
| - writer.AppendUint32(bytes_to_read);
|
| - proxy_->CallMethod(
|
| - &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
|
| - base::Bind(&MediaTransferProtocolDaemonClientImpl::OnReadFile,
|
| - weak_ptr_factory_.GetWeakPtr(),
|
| - callback,
|
| - error_callback));
|
| - }
|
| -
|
| - // MediaTransferProtocolDaemonClient override.
|
| - virtual void ReadFileChunkById(const std::string& handle,
|
| - uint32 file_id,
|
| - uint32 offset,
|
| - uint32 bytes_to_read,
|
| - const ReadFileCallback& callback,
|
| - const ErrorCallback& error_callback) OVERRIDE {
|
| - dbus::MethodCall method_call(mtpd::kMtpdInterface,
|
| - mtpd::kReadFileChunkById);
|
| - dbus::MessageWriter writer(&method_call);
|
| - writer.AppendString(handle);
|
| - writer.AppendUint32(file_id);
|
| - writer.AppendUint32(offset);
|
| - writer.AppendUint32(bytes_to_read);
|
| - proxy_->CallMethod(
|
| - &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
|
| - base::Bind(&MediaTransferProtocolDaemonClientImpl::OnReadFile,
|
| - weak_ptr_factory_.GetWeakPtr(),
|
| - callback,
|
| - error_callback));
|
| - }
|
| -
|
| - // MediaTransferProtocolDaemonClient override.
|
| - virtual void GetFileInfoByPath(const std::string& handle,
|
| - const std::string& path,
|
| - const GetFileInfoCallback& callback,
|
| - const ErrorCallback& error_callback) OVERRIDE {
|
| - dbus::MethodCall method_call(mtpd::kMtpdInterface,
|
| - mtpd::kGetFileInfoByPath);
|
| - dbus::MessageWriter writer(&method_call);
|
| - writer.AppendString(handle);
|
| - writer.AppendString(path);
|
| - proxy_->CallMethod(
|
| - &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
|
| - base::Bind(&MediaTransferProtocolDaemonClientImpl::OnGetFileInfo,
|
| - weak_ptr_factory_.GetWeakPtr(),
|
| - callback,
|
| - error_callback));
|
| - }
|
| -
|
| - // MediaTransferProtocolDaemonClient override.
|
| - virtual void GetFileInfoById(const std::string& handle,
|
| - uint32 file_id,
|
| - const GetFileInfoCallback& callback,
|
| - const ErrorCallback& error_callback) OVERRIDE {
|
| - dbus::MethodCall method_call(mtpd::kMtpdInterface, mtpd::kGetFileInfoById);
|
| - dbus::MessageWriter writer(&method_call);
|
| - writer.AppendString(handle);
|
| - writer.AppendUint32(file_id);
|
| - proxy_->CallMethod(
|
| - &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
|
| - base::Bind(&MediaTransferProtocolDaemonClientImpl::OnGetFileInfo,
|
| - weak_ptr_factory_.GetWeakPtr(),
|
| - callback,
|
| - error_callback));
|
| - }
|
| -
|
| - // MediaTransferProtocolDaemonClient override.
|
| - virtual void SetUpConnections(
|
| - const MTPStorageEventHandler& handler) OVERRIDE {
|
| - static const SignalEventTuple kSignalEventTuples[] = {
|
| - { mtpd::kMTPStorageAttached, true },
|
| - { mtpd::kMTPStorageDetached, false },
|
| - };
|
| - const size_t kNumSignalEventTuples = arraysize(kSignalEventTuples);
|
| -
|
| - for (size_t i = 0; i < kNumSignalEventTuples; ++i) {
|
| - proxy_->ConnectToSignal(
|
| - mtpd::kMtpdInterface,
|
| - kSignalEventTuples[i].signal_name,
|
| - base::Bind(&MediaTransferProtocolDaemonClientImpl::OnMTPStorageSignal,
|
| - weak_ptr_factory_.GetWeakPtr(),
|
| - handler,
|
| - kSignalEventTuples[i].is_attach),
|
| - base::Bind(&MediaTransferProtocolDaemonClientImpl::OnSignalConnected,
|
| - weak_ptr_factory_.GetWeakPtr()));
|
| - }
|
| - }
|
| -
|
| - private:
|
| - // A struct to contain a pair of signal name and attachment event type.
|
| - // Used by SetUpConnections.
|
| - struct SignalEventTuple {
|
| - const char *signal_name;
|
| - bool is_attach;
|
| - };
|
| -
|
| - // Handles the result of EnumerateStorages and calls |callback| or
|
| - // |error_callback|.
|
| - void OnEnumerateStorages(const EnumerateStoragesCallback& callback,
|
| - const ErrorCallback& error_callback,
|
| - dbus::Response* response) {
|
| - if (!response) {
|
| - error_callback.Run();
|
| - return;
|
| - }
|
| - dbus::MessageReader reader(response);
|
| - std::vector<std::string> storage_names;
|
| - if (!reader.PopArrayOfStrings(&storage_names)) {
|
| - LOG(ERROR) << kInvalidResponseMsg << response->ToString();
|
| - error_callback.Run();
|
| - return;
|
| - }
|
| - callback.Run(storage_names);
|
| - }
|
| -
|
| - // Handles the result of GetStorageInfo and calls |callback| or
|
| - // |error_callback|.
|
| - void OnGetStorageInfo(const std::string& storage_name,
|
| - const GetStorageInfoCallback& callback,
|
| - const ErrorCallback& error_callback,
|
| - dbus::Response* response) {
|
| - if (!response) {
|
| - error_callback.Run();
|
| - return;
|
| - }
|
| -
|
| - dbus::MessageReader reader(response);
|
| - MtpStorageInfo protobuf;
|
| - if (!reader.PopArrayOfBytesAsProto(&protobuf)) {
|
| - LOG(ERROR) << kInvalidResponseMsg << response->ToString();
|
| - error_callback.Run();
|
| - return;
|
| - }
|
| - callback.Run(protobuf);
|
| - }
|
| -
|
| - // Handles the result of OpenStorage and calls |callback| or |error_callback|.
|
| - void OnOpenStorage(const OpenStorageCallback& callback,
|
| - const ErrorCallback& error_callback,
|
| - dbus::Response* response) {
|
| - if (!response) {
|
| - error_callback.Run();
|
| - return;
|
| - }
|
| - dbus::MessageReader reader(response);
|
| - std::string handle;
|
| - if (!reader.PopString(&handle)) {
|
| - LOG(ERROR) << kInvalidResponseMsg << response->ToString();
|
| - error_callback.Run();
|
| - return;
|
| - }
|
| - callback.Run(handle);
|
| - }
|
| -
|
| - // Handles the result of CloseStorage and calls |callback| or
|
| - // |error_callback|.
|
| - void OnCloseStorage(const CloseStorageCallback& callback,
|
| - const ErrorCallback& error_callback,
|
| - dbus::Response* response) {
|
| - if (!response) {
|
| - error_callback.Run();
|
| - return;
|
| - }
|
| - callback.Run();
|
| - }
|
| -
|
| - // Handles the result of ReadDirectoryByPath/Id and calls |callback| or
|
| - // |error_callback|.
|
| - void OnReadDirectory(const ReadDirectoryCallback& callback,
|
| - const ErrorCallback& error_callback,
|
| - dbus::Response* response) {
|
| - if (!response) {
|
| - error_callback.Run();
|
| - return;
|
| - }
|
| -
|
| - std::vector<MtpFileEntry> file_entries;
|
| - dbus::MessageReader reader(response);
|
| - MtpFileEntries entries_protobuf;
|
| - if (!reader.PopArrayOfBytesAsProto(&entries_protobuf)) {
|
| - LOG(ERROR) << kInvalidResponseMsg << response->ToString();
|
| - error_callback.Run();
|
| - return;
|
| - }
|
| -
|
| - for (int i = 0; i < entries_protobuf.file_entries_size(); ++i)
|
| - file_entries.push_back(entries_protobuf.file_entries(i));
|
| - callback.Run(file_entries);
|
| - }
|
| -
|
| - // Handles the result of ReadFileChunkByPath/Id and calls |callback| or
|
| - // |error_callback|.
|
| - void OnReadFile(const ReadFileCallback& callback,
|
| - const ErrorCallback& error_callback,
|
| - dbus::Response* response) {
|
| - if (!response) {
|
| - error_callback.Run();
|
| - return;
|
| - }
|
| -
|
| - uint8* data_bytes = NULL;
|
| - size_t data_length = 0;
|
| - dbus::MessageReader reader(response);
|
| - if (!reader.PopArrayOfBytes(&data_bytes, &data_length)) {
|
| - error_callback.Run();
|
| - return;
|
| - }
|
| - std::string data(reinterpret_cast<const char*>(data_bytes), data_length);
|
| - callback.Run(data);
|
| - }
|
| -
|
| - // Handles the result of GetFileInfoByPath/Id and calls |callback| or
|
| - // |error_callback|.
|
| - void OnGetFileInfo(const GetFileInfoCallback& callback,
|
| - const ErrorCallback& error_callback,
|
| - dbus::Response* response) {
|
| - if (!response) {
|
| - error_callback.Run();
|
| - return;
|
| - }
|
| -
|
| - dbus::MessageReader reader(response);
|
| - MtpFileEntry protobuf;
|
| - if (!reader.PopArrayOfBytesAsProto(&protobuf)) {
|
| - LOG(ERROR) << kInvalidResponseMsg << response->ToString();
|
| - error_callback.Run();
|
| - return;
|
| - }
|
| - callback.Run(protobuf);
|
| - }
|
| -
|
| - // Handles MTPStorageAttached/Dettached signals and calls |handler|.
|
| - void OnMTPStorageSignal(MTPStorageEventHandler handler,
|
| - bool is_attach,
|
| - dbus::Signal* signal) {
|
| - dbus::MessageReader reader(signal);
|
| - std::string storage_name;
|
| - if (!reader.PopString(&storage_name)) {
|
| - LOG(ERROR) << "Invalid signal: " << signal->ToString();
|
| - return;
|
| - }
|
| - DCHECK(!storage_name.empty());
|
| - handler.Run(is_attach, storage_name);
|
| - }
|
| -
|
| -
|
| - // Handles the result of signal connection setup.
|
| - void OnSignalConnected(const std::string& interface,
|
| - const std::string& signal,
|
| - bool succeeded) {
|
| - LOG_IF(ERROR, !succeeded) << "Connect to " << interface << " "
|
| - << signal << " failed.";
|
| - }
|
| -
|
| - dbus::ObjectProxy* proxy_;
|
| -
|
| - // Note: This should remain the last member so it'll be destroyed and
|
| - // invalidate its weak pointers before any other members are destroyed.
|
| - base::WeakPtrFactory<MediaTransferProtocolDaemonClientImpl> weak_ptr_factory_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(MediaTransferProtocolDaemonClientImpl);
|
| -};
|
| -
|
| -// A stub implementaion of MediaTransferProtocolDaemonClient.
|
| -class MediaTransferProtocolDaemonClientStubImpl
|
| - : public MediaTransferProtocolDaemonClient {
|
| - public:
|
| - MediaTransferProtocolDaemonClientStubImpl() {}
|
| - virtual ~MediaTransferProtocolDaemonClientStubImpl() {}
|
| -
|
| - virtual void EnumerateStorages(
|
| - const EnumerateStoragesCallback& callback,
|
| - const ErrorCallback& error_callback) OVERRIDE {}
|
| - virtual void GetStorageInfo(
|
| - const std::string& storage_name,
|
| - const GetStorageInfoCallback& callback,
|
| - const ErrorCallback& error_callback) OVERRIDE {}
|
| - virtual void OpenStorage(const std::string& storage_name,
|
| - const std::string& mode,
|
| - const OpenStorageCallback& callback,
|
| - const ErrorCallback& error_callback) OVERRIDE {}
|
| - virtual void CloseStorage(const std::string& handle,
|
| - const CloseStorageCallback& callback,
|
| - const ErrorCallback& error_callback) OVERRIDE {}
|
| - virtual void ReadDirectoryByPath(
|
| - const std::string& handle,
|
| - const std::string& path,
|
| - const ReadDirectoryCallback& callback,
|
| - const ErrorCallback& error_callback) OVERRIDE {}
|
| - virtual void ReadDirectoryById(
|
| - const std::string& handle,
|
| - uint32 file_id,
|
| - const ReadDirectoryCallback& callback,
|
| - const ErrorCallback& error_callback) OVERRIDE {}
|
| - virtual void ReadFileChunkByPath(
|
| - const std::string& handle,
|
| - const std::string& path,
|
| - uint32 offset,
|
| - uint32 length,
|
| - const ReadFileCallback& callback,
|
| - const ErrorCallback& error_callback) OVERRIDE {}
|
| - virtual void ReadFileChunkById(
|
| - const std::string& handle,
|
| - uint32 file_id,
|
| - uint32 offset,
|
| - uint32 length,
|
| - const ReadFileCallback& callback,
|
| - const ErrorCallback& error_callback) OVERRIDE {}
|
| - virtual void GetFileInfoByPath(
|
| - const std::string& handle,
|
| - const std::string& path,
|
| - const GetFileInfoCallback& callback,
|
| - const ErrorCallback& error_callback) OVERRIDE {}
|
| - virtual void GetFileInfoById(const std::string& handle,
|
| - uint32 file_id,
|
| - const GetFileInfoCallback& callback,
|
| - const ErrorCallback& error_callback) OVERRIDE {}
|
| - virtual void SetUpConnections(
|
| - const MTPStorageEventHandler& handler) OVERRIDE {}
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(MediaTransferProtocolDaemonClientStubImpl);
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -// MediaTransferProtocolDaemonClient
|
| -
|
| -MediaTransferProtocolDaemonClient::MediaTransferProtocolDaemonClient() {}
|
| -
|
| -MediaTransferProtocolDaemonClient::~MediaTransferProtocolDaemonClient() {}
|
| -
|
| -// static
|
| -MediaTransferProtocolDaemonClient*
|
| -MediaTransferProtocolDaemonClient::Create(dbus::Bus* bus, bool is_stub) {
|
| - if (is_stub)
|
| - return new MediaTransferProtocolDaemonClientStubImpl();
|
| - return new MediaTransferProtocolDaemonClientImpl(bus);
|
| -}
|
| -
|
| -} // namespace chrome
|
|
|