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

Unified Diff: chromeos/dbus/media_transfer_protocol_daemon_client.cc

Issue 10913048: CrOS: Convert MediaTransferProtocolDaemonClient to use protobufs. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 4 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: chromeos/dbus/media_transfer_protocol_daemon_client.cc
===================================================================
--- chromeos/dbus/media_transfer_protocol_daemon_client.cc (revision 154535)
+++ chromeos/dbus/media_transfer_protocol_daemon_client.cc (working copy)
@@ -4,61 +4,18 @@
#include "chromeos/dbus/media_transfer_protocol_daemon_client.h"
-#include <map>
-
#include "base/bind.h"
-#include "base/stl_util.h"
-#include "base/stringprintf.h"
#include "dbus/bus.h"
#include "dbus/message.h"
#include "dbus/object_path.h"
#include "dbus/object_proxy.h"
+#include "chromeos/dbus/mtp_storage_info.pb.h"
#include "third_party/cros_system_api/dbus/service_constants.h"
namespace chromeos {
namespace {
-// Pops a string value when |reader| is not NULL.
-// Returns true when a value is popped, false otherwise.
-bool MaybePopString(dbus::MessageReader* reader, std::string* value) {
- if (!reader)
- return false;
- return reader->PopString(value);
-}
-
-// Pops a uint16 value when |reader| is not NULL.
-// Returns true when a value is popped, false otherwise.
-bool MaybePopUint16(dbus::MessageReader* reader, uint16* value) {
- if (!reader)
- return false;
- return reader->PopUint16(value);
-}
-
-// Pops a uint32 value when |reader| is not NULL.
-// Returns true when a value is popped, false otherwise.
-bool MaybePopUint32(dbus::MessageReader* reader, uint32* value) {
- if (!reader)
- return false;
- return reader->PopUint32(value);
-}
-
-// Pops a uint64 value when |reader| is not NULL.
-// Returns true when a value is popped, false otherwise.
-bool MaybePopUint64(dbus::MessageReader* reader, uint64* value) {
- if (!reader)
- return false;
- return reader->PopUint64(value);
-}
-
-// Pops a int64 value when |reader| is not NULL.
-// Returns true when a value is popped, false otherwise.
-bool MaybePopInt64(dbus::MessageReader* reader, int64* value) {
- if (!reader)
- return false;
- return reader->PopInt64(value);
-}
-
// The MediaTransferProtocolDaemonClient implementation.
class MediaTransferProtocolDaemonClientImpl
: public MediaTransferProtocolDaemonClient {
@@ -296,8 +253,11 @@
error_callback.Run();
return;
}
- StorageInfo storage_info(storage_name, response);
- callback.Run(storage_info);
+
+ dbus::MessageReader reader(response);
+ MtpStorageInfo protobuf;
+ reader.PopArrayOfBytesAsProto(&protobuf);
+ callback.Run(StorageInfo(storage_name, protobuf));
}
// Handles the result of OpenStorage and calls |callback| or |error_callback|.
@@ -341,17 +301,11 @@
}
std::vector<FileEntry> file_entries;
- dbus::MessageReader response_reader(response);
- dbus::MessageReader array_reader(response);
- if (!response_reader.PopArray(&array_reader)) {
- LOG(ERROR) << "Invalid response: " << response->ToString();
- error_callback.Run();
- return;
- }
- while (array_reader.HasMoreData()) {
- FileEntry entry(response);
- file_entries.push_back(entry);
- }
+ dbus::MessageReader reader(response);
+ MtpFileEntries entries_protobuf;
+ reader.PopArrayOfBytesAsProto(&entries_protobuf);
+ for (int i = 0; i < entries_protobuf.file_entries_size(); ++i)
+ file_entries.push_back(FileEntry(entries_protobuf.file_entries(i)));
callback.Run(file_entries);
}
@@ -386,8 +340,10 @@
return;
}
- FileEntry file_entry(response);
- callback.Run(file_entry);
+ dbus::MessageReader reader(response);
+ MtpFileEntry protobuf;
+ reader.PopArrayOfBytesAsProto(&protobuf);
+ callback.Run(FileEntry(protobuf));
}
// Handles MTPStorageAttached/Dettached signals and calls |handler|.
@@ -492,64 +448,26 @@
}
StorageInfo::StorageInfo(const std::string& storage_name,
- dbus::Response* response)
- : vendor_id_(0),
- product_id_(0),
- device_flags_(0),
+ const MtpStorageInfo& storage_info)
+ : vendor_(storage_info.vendor()),
+ vendor_id_(storage_info.vendor_id()),
+ product_(storage_info.product()),
+ product_id_(storage_info.product_id()),
+ device_flags_(storage_info.device_flags()),
storage_name_(storage_name),
- storage_type_(0),
- filesystem_type_(0),
- access_capability_(0),
- max_capacity_(0),
- free_space_in_bytes_(0),
- free_space_in_objects_(0) {
- InitializeFromResponse(response);
+ storage_type_(storage_info.storage_type()),
+ filesystem_type_(storage_info.filesystem_type()),
+ access_capability_(storage_info.access_capability()),
+ max_capacity_(storage_info.max_capacity()),
+ free_space_in_bytes_(storage_info.free_space_in_bytes()),
+ free_space_in_objects_(storage_info.free_space_in_objects()),
+ storage_description_(storage_info.storage_description()),
+ volume_identifier_(storage_info.volume_identifier()) {
satorux1 2012/09/01 01:03:50 do you need to copy the proto to the class? Wouldn
Lei Zhang 2012/09/04 20:09:38 Ya, we can. I just need to add the "storage name"
}
StorageInfo::~StorageInfo() {
}
-// Initializes |this| from |response| given by the mtpd service.
-void StorageInfo::InitializeFromResponse(dbus::Response* response) {
- dbus::MessageReader response_reader(response);
- dbus::MessageReader array_reader(response);
- if (!response_reader.PopArray(&array_reader)) {
- LOG(ERROR) << "Invalid response: " << response->ToString();
- return;
- }
- // TODO(thestig): Rework this code using Protocol Buffers. crosbug.com/22626
- typedef std::map<std::string, dbus::MessageReader*> PropertiesMap;
- PropertiesMap properties;
- STLValueDeleter<PropertiesMap> properties_value_deleter(&properties);
- while (array_reader.HasMoreData()) {
- dbus::MessageReader* value_reader = new dbus::MessageReader(response);
- dbus::MessageReader dict_entry_reader(response);
- std::string key;
- if (!array_reader.PopDictEntry(&dict_entry_reader) ||
- !dict_entry_reader.PopString(&key) ||
- !dict_entry_reader.PopVariant(value_reader)) {
- LOG(ERROR) << "Invalid response: " << response->ToString();
- return;
- }
- properties[key] = value_reader;
- }
- // TODO(thestig) Add enums for fields below as appropriate.
- MaybePopString(properties[mtpd::kVendor], &vendor_);
- MaybePopString(properties[mtpd::kProduct], &product_);
- MaybePopString(properties[mtpd::kStorageDescription], &storage_description_);
- MaybePopString(properties[mtpd::kVolumeIdentifier], &volume_identifier_);
- MaybePopUint16(properties[mtpd::kVendorId], &vendor_id_);
- MaybePopUint16(properties[mtpd::kProductId], &product_id_);
- MaybePopUint16(properties[mtpd::kStorageType], &storage_type_);
- MaybePopUint16(properties[mtpd::kFilesystemType], &filesystem_type_);
- MaybePopUint16(properties[mtpd::kAccessCapability], &access_capability_);
- MaybePopUint32(properties[mtpd::kDeviceFlags], &device_flags_);
- MaybePopUint64(properties[mtpd::kMaxCapacity], &max_capacity_);
- MaybePopUint64(properties[mtpd::kFreeSpaceInBytes], &free_space_in_bytes_);
- MaybePopUint64(properties[mtpd::kFreeSpaceInObjects],
- &free_space_in_objects_);
-}
-
////////////////////////////////////////////////////////////////////////////////
// FileEntry
@@ -557,78 +475,21 @@
: item_id_(0),
parent_id_(0),
file_size_(0),
- file_type_(FILE_TYPE_UNKNOWN) {
+ file_type_(MtpFileEntry_FileType_FILE_TYPE_UNKNOWN) {
}
-FileEntry::FileEntry(dbus::Response* response)
- : item_id_(0),
- parent_id_(0),
- file_size_(0),
- file_type_(FILE_TYPE_UNKNOWN) {
- InitializeFromResponse(response);
+FileEntry::FileEntry(const MtpFileEntry& entry)
+ : item_id_(entry.item_id()),
+ parent_id_(entry.parent_id()),
+ file_name_(entry.file_name()),
+ file_size_(entry.file_size()),
+ modification_time_(base::Time::FromTimeT(entry.modification_time())),
+ file_type_(entry.file_type()) {
satorux1 2012/09/01 01:03:50 ditto. Do you need FileEntry class? Can you use Mt
Lei Zhang 2012/09/04 20:09:38 Done.
}
FileEntry::~FileEntry() {
}
-// Initializes |this| from |response| given by the mtpd service.
-void FileEntry::InitializeFromResponse(dbus::Response* response) {
- dbus::MessageReader response_reader(response);
- dbus::MessageReader array_reader(response);
- if (!response_reader.PopArray(&array_reader)) {
- LOG(ERROR) << "Invalid response: " << response->ToString();
- return;
- }
- // TODO(thestig): Rework this code using Protocol Buffers. crosbug.com/22626
- typedef std::map<std::string, dbus::MessageReader*> PropertiesMap;
- PropertiesMap properties;
- STLValueDeleter<PropertiesMap> properties_value_deleter(&properties);
- while (array_reader.HasMoreData()) {
- dbus::MessageReader* value_reader = new dbus::MessageReader(response);
- dbus::MessageReader dict_entry_reader(response);
- std::string key;
- if (!array_reader.PopDictEntry(&dict_entry_reader) ||
- !dict_entry_reader.PopString(&key) ||
- !dict_entry_reader.PopVariant(value_reader)) {
- LOG(ERROR) << "Invalid response: " << response->ToString();
- return;
- }
- properties[key] = value_reader;
- }
-
- MaybePopString(properties[mtpd::kFileName], &file_name_);
- MaybePopUint32(properties[mtpd::kItemId], &item_id_);
- MaybePopUint32(properties[mtpd::kParentId], &parent_id_);
- MaybePopUint64(properties[mtpd::kFileSize], &file_size_);
-
- int64 modification_date = -1;
- if (MaybePopInt64(properties[mtpd::kModificationDate], &modification_date))
- modification_date_ = base::Time::FromTimeT(modification_date);
-
- uint16 file_type = FILE_TYPE_OTHER;
- if (MaybePopUint16(properties[mtpd::kFileType], &file_type)) {
- switch (file_type) {
- case FILE_TYPE_FOLDER:
- case FILE_TYPE_JPEG:
- case FILE_TYPE_JFIF:
- case FILE_TYPE_TIFF:
- case FILE_TYPE_BMP:
- case FILE_TYPE_GIF:
- case FILE_TYPE_PICT:
- case FILE_TYPE_PNG:
- case FILE_TYPE_WINDOWSIMAGEFORMAT:
- case FILE_TYPE_JP2:
- case FILE_TYPE_JPX:
- case FILE_TYPE_UNKNOWN:
- file_type_ = static_cast<FileType>(file_type);
- break;
- default:
- file_type_ = FILE_TYPE_OTHER;
- break;
- }
- }
-}
-
////////////////////////////////////////////////////////////////////////////////
// MediaTransferProtocolDaemonClient

Powered by Google App Engine
This is Rietveld 408576698