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

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

Issue 1775953004: bluetooth: Move writeValue to mojo (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@my-origin
Patch Set: Address scheib's comments Created 4 years, 8 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 #include "content/renderer/bluetooth/bluetooth_dispatcher.h" 5 #include "content/renderer/bluetooth/bluetooth_dispatcher.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/lazy_instance.h" 9 #include "base/lazy_instance.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 BluetoothCharacteristicsRequest( 69 BluetoothCharacteristicsRequest(
70 blink::WebString service_instance_id, 70 blink::WebString service_instance_id,
71 blink::WebBluetoothGetCharacteristicsCallbacks* callbacks) 71 blink::WebBluetoothGetCharacteristicsCallbacks* callbacks)
72 : service_instance_id(service_instance_id), callbacks(callbacks) {} 72 : service_instance_id(service_instance_id), callbacks(callbacks) {}
73 ~BluetoothCharacteristicsRequest() {} 73 ~BluetoothCharacteristicsRequest() {}
74 74
75 blink::WebString service_instance_id; 75 blink::WebString service_instance_id;
76 scoped_ptr<blink::WebBluetoothGetCharacteristicsCallbacks> callbacks; 76 scoped_ptr<blink::WebBluetoothGetCharacteristicsCallbacks> callbacks;
77 }; 77 };
78 78
79 // Struct that holds a pending WriteValue request.
80 struct BluetoothWriteValueRequest {
81 BluetoothWriteValueRequest(const blink::WebVector<uint8_t>& value,
82 blink::WebBluetoothWriteValueCallbacks* callbacks)
83 : value(value), callbacks(callbacks) {}
84 ~BluetoothWriteValueRequest() {}
85
86 const blink::WebVector<uint8_t> value;
87 scoped_ptr<blink::WebBluetoothWriteValueCallbacks> callbacks;
88 };
89
90 // Struct that holds a pending Start/StopNotifications request. 79 // Struct that holds a pending Start/StopNotifications request.
91 struct BluetoothNotificationsRequest { 80 struct BluetoothNotificationsRequest {
92 BluetoothNotificationsRequest( 81 BluetoothNotificationsRequest(
93 int frame_routing_id, 82 int frame_routing_id,
94 const std::string characteristic_instance_id, 83 const std::string characteristic_instance_id,
95 blink::WebBluetoothRemoteGATTCharacteristic* characteristic, 84 blink::WebBluetoothRemoteGATTCharacteristic* characteristic,
96 blink::WebBluetoothNotificationsCallbacks* callbacks, 85 blink::WebBluetoothNotificationsCallbacks* callbacks,
97 NotificationsRequestType type) 86 NotificationsRequestType type)
98 : frame_routing_id(frame_routing_id), 87 : frame_routing_id(frame_routing_id),
99 characteristic_instance_id(characteristic_instance_id), 88 characteristic_instance_id(characteristic_instance_id),
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 IPC_MESSAGE_HANDLER(BluetoothMsg_GetCharacteristicError, 180 IPC_MESSAGE_HANDLER(BluetoothMsg_GetCharacteristicError,
192 OnGetCharacteristicError); 181 OnGetCharacteristicError);
193 IPC_MESSAGE_HANDLER(BluetoothMsg_GetCharacteristicsSuccess, 182 IPC_MESSAGE_HANDLER(BluetoothMsg_GetCharacteristicsSuccess,
194 OnGetCharacteristicsSuccess); 183 OnGetCharacteristicsSuccess);
195 IPC_MESSAGE_HANDLER(BluetoothMsg_GetCharacteristicsError, 184 IPC_MESSAGE_HANDLER(BluetoothMsg_GetCharacteristicsError,
196 OnGetCharacteristicsError); 185 OnGetCharacteristicsError);
197 IPC_MESSAGE_HANDLER(BluetoothMsg_ReadCharacteristicValueSuccess, 186 IPC_MESSAGE_HANDLER(BluetoothMsg_ReadCharacteristicValueSuccess,
198 OnReadValueSuccess); 187 OnReadValueSuccess);
199 IPC_MESSAGE_HANDLER(BluetoothMsg_ReadCharacteristicValueError, 188 IPC_MESSAGE_HANDLER(BluetoothMsg_ReadCharacteristicValueError,
200 OnReadValueError); 189 OnReadValueError);
201 IPC_MESSAGE_HANDLER(BluetoothMsg_WriteCharacteristicValueSuccess,
202 OnWriteValueSuccess);
203 IPC_MESSAGE_HANDLER(BluetoothMsg_WriteCharacteristicValueError,
204 OnWriteValueError);
205 IPC_MESSAGE_HANDLER(BluetoothMsg_StartNotificationsSuccess, 190 IPC_MESSAGE_HANDLER(BluetoothMsg_StartNotificationsSuccess,
206 OnStartNotificationsSuccess) 191 OnStartNotificationsSuccess)
207 IPC_MESSAGE_HANDLER(BluetoothMsg_StartNotificationsError, 192 IPC_MESSAGE_HANDLER(BluetoothMsg_StartNotificationsError,
208 OnStartNotificationsError) 193 OnStartNotificationsError)
209 IPC_MESSAGE_HANDLER(BluetoothMsg_StopNotificationsSuccess, 194 IPC_MESSAGE_HANDLER(BluetoothMsg_StopNotificationsSuccess,
210 OnStopNotificationsSuccess) 195 OnStopNotificationsSuccess)
211 IPC_MESSAGE_HANDLER(BluetoothMsg_CharacteristicValueChanged, 196 IPC_MESSAGE_HANDLER(BluetoothMsg_CharacteristicValueChanged,
212 OnCharacteristicValueChanged) 197 OnCharacteristicValueChanged)
213 IPC_MESSAGE_UNHANDLED(handled = false) 198 IPC_MESSAGE_UNHANDLED(handled = false)
214 IPC_END_MESSAGE_MAP() 199 IPC_END_MESSAGE_MAP()
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 void BluetoothDispatcher::readValue( 284 void BluetoothDispatcher::readValue(
300 int frame_routing_id, 285 int frame_routing_id,
301 const blink::WebString& characteristic_instance_id, 286 const blink::WebString& characteristic_instance_id,
302 blink::WebBluetoothReadValueCallbacks* callbacks) { 287 blink::WebBluetoothReadValueCallbacks* callbacks) {
303 int request_id = pending_read_value_requests_.Add(callbacks); 288 int request_id = pending_read_value_requests_.Add(callbacks);
304 Send(new BluetoothHostMsg_ReadValue(CurrentWorkerId(), request_id, 289 Send(new BluetoothHostMsg_ReadValue(CurrentWorkerId(), request_id,
305 frame_routing_id, 290 frame_routing_id,
306 characteristic_instance_id.utf8())); 291 characteristic_instance_id.utf8()));
307 } 292 }
308 293
309 void BluetoothDispatcher::writeValue(
310 int frame_routing_id,
311 const blink::WebString& characteristic_instance_id,
312 const blink::WebVector<uint8_t>& value,
313 blink::WebBluetoothWriteValueCallbacks* callbacks) {
314 int request_id = pending_write_value_requests_.Add(
315 new BluetoothWriteValueRequest(value, callbacks));
316 Send(new BluetoothHostMsg_WriteValue(
317 CurrentWorkerId(), request_id, frame_routing_id,
318 characteristic_instance_id.utf8(),
319 std::vector<uint8_t>(value.begin(), value.end())));
320 }
321
322 void BluetoothDispatcher::startNotifications( 294 void BluetoothDispatcher::startNotifications(
323 int frame_routing_id, 295 int frame_routing_id,
324 const blink::WebString& characteristic_instance_id, 296 const blink::WebString& characteristic_instance_id,
325 blink::WebBluetoothRemoteGATTCharacteristic* characteristic, 297 blink::WebBluetoothRemoteGATTCharacteristic* characteristic,
326 blink::WebBluetoothNotificationsCallbacks* callbacks) { 298 blink::WebBluetoothNotificationsCallbacks* callbacks) {
327 int request_id = QueueNotificationRequest( 299 int request_id = QueueNotificationRequest(
328 frame_routing_id, characteristic_instance_id.utf8(), characteristic, 300 frame_routing_id, characteristic_instance_id.utf8(), characteristic,
329 callbacks, NotificationsRequestType::START); 301 callbacks, NotificationsRequestType::START);
330 // The Notification subscription's state can change after a request 302 // The Notification subscription's state can change after a request
331 // finishes. To avoid resolving with a soon-to-be-invalid state we queue 303 // finishes. To avoid resolving with a soon-to-be-invalid state we queue
(...skipping 428 matching lines...) Expand 10 before | Expand all | Expand 10 after
760 int request_id, 732 int request_id,
761 WebBluetoothError error) { 733 WebBluetoothError error) {
762 DCHECK(pending_read_value_requests_.Lookup(request_id)) << request_id; 734 DCHECK(pending_read_value_requests_.Lookup(request_id)) << request_id;
763 735
764 pending_read_value_requests_.Lookup(request_id) 736 pending_read_value_requests_.Lookup(request_id)
765 ->onError(WebBluetoothError(error)); 737 ->onError(WebBluetoothError(error));
766 738
767 pending_read_value_requests_.Remove(request_id); 739 pending_read_value_requests_.Remove(request_id);
768 } 740 }
769 741
770 void BluetoothDispatcher::OnWriteValueSuccess(int thread_id, int request_id) {
771 DCHECK(pending_write_value_requests_.Lookup(request_id)) << request_id;
772
773 BluetoothWriteValueRequest* request =
774 pending_write_value_requests_.Lookup(request_id);
775 request->callbacks->onSuccess(request->value);
776
777 pending_write_value_requests_.Remove(request_id);
778 }
779
780 void BluetoothDispatcher::OnWriteValueError(int thread_id,
781 int request_id,
782 WebBluetoothError error) {
783 DCHECK(pending_write_value_requests_.Lookup(request_id)) << request_id;
784
785 BluetoothWriteValueRequest* request =
786 pending_write_value_requests_.Lookup(request_id);
787 request->callbacks->onError(WebBluetoothError(error));
788
789 pending_write_value_requests_.Remove(request_id);
790 }
791
792 void BluetoothDispatcher::OnStartNotificationsSuccess(int thread_id, 742 void BluetoothDispatcher::OnStartNotificationsSuccess(int thread_id,
793 int request_id) { 743 int request_id) {
794 DCHECK(pending_notifications_requests_.Lookup(request_id)) << request_id; 744 DCHECK(pending_notifications_requests_.Lookup(request_id)) << request_id;
795 745
796 BluetoothNotificationsRequest* request = 746 BluetoothNotificationsRequest* request =
797 pending_notifications_requests_.Lookup(request_id); 747 pending_notifications_requests_.Lookup(request_id);
798 748
799 DCHECK(notification_requests_queues_[request->characteristic_instance_id] 749 DCHECK(notification_requests_queues_[request->characteristic_instance_id]
800 .front() == request_id); 750 .front() == request_id);
801 751
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
870 int thread_id, 820 int thread_id,
871 const std::string& characteristic_instance_id, 821 const std::string& characteristic_instance_id,
872 const std::vector<uint8_t> new_value) { 822 const std::vector<uint8_t> new_value) {
873 auto active_iter = active_characteristics_.find(characteristic_instance_id); 823 auto active_iter = active_characteristics_.find(characteristic_instance_id);
874 if (active_iter != active_characteristics_.end()) { 824 if (active_iter != active_characteristics_.end()) {
875 active_iter->second->dispatchCharacteristicValueChanged(new_value); 825 active_iter->second->dispatchCharacteristicValueChanged(new_value);
876 } 826 }
877 } 827 }
878 828
879 } // namespace content 829 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/bluetooth/bluetooth_dispatcher.h ('k') | content/renderer/bluetooth/web_bluetooth_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698