tree: 6960381f1ba651b901db03b929ff69bb88e52ac6 [path history] [tgz]
  1. BUILD.gn
  2. DEPS
  3. OWNERS
  4. README.md
  5. adapter.cc
  6. adapter.h
  7. adapter_factory.cc
  8. adapter_factory.h
  9. android/
  10. bluetooth_adapter.cc
  11. bluetooth_adapter.h
  12. bluetooth_adapter_android.cc
  13. bluetooth_adapter_android.h
  14. bluetooth_adapter_factory.cc
  15. bluetooth_adapter_factory.h
  16. bluetooth_adapter_factory_wrapper.cc
  17. bluetooth_adapter_factory_wrapper.h
  18. bluetooth_adapter_mac.h
  19. bluetooth_adapter_mac.mm
  20. bluetooth_adapter_mac_metrics.h
  21. bluetooth_adapter_mac_metrics.mm
  22. bluetooth_adapter_mac_unittest.mm
  23. bluetooth_adapter_stub.cc
  24. bluetooth_adapter_unittest.cc
  25. bluetooth_adapter_win.cc
  26. bluetooth_adapter_win.h
  27. bluetooth_adapter_win_unittest.cc
  28. bluetooth_advertisement.cc
  29. bluetooth_advertisement.h
  30. bluetooth_advertisement_unittest.cc
  31. bluetooth_channel_mac.h
  32. bluetooth_channel_mac.mm
  33. bluetooth_classic_device_mac.h
  34. bluetooth_classic_device_mac.mm
  35. bluetooth_classic_win.cc
  36. bluetooth_classic_win.h
  37. bluetooth_classic_win_fake.cc
  38. bluetooth_classic_win_fake.h
  39. bluetooth_common.h
  40. bluetooth_device.cc
  41. bluetooth_device.h
  42. bluetooth_device_android.cc
  43. bluetooth_device_android.h
  44. bluetooth_device_mac.h
  45. bluetooth_device_mac.mm
  46. bluetooth_device_unittest.cc
  47. bluetooth_device_win.cc
  48. bluetooth_device_win.h
  49. bluetooth_device_win_unittest.cc
  50. bluetooth_discovery_filter.cc
  51. bluetooth_discovery_filter.h
  52. bluetooth_discovery_filter_unittest.cc
  53. bluetooth_discovery_manager_mac.h
  54. bluetooth_discovery_manager_mac.mm
  55. bluetooth_discovery_session.cc
  56. bluetooth_discovery_session.h
  57. bluetooth_discovery_session_outcome.h
  58. bluetooth_export.h
  59. bluetooth_gatt_characteristic.cc
  60. bluetooth_gatt_characteristic.h
  61. bluetooth_gatt_connection.cc
  62. bluetooth_gatt_connection.h
  63. bluetooth_gatt_descriptor.cc
  64. bluetooth_gatt_descriptor.h
  65. bluetooth_gatt_notify_session.cc
  66. bluetooth_gatt_notify_session.h
  67. bluetooth_gatt_service.cc
  68. bluetooth_gatt_service.h
  69. bluetooth_init_win.cc
  70. bluetooth_init_win.h
  71. bluetooth_l2cap_channel_mac.h
  72. bluetooth_l2cap_channel_mac.mm
  73. bluetooth_local_gatt_characteristic.cc
  74. bluetooth_local_gatt_characteristic.h
  75. bluetooth_local_gatt_characteristic_unittest.cc
  76. bluetooth_local_gatt_descriptor.cc
  77. bluetooth_local_gatt_descriptor.h
  78. bluetooth_local_gatt_descriptor_unittest.cc
  79. bluetooth_local_gatt_service.cc
  80. bluetooth_local_gatt_service.h
  81. bluetooth_local_gatt_service_unittest.cc
  82. bluetooth_low_energy_central_manager_delegate.h
  83. bluetooth_low_energy_central_manager_delegate.mm
  84. bluetooth_low_energy_defs_win.cc
  85. bluetooth_low_energy_defs_win.h
  86. bluetooth_low_energy_device_mac.h
  87. bluetooth_low_energy_device_mac.mm
  88. bluetooth_low_energy_discovery_manager_mac.h
  89. bluetooth_low_energy_discovery_manager_mac.mm
  90. bluetooth_low_energy_peripheral_delegate.h
  91. bluetooth_low_energy_peripheral_delegate.mm
  92. bluetooth_low_energy_win.cc
  93. bluetooth_low_energy_win.h
  94. bluetooth_low_energy_win_fake.cc
  95. bluetooth_low_energy_win_fake.h
  96. bluetooth_low_energy_win_unittest.cc
  97. bluetooth_remote_gatt_characteristic.cc
  98. bluetooth_remote_gatt_characteristic.h
  99. bluetooth_remote_gatt_characteristic_android.cc
  100. bluetooth_remote_gatt_characteristic_android.h
  101. bluetooth_remote_gatt_characteristic_mac.h
  102. bluetooth_remote_gatt_characteristic_mac.mm
  103. bluetooth_remote_gatt_characteristic_unittest.cc
  104. bluetooth_remote_gatt_characteristic_win.cc
  105. bluetooth_remote_gatt_characteristic_win.h
  106. bluetooth_remote_gatt_descriptor.cc
  107. bluetooth_remote_gatt_descriptor.h
  108. bluetooth_remote_gatt_descriptor_android.cc
  109. bluetooth_remote_gatt_descriptor_android.h
  110. bluetooth_remote_gatt_descriptor_mac.h
  111. bluetooth_remote_gatt_descriptor_mac.mm
  112. bluetooth_remote_gatt_descriptor_unittest.cc
  113. bluetooth_remote_gatt_descriptor_win.cc
  114. bluetooth_remote_gatt_descriptor_win.h
  115. bluetooth_remote_gatt_service.cc
  116. bluetooth_remote_gatt_service.h
  117. bluetooth_remote_gatt_service_android.cc
  118. bluetooth_remote_gatt_service_android.h
  119. bluetooth_remote_gatt_service_mac.h
  120. bluetooth_remote_gatt_service_mac.mm
  121. bluetooth_remote_gatt_service_unittest.cc
  122. bluetooth_remote_gatt_service_win.cc
  123. bluetooth_remote_gatt_service_win.h
  124. bluetooth_rfcomm_channel_mac.h
  125. bluetooth_rfcomm_channel_mac.mm
  126. bluetooth_service_record_win.cc
  127. bluetooth_service_record_win.h
  128. bluetooth_service_record_win_unittest.cc
  129. bluetooth_socket.cc
  130. bluetooth_socket.h
  131. bluetooth_socket_mac.h
  132. bluetooth_socket_mac.mm
  133. bluetooth_socket_net.cc
  134. bluetooth_socket_net.h
  135. bluetooth_socket_thread.cc
  136. bluetooth_socket_thread.h
  137. bluetooth_socket_win.cc
  138. bluetooth_socket_win.h
  139. bluetooth_strings.grd
  140. bluetooth_task_manager_win.cc
  141. bluetooth_task_manager_win.h
  142. bluetooth_task_manager_win_unittest.cc
  143. bluetooth_uuid.cc
  144. bluetooth_uuid.h
  145. bluetooth_uuid_unittest.cc
  146. bluez/
  147. dbus/
  148. device.cc
  149. device.h
  150. device_unittest.cc
  151. discovery_session.cc
  152. discovery_session.h
  153. public/
  154. string_util_icu.cc
  155. string_util_icu.h
  156. string_util_icu_unittest.cc
  157. strings/
  158. test/
  159. uribeacon/
