| OLD | NEW | 
|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #ifndef CONTENT_BROWSER_BLUETOOTH_BLUETOOTH_DISPATCHER_HOST_H_ | 5 #ifndef CONTENT_BROWSER_BLUETOOTH_BLUETOOTH_DISPATCHER_HOST_H_ | 
| 6 #define CONTENT_BROWSER_BLUETOOTH_BLUETOOTH_DISPATCHER_HOST_H_ | 6 #define CONTENT_BROWSER_BLUETOOTH_BLUETOOTH_DISPATCHER_HOST_H_ | 
| 7 | 7 | 
| 8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" | 
| 9 #include "base/containers/scoped_ptr_map.h" | 9 #include "base/containers/scoped_ptr_map.h" | 
| 10 #include "base/id_map.h" | 10 #include "base/id_map.h" | 
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 75                              bool powered) override; | 75                              bool powered) override; | 
| 76   void DeviceAdded(device::BluetoothAdapter* adapter, | 76   void DeviceAdded(device::BluetoothAdapter* adapter, | 
| 77                    device::BluetoothDevice* device) override; | 77                    device::BluetoothDevice* device) override; | 
| 78   void DeviceRemoved(device::BluetoothAdapter* adapter, | 78   void DeviceRemoved(device::BluetoothAdapter* adapter, | 
| 79                      device::BluetoothDevice* device) override; | 79                      device::BluetoothDevice* device) override; | 
| 80   void GattCharacteristicValueChanged( | 80   void GattCharacteristicValueChanged( | 
| 81       device::BluetoothAdapter* adapter, | 81       device::BluetoothAdapter* adapter, | 
| 82       device::BluetoothGattCharacteristic* characteristic, | 82       device::BluetoothGattCharacteristic* characteristic, | 
| 83       const std::vector<uint8>& value) override; | 83       const std::vector<uint8>& value) override; | 
| 84 | 84 | 
|  | 85   // Sends an IPC to the thread informing that a the characteristic's | 
|  | 86   // value changed. | 
|  | 87   void NotifyActiveCharacteristic(int thread_id, | 
|  | 88                                   const std::string& characteristic_instance_id, | 
|  | 89                                   const std::vector<uint8>& value); | 
|  | 90 | 
| 85   // IPC Handlers, see definitions in bluetooth_messages.h. | 91   // IPC Handlers, see definitions in bluetooth_messages.h. | 
| 86   void OnRequestDevice( | 92   void OnRequestDevice( | 
| 87       int thread_id, | 93       int thread_id, | 
| 88       int request_id, | 94       int request_id, | 
| 89       int frame_routing_id, | 95       int frame_routing_id, | 
| 90       const std::vector<content::BluetoothScanFilter>& filters, | 96       const std::vector<content::BluetoothScanFilter>& filters, | 
| 91       const std::vector<device::BluetoothUUID>& optional_services); | 97       const std::vector<device::BluetoothUUID>& optional_services); | 
| 92   void OnConnectGATT(int thread_id, int request_id, | 98   void OnConnectGATT(int thread_id, int request_id, | 
| 93                      const std::string& device_instance_id); | 99                      const std::string& device_instance_id); | 
| 94   void OnGetPrimaryService(int thread_id, | 100   void OnGetPrimaryService(int thread_id, | 
| (...skipping 10 matching lines...) Expand all  Loading... | 
| 105   void OnWriteValue(int thread_id, | 111   void OnWriteValue(int thread_id, | 
| 106                     int request_id, | 112                     int request_id, | 
| 107                     const std::string& characteristic_instance_id, | 113                     const std::string& characteristic_instance_id, | 
| 108                     const std::vector<uint8_t>& value); | 114                     const std::vector<uint8_t>& value); | 
| 109   void OnStartNotifications(int thread_id, | 115   void OnStartNotifications(int thread_id, | 
| 110                             int request_id, | 116                             int request_id, | 
| 111                             const std::string& characteristic_instance_id); | 117                             const std::string& characteristic_instance_id); | 
| 112   void OnStopNotifications(int thread_id, | 118   void OnStopNotifications(int thread_id, | 
| 113                            int request_id, | 119                            int request_id, | 
| 114                            const std::string& characteristic_instance_id); | 120                            const std::string& characteristic_instance_id); | 
|  | 121   void OnRegisterCharacteristicObject( | 
|  | 122       int thread_id, | 
|  | 123       const std::string& characteristic_instance_id); | 
|  | 124   void OnUnregisterCharacteristicObject( | 
|  | 125       int thread_id, | 
|  | 126       const std::string& characteristic_instance_id); | 
| 115 | 127 | 
| 116   // Callbacks for BluetoothAdapter::StartDiscoverySession. | 128   // Callbacks for BluetoothAdapter::StartDiscoverySession. | 
| 117   void OnDiscoverySessionStarted( | 129   void OnDiscoverySessionStarted( | 
| 118       int chooser_id, | 130       int chooser_id, | 
| 119       scoped_ptr<device::BluetoothDiscoverySession> discovery_session); | 131       scoped_ptr<device::BluetoothDiscoverySession> discovery_session); | 
| 120   void OnDiscoverySessionStartedError(int chooser_id); | 132   void OnDiscoverySessionStartedError(int chooser_id); | 
| 121 | 133 | 
| 122   // BluetoothChooser::EventHandler: | 134   // BluetoothChooser::EventHandler: | 
| 123   void OnBluetoothChooserEvent(int chooser_id, | 135   void OnBluetoothChooserEvent(int chooser_id, | 
| 124                                BluetoothChooser::Event event, | 136                                BluetoothChooser::Event event, | 
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 202   // Map of characteristic_instance_id to service_instance_id. | 214   // Map of characteristic_instance_id to service_instance_id. | 
| 203   std::map<std::string, std::string> characteristic_to_service_; | 215   std::map<std::string, std::string> characteristic_to_service_; | 
| 204 | 216 | 
| 205   // Map that matches characteristic_instance_id to notify session. | 217   // Map that matches characteristic_instance_id to notify session. | 
| 206   // TODO(ortuno): Also key by thread_id once support for web workers, | 218   // TODO(ortuno): Also key by thread_id once support for web workers, | 
| 207   // is added: http://crbug.com/537372 | 219   // is added: http://crbug.com/537372 | 
| 208   base::ScopedPtrMap<std::string, | 220   base::ScopedPtrMap<std::string, | 
| 209                      scoped_ptr<device::BluetoothGattNotifySession>> | 221                      scoped_ptr<device::BluetoothGattNotifySession>> | 
| 210       characteristic_id_to_notify_session_; | 222       characteristic_id_to_notify_session_; | 
| 211 | 223 | 
|  | 224   // Map of characteristic_instance_id to a set of thread ids. | 
|  | 225   // A thread_id in the set represents a BluetoothDispatcher that | 
|  | 226   // needs to be notified of changes to the characteristic. | 
|  | 227   std::map<std::string, std::set<int>> active_characteristic_threads_; | 
|  | 228 | 
| 212   // Defines how long to scan for and how long to discover services for. | 229   // Defines how long to scan for and how long to discover services for. | 
| 213   int current_delay_time_; | 230   int current_delay_time_; | 
| 214 | 231 | 
| 215   // A BluetoothAdapter instance representing an adapter of the system. | 232   // A BluetoothAdapter instance representing an adapter of the system. | 
| 216   scoped_refptr<device::BluetoothAdapter> adapter_; | 233   scoped_refptr<device::BluetoothAdapter> adapter_; | 
| 217 | 234 | 
| 218   // Automatically stops Bluetooth discovery a set amount of time after it was | 235   // Automatically stops Bluetooth discovery a set amount of time after it was | 
| 219   // started. We have a single timer for all of Web Bluetooth because it's | 236   // started. We have a single timer for all of Web Bluetooth because it's | 
| 220   // simpler than tracking timeouts for each RequestDeviceSession individually, | 237   // simpler than tracking timeouts for each RequestDeviceSession individually, | 
| 221   // and because there's no harm in extending the length of a few discovery | 238   // and because there's no harm in extending the length of a few discovery | 
| 222   // sessions when other sessions are active. | 239   // sessions when other sessions are active. | 
| 223   base::Timer discovery_session_timer_; | 240   base::Timer discovery_session_timer_; | 
| 224 | 241 | 
| 225   // Retain BluetoothGattConnection objects to keep connections open. | 242   // Retain BluetoothGattConnection objects to keep connections open. | 
| 226   // TODO(scheib): Destroy as connections are closed. http://crbug.com/539643 | 243   // TODO(scheib): Destroy as connections are closed. http://crbug.com/539643 | 
| 227   ScopedVector<device::BluetoothGattConnection> connections_; | 244   ScopedVector<device::BluetoothGattConnection> connections_; | 
| 228 | 245 | 
| 229   // |weak_ptr_on_ui_thread_| provides weak pointers, e.g. for callbacks, and | 246   // |weak_ptr_on_ui_thread_| provides weak pointers, e.g. for callbacks, and | 
| 230   // because it exists and has been bound to the UI thread enforces that all | 247   // because it exists and has been bound to the UI thread enforces that all | 
| 231   // copies verify they are also used on the UI thread. | 248   // copies verify they are also used on the UI thread. | 
| 232   base::WeakPtr<BluetoothDispatcherHost> weak_ptr_on_ui_thread_; | 249   base::WeakPtr<BluetoothDispatcherHost> weak_ptr_on_ui_thread_; | 
| 233   base::WeakPtrFactory<BluetoothDispatcherHost> weak_ptr_factory_; | 250   base::WeakPtrFactory<BluetoothDispatcherHost> weak_ptr_factory_; | 
| 234 | 251 | 
| 235   DISALLOW_COPY_AND_ASSIGN(BluetoothDispatcherHost); | 252   DISALLOW_COPY_AND_ASSIGN(BluetoothDispatcherHost); | 
| 236 }; | 253 }; | 
| 237 | 254 | 
| 238 }  // namespace content | 255 }  // namespace content | 
| 239 | 256 | 
| 240 #endif  // CONTENT_BROWSER_BLUETOOTH_BLUETOOTH_DISPATCHER_HOST_H_ | 257 #endif  // CONTENT_BROWSER_BLUETOOTH_BLUETOOTH_DISPATCHER_HOST_H_ | 
| OLD | NEW | 
|---|