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

Unified Diff: components/arc/bluetooth/bluetooth_type_converters.h

Issue 2149713002: arc: bluetooth: Add SDP host side support (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: arc: bluetooth: Add SDP host side support Created 4 years, 3 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: components/arc/bluetooth/bluetooth_type_converters.h
diff --git a/components/arc/bluetooth/bluetooth_type_converters.h b/components/arc/bluetooth/bluetooth_type_converters.h
index 5c282dae78b523e4538f03f2f11d93b259c444e0..346189680099453af03ac0f9bd84637733f8b842 100644
--- a/components/arc/bluetooth/bluetooth_type_converters.h
+++ b/components/arc/bluetooth/bluetooth_type_converters.h
@@ -12,12 +12,26 @@
#include "components/arc/common/bluetooth.mojom.h"
#include "device/bluetooth/bluetooth_gatt_service.h"
+#include "device/bluetooth/bluez/bluetooth_service_attribute_value_bluez.h"
+#include "device/bluetooth/bluez/bluetooth_service_record_bluez.h"
#include "mojo/public/cpp/bindings/type_converter.h"
namespace device {
class BluetoothUUID;
}
+namespace arc {
+// The design of SDP attribute allows the attributes in the sequence of an
+// attribute to be of sequence type. To prevent a malicious party from sending
+// extremely deep attributes to cause the stack overflow, a maximum depth is
+// enforced during the conversion between
+// bluez::BluetoothServiceAttributeValueBlueZ and
+// arc::mojom::BluetoothSdpAttributePtr. However, there is no assigned number
+// defined in SDP specification, so we choose 32 as the limit based on the
+// depths observed from various Bluetooth devices in the field.
+constexpr size_t kBluetoothSDPMaxDepth = 32;
+} // namespace arc
+
namespace mojo {
template <>
@@ -49,6 +63,44 @@ struct TypeConverter<arc::mojom::BluetoothGattStatus,
const device::BluetoothGattService::GattErrorCode& error_code);
};
+template <>
+struct TypeConverter<arc::mojom::BluetoothSdpAttributePtr,
+ bluez::BluetoothServiceAttributeValueBlueZ> {
+ static arc::mojom::BluetoothSdpAttributePtr Convert(
+ const bluez::BluetoothServiceAttributeValueBlueZ& attr_bluez,
+ size_t depth);
+ static arc::mojom::BluetoothSdpAttributePtr Convert(
+ const bluez::BluetoothServiceAttributeValueBlueZ& attr_bluez) {
+ return Convert(attr_bluez, 0);
+ }
+};
+
+template <>
+struct TypeConverter<bluez::BluetoothServiceAttributeValueBlueZ,
+ arc::mojom::BluetoothSdpAttributePtr> {
+ static bluez::BluetoothServiceAttributeValueBlueZ Convert(
+ const arc::mojom::BluetoothSdpAttributePtr& attr,
+ size_t depth);
+ static bluez::BluetoothServiceAttributeValueBlueZ Convert(
+ const arc::mojom::BluetoothSdpAttributePtr& attr) {
+ return Convert(attr, 0);
+ }
+};
+
+template <>
+struct TypeConverter<arc::mojom::BluetoothSdpRecordPtr,
+ bluez::BluetoothServiceRecordBlueZ> {
+ static arc::mojom::BluetoothSdpRecordPtr Convert(
+ const bluez::BluetoothServiceRecordBlueZ& rcd_bluez);
+};
+
+template <>
+struct TypeConverter<bluez::BluetoothServiceRecordBlueZ,
+ arc::mojom::BluetoothSdpRecordPtr> {
+ static bluez::BluetoothServiceRecordBlueZ Convert(
+ const arc::mojom::BluetoothSdpRecordPtr& rcd);
+};
+
} // namespace mojo
#endif // COMPONENTS_ARC_BLUETOOTH_BLUETOOTH_TYPE_CONVERTERS_H_
« no previous file with comments | « components/arc/bluetooth/bluetooth_struct_traits.h ('k') | components/arc/bluetooth/bluetooth_type_converters.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698