device/bluetooth/README.md

Bluetooth

device/bluetooth abstracts Bluetooth Classic and Low Energy features across multiple platforms.

Classic and Low Energy based profiles differ substantially. Platform implementations may support only one or the other, even though several classes have interfaces for both, e.g. BluetoothAdapter & BluetoothDevice.

ClassicLow Energy
Androidnoyes
Chrome OSyesyes
Linuxyesyes
Macyesyes
Windowssomenearly

Chrome OS and Linux are supported via BlueZ, see *_bluez files.

Mojo interfaces in public/interfaces have been started but are not ready for production use.

Maintainer History

Initial implementation OWNERS were youngki@chromium.org, keybuk@chromium.org, armansito@chromium.org, and rpaquay@chromium.org. They no longer contribute to chromium fulltime. They were responsible for support for Chrome OS Bluetooth features and the Chrome Apps APIs:

Active development in 2015 & 2016 is focused on enabling GATT features for:

Known future work is tracked in the Refactoring meta issue.

Android

The android implementation requires crossing from C++ to Java using JNI.

Object ownership is rooted in the C++ classes, starting with the Adapter, which owns Devices, Services, etc. Java counter parts interface with the Android Bluetooth objects. E.g.

For testing, the Android objects are wrapped in: android/java/src/org/chromium/device/bluetooth/Wrappers.java.
and fakes implemented in: test/android/java/src/org/chromium/device/bluetooth/Fakes.java.

Thus:

  • bluetooth_adapter_android.h owns:
    • android/.../ChromeBluetoothAdapter.java uses:
      • android/.../Wrappers.java: BluetoothAdapterWrapper
        • Which under test is a FakeBluetoothAdapter
    • bluetooth_device_android.h owns:
      • android/.../ChromeBluetoothDevice.java uses:
        • android/.../Wrappers.java: BluetoothDeviceWrapper
          • Which under test is a FakeBluetoothDevice
      • bluetooth_gatt_service_android.h owns:
        • android/.../ChromeBluetoothService.java uses:
          • android/.../Wrappers.java: BluetoothServiceWrapper
            • Which under test is a FakeBluetoothService
        • ... and so on for characteristics and descriptors.

Fake objects are controlled by bluetooth_test_android.cc.

See also: Class Diagram of Web Bluetooth through Bluetooth Android

Testing

See test/README.md

Design Documents

  • Bluetooth Notifications 2016-08-26
    • Web Bluetooth through Android implementation details, class diagram and call flow.