Index: content/renderer/bluetooth/web_bluetooth_impl.cc |
diff --git a/content/renderer/bluetooth/web_bluetooth_impl.cc b/content/renderer/bluetooth/web_bluetooth_impl.cc |
index 7e7230d8b33f92846adbda413c0d505b8898518f..2f4da53dcdf5c738f596ba78add30dfb0011624b 100644 |
--- a/content/renderer/bluetooth/web_bluetooth_impl.cc |
+++ b/content/renderer/bluetooth/web_bluetooth_impl.cc |
@@ -15,6 +15,7 @@ |
#include "content/renderer/bluetooth/bluetooth_dispatcher.h" |
#include "ipc/ipc_message.h" |
#include "mojo/public/cpp/bindings/array.h" |
+#include "third_party/WebKit/public/platform/modules/bluetooth/WebBluetoothDevice.h" |
#include "third_party/WebKit/public/platform/modules/bluetooth/WebBluetoothRemoteGATTCharacteristic.h" |
#include "third_party/WebKit/public/platform/modules/bluetooth/WebBluetoothRemoteGATTCharacteristicInit.h" |
#include "third_party/WebKit/public/platform/modules/bluetooth/WebBluetoothRemoteGATTService.h" |
@@ -40,7 +41,12 @@ void WebBluetoothImpl::requestDevice( |
void WebBluetoothImpl::connect( |
const blink::WebString& device_id, |
+ blink::WebBluetoothDevice* device, |
blink::WebBluetoothRemoteGATTServerConnectCallbacks* callbacks) { |
+ // TODO(crbug.com/495270): After the Bluetooth Tree is implemented, there will |
+ // only be one object per device. But for now we replace the previous object. |
+ connected_devices_[device_id.utf8()] = device; |
+ |
GetWebBluetoothService().RemoteServerConnect( |
mojo::String::From(device_id), |
base::Bind(&WebBluetoothImpl::OnConnectComplete, base::Unretained(this), |
@@ -48,6 +54,8 @@ void WebBluetoothImpl::connect( |
} |
void WebBluetoothImpl::disconnect(const blink::WebString& device_id) { |
+ connected_devices_.erase(device_id.utf8()); |
+ |
GetWebBluetoothService().RemoteServerDisconnect( |
mojo::String::From(device_id)); |
} |
@@ -146,6 +154,14 @@ void WebBluetoothImpl::RemoteCharacteristicValueChanged( |
value.PassStorage())); |
} |
+void WebBluetoothImpl::GattServerDisconnected(const mojo::String& device_id) { |
+ auto device_iter = connected_devices_.find(device_id); |
+ if (device_iter != connected_devices_.end()) { |
+ device_iter->second->dispatchGattServerDisconnected(); |
+ connected_devices_.erase(device_iter); |
+ } |
+} |
+ |
void WebBluetoothImpl::OnConnectComplete( |
std::unique_ptr<blink::WebBluetoothRemoteGATTServerConnectCallbacks> |
callbacks, |