Index: components/arc/bluetooth/bluetooth_struct_traits.h |
diff --git a/components/arc/bluetooth/bluetooth_struct_traits.h b/components/arc/bluetooth/bluetooth_struct_traits.h |
index 2178fc1365103a6822c674453ac619a97ee65449..d72006c9f1ecc22d737ad4c447cb5ab722a0ff7a 100644 |
--- a/components/arc/bluetooth/bluetooth_struct_traits.h |
+++ b/components/arc/bluetooth/bluetooth_struct_traits.h |
@@ -5,8 +5,15 @@ |
#ifndef COMPONENTS_ARC_BLUETOOTH_BLUETOOTH_STRUCT_TRAITS_H_ |
#define COMPONENTS_ARC_BLUETOOTH_BLUETOOTH_STRUCT_TRAITS_H_ |
+#include <map> |
+#include <utility> |
+#include <vector> |
+ |
#include "components/arc/common/bluetooth.mojom.h" |
#include "device/bluetooth/bluetooth_common.h" |
+#include "device/bluetooth/bluez/bluetooth_service_attribute_value_bluez.h" |
+#include "device/bluetooth/bluez/bluetooth_service_record_bluez.h" |
+#include "ipc/ipc_message_utils.h" |
namespace mojo { |
@@ -49,6 +56,65 @@ struct EnumTraits<arc::mojom::BluetoothDeviceType, |
} |
}; |
+template <> |
+struct EnumTraits<arc::mojom::BluetoothSdpAttrType, |
+ bluez::BluetoothServiceAttributeValueBlueZ::Type> { |
+ static arc::mojom::BluetoothSdpAttrType ToMojom( |
+ bluez::BluetoothServiceAttributeValueBlueZ::Type input); |
+ static bool FromMojom( |
+ arc::mojom::BluetoothSdpAttrType input, |
+ bluez::BluetoothServiceAttributeValueBlueZ::Type* output); |
+}; |
+ |
+template <> |
+struct StructTraits<arc::mojom::BluetoothSdpServiceAttr, |
+ bluez::BluetoothServiceAttributeValueBlueZ> { |
+ static bluez::BluetoothServiceAttributeValueBlueZ::Type type( |
+ const bluez::BluetoothServiceAttributeValueBlueZ& value) { |
+ return value.type(); |
+ } |
+ |
+ static size_t type_size( |
+ const bluez::BluetoothServiceAttributeValueBlueZ& value) { |
+ return value.size(); |
+ } |
+ |
+ static const base::ListValue& value( |
+ const bluez::BluetoothServiceAttributeValueBlueZ& value) { |
+ base::ListValue list_value; |
+ list_value.Append(value.value().CreateDeepCopy()); |
+ return std::move(list_value); |
dcheng
2016/08/20 02:39:19
Nit: std::move() has no effect here.
More problem
yzshen1
2016/08/22 23:42:14
Ah, I think that is because we don't have any IPC:
Miao
2016/08/25 16:51:36
Added the SetUpContext / TearDownContext feature f
|
+ } |
+ |
+ static const std::vector<bluez::BluetoothServiceAttributeValueBlueZ>& |
+ sequence(const bluez::BluetoothServiceAttributeValueBlueZ& value) { |
+ return value.sequence(); |
+ } |
+ |
+ static bool Read(arc::mojom::BluetoothSdpServiceAttrDataView data, |
+ bluez::BluetoothServiceAttributeValueBlueZ* output); |
+}; |
+ |
+template <> |
+struct StructTraits<arc::mojom::BluetoothSdpRecord, |
+ bluez::BluetoothServiceRecordBlueZ> { |
+ static const std::map<uint16_t, bluez::BluetoothServiceAttributeValueBlueZ> |
+ attrs(const bluez::BluetoothServiceRecordBlueZ& value) { |
+ std::map<uint16_t, bluez::BluetoothServiceAttributeValueBlueZ> attributes; |
dcheng
2016/08/20 02:39:19
Similar comment here: if we really need to create
Miao
2016/08/25 16:51:36
Done.
|
+ std::vector<uint16_t> attribute_ids = value.GetAttributeIds(); |
+ |
+ for (auto it : attribute_ids) { |
+ attributes[it] = std::move(bluez::BluetoothServiceAttributeValueBlueZ( |
dcheng
2016/08/20 02:39:19
Note that std::move() here doesn't have an effect,
Miao
2016/08/25 16:51:36
Done.
|
+ value.GetAttributeValue(it))); |
+ } |
+ |
+ return attributes; |
+ } |
+ |
+ static bool Read(arc::mojom::BluetoothSdpRecordDataView data, |
+ bluez::BluetoothServiceRecordBlueZ* output); |
+}; |
+ |
} // namespace mojo |
#endif // COMPONENTS_ARC_BLUETOOTH_BLUETOOTH_STRUCT_TRAITS_H_ |