Chromium Code Reviews| Index: content/browser/bluetooth/bluetooth_dispatcher_host.cc |
| diff --git a/content/browser/bluetooth/bluetooth_dispatcher_host.cc b/content/browser/bluetooth/bluetooth_dispatcher_host.cc |
| index b440cdb5c9e84bf16aafa96a7018164b9da9264b..f0c5eb02bd35f2691c864e6e26ecf79b6e5910d7 100644 |
| --- a/content/browser/bluetooth/bluetooth_dispatcher_host.cc |
| +++ b/content/browser/bluetooth/bluetooth_dispatcher_host.cc |
| @@ -129,12 +129,55 @@ void BluetoothDispatcherHost::OnConnectGATT( |
| int request_id, |
| const std::string& device_instance_id) { |
| DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| - // TODO(ortuno): Add actual implementation of connectGATT. This needs to be |
| - // done after the "allowed devices map" is implemented. |
| + |
| + // TODO(ortuno): Right now it's pointless to check if the domain has access to |
|
scheib
2015/05/05 04:00:43
Find or file an issue for this security concept, r
|
| + // the device, because any domain can connect to any device. But once |
| + // permissions are implemented we should check that the domain has access to |
| + // the device. |
| + BluetoothAdapter::DeviceList devices = adapter_->GetDevices(); |
| + |
| + // TODO(ortuno): Instead of iterating through the devices list we should keep |
| + // a set and update it based on events from the adapter. |
|
scheib
2015/05/05 04:00:43
Probably we'll keep a map of origins, each with a
|
| + for (BluetoothAdapter::DeviceList::iterator iter = devices.begin(); |
| + iter != devices.end(); iter++) { |
| + device::BluetoothDevice* device = *iter; |
| + if (device->GetAddress() == device_instance_id) { |
| + device->CreateGattConnection( |
| + base::Bind(&BluetoothDispatcherHost::OnGATTConnectionCreated, |
| + weak_ptr_factory_.GetWeakPtr(), thread_id, request_id, |
| + device_instance_id), |
| + base::Bind(&BluetoothDispatcherHost::OnCreateGATTConnectionError, |
| + weak_ptr_factory_.GetWeakPtr(), thread_id, request_id, |
| + device_instance_id)); |
| + return; |
| + } |
| + } |
| + // TODO(ortuno): Change to NetworkError once it's implemented. |
| + Send(new BluetoothMsg_RequestDeviceError(thread_id, request_id, |
| + BluetoothError::NOT_FOUND)); |
| +} |
| + |
| +void BluetoothDispatcherHost::OnGATTConnectionCreated( |
| + int thread_id, |
| + int request_id, |
| + const std::string& device_instance_id, |
| + scoped_ptr<device::BluetoothGattConnection> connection) { |
| + // TODO(ortuno): Save the BluetoothGattConnection so we can disconnect |
| + // from it. |
| Send(new BluetoothMsg_ConnectGATTSuccess(thread_id, request_id, |
| device_instance_id)); |
| } |
| +void BluetoothDispatcherHost::OnCreateGATTConnectionError( |
| + int thread_id, |
| + int request_id, |
| + const std::string& device_instance_id, |
| + device::BluetoothDevice::ConnectErrorCode error_code) { |
| + // TODO(ortuno): Change to NetworkError once it's implemented. |
|
scheib
2015/05/05 04:00:43
As we start to implement the algorithm details, le
|
| + Send(new BluetoothMsg_RequestDeviceError(thread_id, request_id, |
| + BluetoothError::NOT_FOUND)); |
| +} |
| + |
| void BluetoothDispatcherHost::OnSetBluetoothMockDataSetForTesting( |
| const std::string& name) { |
| DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| @@ -189,6 +232,7 @@ void BluetoothDispatcherHost::OnDiscoverySessionStopped(int thread_id, |
| int request_id) { |
| DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| BluetoothAdapter::DeviceList devices = adapter_->GetDevices(); |
| + |
| if (devices.begin() == devices.end()) { |
| Send(new BluetoothMsg_RequestDeviceError(thread_id, request_id, |
| BluetoothError::NOT_FOUND)); |