Chromium Code Reviews| Index: content/browser/bluetooth/frame_connected_bluetooth_devices.cc |
| diff --git a/content/browser/bluetooth/frame_connected_bluetooth_devices.cc b/content/browser/bluetooth/frame_connected_bluetooth_devices.cc |
| index d469a50f0e21b21d3ad3b963c5ebdad13b2a93bd..d218a9cb8b17e585dc5a17dbcca410badf783ae4 100644 |
| --- a/content/browser/bluetooth/frame_connected_bluetooth_devices.cc |
| +++ b/content/browser/bluetooth/frame_connected_bluetooth_devices.cc |
| @@ -29,13 +29,14 @@ bool FrameConnectedBluetoothDevices::IsConnectedToDeviceWithId( |
| if (connection_iter == device_id_to_connection_map_.end()) { |
| return false; |
| } |
| - DCHECK(connection_iter->second->IsConnected()); |
| + DCHECK(connection_iter->second.first->IsConnected()); |
| return true; |
| } |
| void FrameConnectedBluetoothDevices::Insert( |
| const WebBluetoothDeviceId& device_id, |
| - std::unique_ptr<device::BluetoothGattConnection> connection) { |
| + std::unique_ptr<device::BluetoothGattConnection> connection, |
| + blink::mojom::WebBluetoothServerClientAssociatedPtr client) { |
| if (device_id_to_connection_map_.find(device_id) != |
| device_id_to_connection_map_.end()) { |
| // It's possible for WebBluetoothServiceImpl to issue two successive |
| @@ -50,7 +51,8 @@ void FrameConnectedBluetoothDevices::Insert( |
| return; |
| } |
| device_address_to_id_map_[connection->GetDeviceAddress()] = device_id; |
| - device_id_to_connection_map_[device_id] = std::move(connection); |
| + device_id_to_connection_map_[device_id] = |
| + std::make_pair(std::move(connection), std::move(client)); |
| IncrementDevicesConnectedCount(); |
| } |
| @@ -61,7 +63,7 @@ void FrameConnectedBluetoothDevices::CloseConnectionToDeviceWithId( |
| return; |
| } |
| CHECK(device_address_to_id_map_.erase( |
| - connection_iter->second->GetDeviceAddress())); |
| + connection_iter->second.first->GetDeviceAddress())); |
| device_id_to_connection_map_.erase(connection_iter); |
| DecrementDevicesConnectedCount(); |
| } |
| @@ -74,8 +76,13 @@ FrameConnectedBluetoothDevices::CloseConnectionToDeviceWithAddress( |
| return base::nullopt; |
| } |
| WebBluetoothDeviceId device_id = device_address_iter->second; |
| + auto device_id_iter = device_id_to_connection_map_.find(device_id); |
| + CHECK(device_id_iter != device_id_to_connection_map_.end()); |
| + if (device_id_iter->second.second) { |
|
ortuno
2017/03/01 04:52:05
When would a device have a connection but no clien
juncai
2017/03/02 03:23:38
In the test code at:
frame_connected_bluetooth_dev
ortuno
2017/03/06 11:31:20
hmm we should try to avoid polluting prod code bec
juncai
2017/03/09 07:30:56
Done.
|
| + device_id_iter->second.second->GattServerDisconnected(); |
| + } |
| CHECK(device_address_to_id_map_.erase(device_address)); |
| - CHECK(device_id_to_connection_map_.erase(device_id)); |
| + device_id_to_connection_map_.erase(device_id); |
| DecrementDevicesConnectedCount(); |
| return base::make_optional(device_id); |
| } |