Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(538)

Side by Side Diff: content/renderer/bluetooth/bluetooth_dispatcher.h

Issue 1382743002: bluetooth: Add characteristicvaluechanged event (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@bluetooth-notifications-1
Patch Set: Add TODO Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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_CHILD_BLUETOOTH_BLUETOOTH_DISPATCHER_H_ 5 #ifndef CONTENT_CHILD_BLUETOOTH_BLUETOOTH_DISPATCHER_H_
6 #define CONTENT_CHILD_BLUETOOTH_BLUETOOTH_DISPATCHER_H_ 6 #define CONTENT_CHILD_BLUETOOTH_BLUETOOTH_DISPATCHER_H_
7 7
8 #include <map> 8 #include <map>
9 #include <queue> 9 #include <queue>
10 10
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 blink::WebBluetoothWriteValueCallbacks*); 79 blink::WebBluetoothWriteValueCallbacks*);
80 void startNotifications(const blink::WebString& characteristic_instance_id, 80 void startNotifications(const blink::WebString& characteristic_instance_id,
81 blink::WebBluetoothGATTCharacteristic* delegate, 81 blink::WebBluetoothGATTCharacteristic* delegate,
82 blink::WebBluetoothNotificationsCallbacks*); 82 blink::WebBluetoothNotificationsCallbacks*);
83 void stopNotifications(const blink::WebString& characteristic_instance_id, 83 void stopNotifications(const blink::WebString& characteristic_instance_id,
84 blink::WebBluetoothGATTCharacteristic* delegate, 84 blink::WebBluetoothGATTCharacteristic* delegate,
85 blink::WebBluetoothNotificationsCallbacks*); 85 blink::WebBluetoothNotificationsCallbacks*);
86 void characteristicObjectRemoved( 86 void characteristicObjectRemoved(
87 const blink::WebString& characteristic_instance_id, 87 const blink::WebString& characteristic_instance_id,
88 blink::WebBluetoothGATTCharacteristic* delegate); 88 blink::WebBluetoothGATTCharacteristic* delegate);
89 void registerCharacteristicObject(
90 const blink::WebString& characteristic_instance_id,
91 blink::WebBluetoothGATTCharacteristic* characteristic);
89 92
90 // WorkerThread::Observer implementation. 93 // WorkerThread::Observer implementation.
91 void WillStopCurrentWorkerThread() override; 94 void WillStopCurrentWorkerThread() override;
92 95
93 enum class NotificationsRequestType { START = 0, STOP = 1 }; 96 enum class NotificationsRequestType { START = 0, STOP = 1 };
94 97
95 private: 98 private:
96 // Notifications Queueing Notes: 99 // Notifications Queueing Notes:
97 // To avoid races and sending unnecessary IPC messages we implement 100 // To avoid races and sending unnecessary IPC messages we implement
98 // a queueing system for notification requests. When receiving 101 // a queueing system for notification requests. When receiving
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 const std::string& characteristic_instance_id, 136 const std::string& characteristic_instance_id,
134 blink::WebBluetoothGATTCharacteristic* characteristic); 137 blink::WebBluetoothGATTCharacteristic* characteristic);
135 138
136 // The following functions decide whether to resolve the request immediately 139 // The following functions decide whether to resolve the request immediately
137 // or send an IPC to change the subscription state. 140 // or send an IPC to change the subscription state.
138 // You should never call these functions if PendingNotificationRequest 141 // You should never call these functions if PendingNotificationRequest
139 // is true since there is currently another request being processed. 142 // is true since there is currently another request being processed.
140 void ResolveOrSendStartNotificationRequest(int request_id); 143 void ResolveOrSendStartNotificationRequest(int request_id);
141 void ResolveOrSendStopNotificationsRequest(int request_id); 144 void ResolveOrSendStopNotificationsRequest(int request_id);
142 145
146 // Tells BluetoothDispatcherHost that we are no longer interested in
palmer 2015/10/19 19:23:33 Nit: If this comment is 1 paragraph, fill it; othe
ortuno 2015/10/19 20:09:18 Done.
147 // events for the characteristic.
148 // TODO(ortuno): We should unregister a characteristic once there are no
149 // characteristic objects that have listeners attached.
150 // For now, we call this function when an object gets destroyed. So if there
151 // are two frames registered for notifications from the same characteristic
152 // and one of the characteristic objects gets destroyed both will stop
153 // receiving notifications.
154 // https://crbug.com/541388
155 void UnregisterCharacteristicObject(
156 const blink::WebString& characteristic_instance_id);
157
143 // IPC Handlers, see definitions in bluetooth_messages.h. 158 // IPC Handlers, see definitions in bluetooth_messages.h.
144 void OnRequestDeviceSuccess(int thread_id, 159 void OnRequestDeviceSuccess(int thread_id,
145 int request_id, 160 int request_id,
146 const BluetoothDevice& device); 161 const BluetoothDevice& device);
147 void OnRequestDeviceError(int thread_id, 162 void OnRequestDeviceError(int thread_id,
148 int request_id, 163 int request_id,
149 blink::WebBluetoothError error); 164 blink::WebBluetoothError error);
150 void OnConnectGATTSuccess(int thread_id, 165 void OnConnectGATTSuccess(int thread_id,
151 int request_id, 166 int request_id,
152 const std::string& message); 167 const std::string& message);
(...skipping 21 matching lines...) Expand all
174 blink::WebBluetoothError error); 189 blink::WebBluetoothError error);
175 void OnWriteValueSuccess(int thread_id, int request_id); 190 void OnWriteValueSuccess(int thread_id, int request_id);
176 void OnWriteValueError(int thread_id, 191 void OnWriteValueError(int thread_id,
177 int request_id, 192 int request_id,
178 blink::WebBluetoothError error); 193 blink::WebBluetoothError error);
179 void OnStartNotificationsSuccess(int thread_id, int request_id); 194 void OnStartNotificationsSuccess(int thread_id, int request_id);
180 void OnStartNotificationsError(int thread_id, 195 void OnStartNotificationsError(int thread_id,
181 int request_id, 196 int request_id,
182 blink::WebBluetoothError error); 197 blink::WebBluetoothError error);
183 void OnStopNotificationsSuccess(int thread_id, int request_id); 198 void OnStopNotificationsSuccess(int thread_id, int request_id);
199 void OnCharacteristicValueChanged(
200 int thread_id,
201 const std::string& characteristic_instance_id,
202 const std::vector<uint8_t> value);
184 203
185 scoped_refptr<ThreadSafeSender> thread_safe_sender_; 204 scoped_refptr<ThreadSafeSender> thread_safe_sender_;
186 205
187 // Map of characteristic_instance_id to a queue of Notification Requests' IDs. 206 // Map of characteristic_instance_id to a queue of Notification Requests' IDs.
188 // See "Notifications Queueing Note" above. 207 // See "Notifications Queueing Note" above.
189 std::map<std::string, std::queue<int>> notification_requests_queues_; 208 std::map<std::string, std::queue<int>> notification_requests_queues_;
190 209
191 // Tracks device requests sent to browser to match replies with callbacks. 210 // Tracks device requests sent to browser to match replies with callbacks.
192 // Owns callback objects. 211 // Owns callback objects.
193 IDMap<blink::WebBluetoothRequestDeviceCallbacks, IDMapOwnPointer> 212 IDMap<blink::WebBluetoothRequestDeviceCallbacks, IDMapOwnPointer>
(...skipping 16 matching lines...) Expand all
210 pending_write_value_requests_; 229 pending_write_value_requests_;
211 IDMap<BluetoothNotificationsRequest, IDMapOwnPointer> 230 IDMap<BluetoothNotificationsRequest, IDMapOwnPointer>
212 pending_notifications_requests_; 231 pending_notifications_requests_;
213 232
214 // Map of characteristic_instance_id to a set of 233 // Map of characteristic_instance_id to a set of
215 // WebBluetoothGATTCharacteristic pointers. Keeps track of which 234 // WebBluetoothGATTCharacteristic pointers. Keeps track of which
216 // objects are subscribed to notifications. 235 // objects are subscribed to notifications.
217 std::map<std::string, std::set<blink::WebBluetoothGATTCharacteristic*>> 236 std::map<std::string, std::set<blink::WebBluetoothGATTCharacteristic*>>
218 active_notification_subscriptions_; 237 active_notification_subscriptions_;
219 238
239 // Map of characteristic_instance_ids to WebBluetoothGATTCharacteristics.
240 // Keeps track of what characteristics have listeners.
241 // TODO(ortuno): We are assuming that there exists a single frame per
242 // dispatcher, so there could be at most one characteristic object per
243 // characteristic_instance_id. Change to a set when we support multiple
244 // frames.
245 // http://crbug.com/541388
246 std::map<std::string, blink::WebBluetoothGATTCharacteristic*>
247 active_characteristics_;
248
220 DISALLOW_COPY_AND_ASSIGN(BluetoothDispatcher); 249 DISALLOW_COPY_AND_ASSIGN(BluetoothDispatcher);
221 }; 250 };
222 251
223 } // namespace content 252 } // namespace content
224 253
225 #endif // CONTENT_CHILD_BLUETOOTH_BLUETOOTH_DISPATCHER_H_ 254 #endif // CONTENT_CHILD_BLUETOOTH_BLUETOOTH_DISPATCHER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698