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

Side by Side Diff: content/browser/bluetooth/web_bluetooth_service_impl.cc

Issue 2157493003: Revert of bluetooth: Use WebBluetoothDeviceId instead of string (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@bluetooth-uuid-typemap
Patch Set: Created 4 years, 5 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
« no previous file with comments | « content/browser/bluetooth/web_bluetooth_service_impl.h ('k') | content/common/DEPS » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 // ID Not In Map Note: 5 // ID Not In Map Note:
6 // A service, characteristic, or descriptor ID not in the corresponding 6 // A service, characteristic, or descriptor ID not in the corresponding
7 // WebBluetoothServiceImpl map [service_id_to_device_address_, 7 // WebBluetoothServiceImpl map [service_id_to_device_address_,
8 // characteristic_id_to_service_id_, descriptor_to_characteristic_] implies a 8 // characteristic_id_to_service_id_, descriptor_to_characteristic_] implies a
9 // hostile renderer because a renderer obtains the corresponding ID from this 9 // hostile renderer because a renderer obtains the corresponding ID from this
10 // class and it will be added to the map at that time. 10 // class and it will be added to the map at that time.
11 11
12 #include "content/browser/bluetooth/web_bluetooth_service_impl.h" 12 #include "content/browser/bluetooth/web_bluetooth_service_impl.h"
13 13
14 #include <algorithm> 14 #include <algorithm>
15 15
16 #include "base/strings/utf_string_conversions.h" 16 #include "base/strings/utf_string_conversions.h"
17 #include "base/threading/thread_task_runner_handle.h" 17 #include "base/threading/thread_task_runner_handle.h"
18 #include "content/browser/bluetooth/bluetooth_blacklist.h" 18 #include "content/browser/bluetooth/bluetooth_blacklist.h"
19 #include "content/browser/bluetooth/bluetooth_device_chooser_controller.h" 19 #include "content/browser/bluetooth/bluetooth_device_chooser_controller.h"
20 #include "content/browser/bluetooth/bluetooth_metrics.h" 20 #include "content/browser/bluetooth/bluetooth_metrics.h"
21 #include "content/browser/bluetooth/frame_connected_bluetooth_devices.h" 21 #include "content/browser/bluetooth/frame_connected_bluetooth_devices.h"
22 #include "content/browser/renderer_host/render_process_host_impl.h" 22 #include "content/browser/renderer_host/render_process_host_impl.h"
23 #include "content/common/bluetooth/web_bluetooth_device_id.h"
24 #include "content/public/browser/browser_thread.h" 23 #include "content/public/browser/browser_thread.h"
25 #include "content/public/browser/navigation_handle.h" 24 #include "content/public/browser/navigation_handle.h"
26 #include "content/public/browser/render_frame_host.h" 25 #include "content/public/browser/render_frame_host.h"
27 #include "content/public/browser/web_contents.h" 26 #include "content/public/browser/web_contents.h"
28 #include "device/bluetooth/bluetooth_adapter_factory_wrapper.h" 27 #include "device/bluetooth/bluetooth_adapter_factory_wrapper.h"
29 #include "device/bluetooth/bluetooth_remote_gatt_characteristic.h" 28 #include "device/bluetooth/bluetooth_remote_gatt_characteristic.h"
30 29
31 using device::BluetoothAdapterFactoryWrapper; 30 using device::BluetoothAdapterFactoryWrapper;
32 using device::BluetoothUUID; 31 using device::BluetoothUUID;
33 32
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 VLOG(1) << "Adding device to device chooser controller: " 230 VLOG(1) << "Adding device to device chooser controller: "
232 << device->GetAddress(); 231 << device->GetAddress();
233 device_chooser_controller_->AddFilteredDevice(*device); 232 device_chooser_controller_->AddFilteredDevice(*device);
234 } 233 }
235 } 234 }
236 235
237 void WebBluetoothServiceImpl::DeviceChanged(device::BluetoothAdapter* adapter, 236 void WebBluetoothServiceImpl::DeviceChanged(device::BluetoothAdapter* adapter,
238 device::BluetoothDevice* device) { 237 device::BluetoothDevice* device) {
239 DCHECK_CURRENTLY_ON(BrowserThread::UI); 238 DCHECK_CURRENTLY_ON(BrowserThread::UI);
240 if (!device->IsGattConnected()) { 239 if (!device->IsGattConnected()) {
241 base::Optional<WebBluetoothDeviceId> device_id = 240 std::string device_id =
242 connected_devices_->CloseConnectionToDeviceWithAddress( 241 connected_devices_->CloseConnectionToDeviceWithAddress(
243 device->GetAddress()); 242 device->GetAddress());
244 if (device_id && client_) { 243 if (!device_id.empty()) {
245 client_->GattServerDisconnected(device_id.value()); 244 if (client_) {
245 client_->GattServerDisconnected(device_id);
246 }
246 } 247 }
247 } 248 }
248 } 249 }
249 250
250 void WebBluetoothServiceImpl::GattServicesDiscovered( 251 void WebBluetoothServiceImpl::GattServicesDiscovered(
251 device::BluetoothAdapter* adapter, 252 device::BluetoothAdapter* adapter,
252 device::BluetoothDevice* device) { 253 device::BluetoothDevice* device) {
253 DCHECK_CURRENTLY_ON(BrowserThread::UI); 254 DCHECK_CURRENTLY_ON(BrowserThread::UI);
254 const std::string& device_address = device->GetAddress(); 255 const std::string& device_address = device->GetAddress();
255 VLOG(1) << "Services discovered for device: " << device_address; 256 VLOG(1) << "Services discovered for device: " << device_address;
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 } 324 }
324 RecordRequestDeviceOutcome(UMARequestDeviceOutcome::NO_BLUETOOTH_ADAPTER); 325 RecordRequestDeviceOutcome(UMARequestDeviceOutcome::NO_BLUETOOTH_ADAPTER);
325 callback.Run(blink::mojom::WebBluetoothError::NO_BLUETOOTH_ADAPTER, 326 callback.Run(blink::mojom::WebBluetoothError::NO_BLUETOOTH_ADAPTER,
326 nullptr /* device */); 327 nullptr /* device */);
327 return; 328 return;
328 } 329 }
329 RequestDeviceImpl(std::move(options), callback, GetAdapter()); 330 RequestDeviceImpl(std::move(options), callback, GetAdapter());
330 } 331 }
331 332
332 void WebBluetoothServiceImpl::RemoteServerConnect( 333 void WebBluetoothServiceImpl::RemoteServerConnect(
333 const WebBluetoothDeviceId& device_id, 334 const mojo::String& device_id,
334 const RemoteServerConnectCallback& callback) { 335 const RemoteServerConnectCallback& callback) {
335 DCHECK_CURRENTLY_ON(BrowserThread::UI); 336 DCHECK_CURRENTLY_ON(BrowserThread::UI);
336 RecordWebBluetoothFunctionCall(UMAWebBluetoothFunction::CONNECT_GATT); 337 RecordWebBluetoothFunctionCall(UMAWebBluetoothFunction::CONNECT_GATT);
337 338
338 const CacheQueryResult query_result = QueryCacheForDevice(device_id); 339 const CacheQueryResult query_result = QueryCacheForDevice(device_id);
339 340
340 if (query_result.outcome != CacheQueryOutcome::SUCCESS) { 341 if (query_result.outcome != CacheQueryOutcome::SUCCESS) {
341 RecordConnectGATTOutcome(query_result.outcome); 342 RecordConnectGATTOutcome(query_result.outcome);
342 callback.Run(query_result.GetWebError()); 343 callback.Run(query_result.GetWebError());
343 return; 344 return;
(...skipping 13 matching lines...) Expand all
357 // abstraction doesn't currently support checking for pending connections. 358 // abstraction doesn't currently support checking for pending connections.
358 // TODO(ortuno): CHECK that this never happens once the platform 359 // TODO(ortuno): CHECK that this never happens once the platform
359 // abstraction allows to check for pending connections. 360 // abstraction allows to check for pending connections.
360 // http://crbug.com/583544 361 // http://crbug.com/583544
361 const base::TimeTicks start_time = base::TimeTicks::Now(); 362 const base::TimeTicks start_time = base::TimeTicks::Now();
362 query_result.device->CreateGattConnection( 363 query_result.device->CreateGattConnection(
363 base::Bind(&WebBluetoothServiceImpl::OnCreateGATTConnectionSuccess, 364 base::Bind(&WebBluetoothServiceImpl::OnCreateGATTConnectionSuccess,
364 weak_ptr_factory_.GetWeakPtr(), device_id, start_time, 365 weak_ptr_factory_.GetWeakPtr(), device_id, start_time,
365 callback), 366 callback),
366 base::Bind(&WebBluetoothServiceImpl::OnCreateGATTConnectionFailed, 367 base::Bind(&WebBluetoothServiceImpl::OnCreateGATTConnectionFailed,
367 weak_ptr_factory_.GetWeakPtr(), start_time, callback)); 368 weak_ptr_factory_.GetWeakPtr(), device_id, start_time,
369 callback));
368 } 370 }
369 371
370 void WebBluetoothServiceImpl::RemoteServerDisconnect( 372 void WebBluetoothServiceImpl::RemoteServerDisconnect(
371 const WebBluetoothDeviceId& device_id) { 373 const mojo::String& device_id) {
372 DCHECK_CURRENTLY_ON(BrowserThread::UI); 374 DCHECK_CURRENTLY_ON(BrowserThread::UI);
373 RecordWebBluetoothFunctionCall( 375 RecordWebBluetoothFunctionCall(
374 UMAWebBluetoothFunction::REMOTE_GATT_SERVER_DISCONNECT); 376 UMAWebBluetoothFunction::REMOTE_GATT_SERVER_DISCONNECT);
375 377
376 if (connected_devices_->IsConnectedToDeviceWithId(device_id)) { 378 if (connected_devices_->IsConnectedToDeviceWithId(device_id)) {
377 VLOG(1) << "Disconnecting device: " << device_id.str(); 379 VLOG(1) << "Disconnecting device: " << device_id;
378 connected_devices_->CloseConnectionToDeviceWithId(device_id); 380 connected_devices_->CloseConnectionToDeviceWithId(device_id);
379 } 381 }
380 } 382 }
381 383
382 void WebBluetoothServiceImpl::RemoteServerGetPrimaryServices( 384 void WebBluetoothServiceImpl::RemoteServerGetPrimaryServices(
383 const WebBluetoothDeviceId& device_id, 385 const mojo::String& device_id,
384 blink::mojom::WebBluetoothGATTQueryQuantity quantity, 386 blink::mojom::WebBluetoothGATTQueryQuantity quantity,
385 const base::Optional<BluetoothUUID>& services_uuid, 387 const base::Optional<BluetoothUUID>& services_uuid,
386 const RemoteServerGetPrimaryServicesCallback& callback) { 388 const RemoteServerGetPrimaryServicesCallback& callback) {
387 DCHECK_CURRENTLY_ON(BrowserThread::UI); 389 DCHECK_CURRENTLY_ON(BrowserThread::UI);
388 RecordWebBluetoothFunctionCall( 390 RecordWebBluetoothFunctionCall(
389 quantity == blink::mojom::WebBluetoothGATTQueryQuantity::SINGLE 391 quantity == blink::mojom::WebBluetoothGATTQueryQuantity::SINGLE
390 ? UMAWebBluetoothFunction::GET_PRIMARY_SERVICE 392 ? UMAWebBluetoothFunction::GET_PRIMARY_SERVICE
391 : UMAWebBluetoothFunction::GET_PRIMARY_SERVICES); 393 : UMAWebBluetoothFunction::GET_PRIMARY_SERVICES);
392 RecordGetPrimaryServicesServices(quantity, services_uuid); 394 RecordGetPrimaryServicesServices(quantity, services_uuid);
393 395
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after
682 684
683 device_chooser_controller_->GetDevice( 685 device_chooser_controller_->GetDevice(
684 std::move(options), 686 std::move(options),
685 base::Bind(&WebBluetoothServiceImpl::OnGetDeviceSuccess, 687 base::Bind(&WebBluetoothServiceImpl::OnGetDeviceSuccess,
686 weak_ptr_factory_.GetWeakPtr(), callback), 688 weak_ptr_factory_.GetWeakPtr(), callback),
687 base::Bind(&WebBluetoothServiceImpl::OnGetDeviceFailed, 689 base::Bind(&WebBluetoothServiceImpl::OnGetDeviceFailed,
688 weak_ptr_factory_.GetWeakPtr(), callback)); 690 weak_ptr_factory_.GetWeakPtr(), callback));
689 } 691 }
690 692
691 void WebBluetoothServiceImpl::RemoteServerGetPrimaryServicesImpl( 693 void WebBluetoothServiceImpl::RemoteServerGetPrimaryServicesImpl(
692 const WebBluetoothDeviceId& device_id, 694 const mojo::String& device_id,
693 blink::mojom::WebBluetoothGATTQueryQuantity quantity, 695 blink::mojom::WebBluetoothGATTQueryQuantity quantity,
694 const base::Optional<BluetoothUUID>& services_uuid, 696 const base::Optional<BluetoothUUID>& services_uuid,
695 const RemoteServerGetPrimaryServicesCallback& callback, 697 const RemoteServerGetPrimaryServicesCallback& callback,
696 device::BluetoothDevice* device) { 698 device::BluetoothDevice* device) {
697 DCHECK_CURRENTLY_ON(BrowserThread::UI); 699 DCHECK_CURRENTLY_ON(BrowserThread::UI);
698 DCHECK(device->IsGattServicesDiscoveryComplete()); 700 DCHECK(device->IsGattServicesDiscoveryComplete());
699 701
700 std::vector<device::BluetoothRemoteGattService*> services = 702 std::vector<device::BluetoothRemoteGattService*> services =
701 services_uuid ? GetPrimaryServicesByUUID(device, services_uuid.value()) 703 services_uuid ? GetPrimaryServicesByUUID(device, services_uuid.value())
702 : GetPrimaryServices(device); 704 : GetPrimaryServices(device);
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
754 const device::BluetoothDevice* const device = 756 const device::BluetoothDevice* const device =
755 GetAdapter()->GetDevice(device_address); 757 GetAdapter()->GetDevice(device_address);
756 if (device == nullptr) { 758 if (device == nullptr) {
757 VLOG(1) << "Device " << device_address << " no longer in adapter"; 759 VLOG(1) << "Device " << device_address << " no longer in adapter";
758 RecordRequestDeviceOutcome(UMARequestDeviceOutcome::CHOSEN_DEVICE_VANISHED); 760 RecordRequestDeviceOutcome(UMARequestDeviceOutcome::CHOSEN_DEVICE_VANISHED);
759 callback.Run(blink::mojom::WebBluetoothError::CHOSEN_DEVICE_VANISHED, 761 callback.Run(blink::mojom::WebBluetoothError::CHOSEN_DEVICE_VANISHED,
760 nullptr /* device */); 762 nullptr /* device */);
761 return; 763 return;
762 } 764 }
763 765
764 const WebBluetoothDeviceId device_id_for_origin = 766 const std::string device_id_for_origin =
765 allowed_devices_map_.AddDevice(GetOrigin(), device_address, options); 767 allowed_devices_map_.AddDevice(GetOrigin(), device_address, options);
766 768
767 VLOG(1) << "Device: " << device->GetNameForDisplay(); 769 VLOG(1) << "Device: " << device->GetNameForDisplay();
768 VLOG(1) << "UUIDs: "; 770 VLOG(1) << "UUIDs: ";
769 771
770 mojo::Array<mojo::String> filtered_uuids; 772 mojo::Array<mojo::String> filtered_uuids;
771 for (const BluetoothUUID& uuid : device->GetUUIDs()) { 773 for (const BluetoothUUID& uuid : device->GetUUIDs()) {
772 if (allowed_devices_map_.IsOriginAllowedToAccessService( 774 if (allowed_devices_map_.IsOriginAllowedToAccessService(
773 GetOrigin(), device_id_for_origin, uuid)) { 775 GetOrigin(), device_id_for_origin, uuid)) {
774 VLOG(1) << "\t Allowed: " << uuid.canonical_value(); 776 VLOG(1) << "\t Allowed: " << uuid.canonical_value();
(...skipping 16 matching lines...) Expand all
791 793
792 void WebBluetoothServiceImpl::OnGetDeviceFailed( 794 void WebBluetoothServiceImpl::OnGetDeviceFailed(
793 const RequestDeviceCallback& callback, 795 const RequestDeviceCallback& callback,
794 blink::mojom::WebBluetoothError error) { 796 blink::mojom::WebBluetoothError error) {
795 // Errors are recorded by the *device_chooser_controller_. 797 // Errors are recorded by the *device_chooser_controller_.
796 callback.Run(error, nullptr /* device */); 798 callback.Run(error, nullptr /* device */);
797 device_chooser_controller_.reset(); 799 device_chooser_controller_.reset();
798 } 800 }
799 801
800 void WebBluetoothServiceImpl::OnCreateGATTConnectionSuccess( 802 void WebBluetoothServiceImpl::OnCreateGATTConnectionSuccess(
801 const WebBluetoothDeviceId& device_id, 803 const std::string& device_id,
802 base::TimeTicks start_time, 804 base::TimeTicks start_time,
803 const RemoteServerConnectCallback& callback, 805 const RemoteServerConnectCallback& callback,
804 std::unique_ptr<device::BluetoothGattConnection> connection) { 806 std::unique_ptr<device::BluetoothGattConnection> connection) {
805 DCHECK_CURRENTLY_ON(BrowserThread::UI); 807 DCHECK_CURRENTLY_ON(BrowserThread::UI);
806 RecordConnectGATTTimeSuccess(base::TimeTicks::Now() - start_time); 808 RecordConnectGATTTimeSuccess(base::TimeTicks::Now() - start_time);
807 RecordConnectGATTOutcome(UMAConnectGATTOutcome::SUCCESS); 809 RecordConnectGATTOutcome(UMAConnectGATTOutcome::SUCCESS);
808 810
809 connected_devices_->Insert(device_id, std::move(connection)); 811 connected_devices_->Insert(device_id, std::move(connection));
810 callback.Run(blink::mojom::WebBluetoothError::SUCCESS); 812 callback.Run(blink::mojom::WebBluetoothError::SUCCESS);
811 } 813 }
812 814
813 void WebBluetoothServiceImpl::OnCreateGATTConnectionFailed( 815 void WebBluetoothServiceImpl::OnCreateGATTConnectionFailed(
816 const std::string& device_id,
814 base::TimeTicks start_time, 817 base::TimeTicks start_time,
815 const RemoteServerConnectCallback& callback, 818 const RemoteServerConnectCallback& callback,
816 device::BluetoothDevice::ConnectErrorCode error_code) { 819 device::BluetoothDevice::ConnectErrorCode error_code) {
817 DCHECK_CURRENTLY_ON(BrowserThread::UI); 820 DCHECK_CURRENTLY_ON(BrowserThread::UI);
818 RecordConnectGATTTimeFailed(base::TimeTicks::Now() - start_time); 821 RecordConnectGATTTimeFailed(base::TimeTicks::Now() - start_time);
819 callback.Run(TranslateConnectErrorAndRecord(error_code)); 822 callback.Run(TranslateConnectErrorAndRecord(error_code));
820 } 823 }
821 824
822 void WebBluetoothServiceImpl::OnReadValueSuccess( 825 void WebBluetoothServiceImpl::OnReadValueSuccess(
823 const RemoteCharacteristicReadValueCallback& callback, 826 const RemoteCharacteristicReadValueCallback& callback,
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
875 } 878 }
876 879
877 void WebBluetoothServiceImpl::OnStopNotifySessionComplete( 880 void WebBluetoothServiceImpl::OnStopNotifySessionComplete(
878 const std::string& characteristic_instance_id, 881 const std::string& characteristic_instance_id,
879 const RemoteCharacteristicStopNotificationsCallback& callback) { 882 const RemoteCharacteristicStopNotificationsCallback& callback) {
880 characteristic_id_to_notify_session_.erase(characteristic_instance_id); 883 characteristic_id_to_notify_session_.erase(characteristic_instance_id);
881 callback.Run(); 884 callback.Run();
882 } 885 }
883 886
884 CacheQueryResult WebBluetoothServiceImpl::QueryCacheForDevice( 887 CacheQueryResult WebBluetoothServiceImpl::QueryCacheForDevice(
885 const WebBluetoothDeviceId& device_id) { 888 const std::string& device_id) {
886 const std::string& device_address = 889 const std::string& device_address =
887 allowed_devices_map_.GetDeviceAddress(GetOrigin(), device_id); 890 allowed_devices_map_.GetDeviceAddress(GetOrigin(), device_id);
888 if (device_address.empty()) { 891 if (device_address.empty()) {
889 CrashRendererAndClosePipe(bad_message::BDH_DEVICE_NOT_ALLOWED_FOR_ORIGIN); 892 CrashRendererAndClosePipe(bad_message::BDH_DEVICE_NOT_ALLOWED_FOR_ORIGIN);
890 return CacheQueryResult(CacheQueryOutcome::BAD_RENDERER); 893 return CacheQueryResult(CacheQueryOutcome::BAD_RENDERER);
891 } 894 }
892 895
893 CacheQueryResult result; 896 CacheQueryResult result;
894 result.device = GetAdapter()->GetDevice(device_address); 897 result.device = GetAdapter()->GetDevice(device_address);
895 898
896 // When a device can't be found in the BluetoothAdapter, that generally 899 // When a device can't be found in the BluetoothAdapter, that generally
897 // indicates that it's gone out of range. We reject with a NetworkError in 900 // indicates that it's gone out of range. We reject with a NetworkError in
898 // that case. 901 // that case.
899 if (result.device == nullptr) { 902 if (result.device == nullptr) {
900 result.outcome = CacheQueryOutcome::NO_DEVICE; 903 result.outcome = CacheQueryOutcome::NO_DEVICE;
901 } 904 }
902 return result; 905 return result;
903 } 906 }
904 907
905 CacheQueryResult WebBluetoothServiceImpl::QueryCacheForService( 908 CacheQueryResult WebBluetoothServiceImpl::QueryCacheForService(
906 const std::string& service_instance_id) { 909 const std::string& service_instance_id) {
907 auto device_iter = service_id_to_device_address_.find(service_instance_id); 910 auto device_iter = service_id_to_device_address_.find(service_instance_id);
908 911
909 // Kill the render, see "ID Not in Map Note" above. 912 // Kill the render, see "ID Not in Map Note" above.
910 if (device_iter == service_id_to_device_address_.end()) { 913 if (device_iter == service_id_to_device_address_.end()) {
911 CrashRendererAndClosePipe(bad_message::BDH_INVALID_SERVICE_ID); 914 CrashRendererAndClosePipe(bad_message::BDH_INVALID_SERVICE_ID);
912 return CacheQueryResult(CacheQueryOutcome::BAD_RENDERER); 915 return CacheQueryResult(CacheQueryOutcome::BAD_RENDERER);
913 } 916 }
914 917
915 const WebBluetoothDeviceId* device_id = 918 const std::string& device_id =
916 allowed_devices_map_.GetDeviceId(GetOrigin(), device_iter->second); 919 allowed_devices_map_.GetDeviceId(GetOrigin(), device_iter->second);
917 // Kill the renderer if origin is not allowed to access the device. 920 // Kill the renderer if origin is not allowed to access the device.
918 if (device_id == nullptr) { 921 if (device_id.empty()) {
919 CrashRendererAndClosePipe(bad_message::BDH_DEVICE_NOT_ALLOWED_FOR_ORIGIN); 922 CrashRendererAndClosePipe(bad_message::BDH_DEVICE_NOT_ALLOWED_FOR_ORIGIN);
920 return CacheQueryResult(CacheQueryOutcome::BAD_RENDERER); 923 return CacheQueryResult(CacheQueryOutcome::BAD_RENDERER);
921 } 924 }
922 925
923 CacheQueryResult result = QueryCacheForDevice(*device_id); 926 CacheQueryResult result = QueryCacheForDevice(device_id);
924 if (result.outcome != CacheQueryOutcome::SUCCESS) { 927 if (result.outcome != CacheQueryOutcome::SUCCESS) {
925 return result; 928 return result;
926 } 929 }
927 930
928 result.service = result.device->GetGattService(service_instance_id); 931 result.service = result.device->GetGattService(service_instance_id);
929 if (result.service == nullptr) { 932 if (result.service == nullptr) {
930 result.outcome = CacheQueryOutcome::NO_SERVICE; 933 result.outcome = CacheQueryOutcome::NO_SERVICE;
931 } else if (!allowed_devices_map_.IsOriginAllowedToAccessService( 934 } else if (!allowed_devices_map_.IsOriginAllowedToAccessService(
932 GetOrigin(), *device_id, result.service->GetUUID())) { 935 GetOrigin(), device_id, result.service->GetUUID())) {
933 CrashRendererAndClosePipe(bad_message::BDH_SERVICE_NOT_ALLOWED_FOR_ORIGIN); 936 CrashRendererAndClosePipe(bad_message::BDH_SERVICE_NOT_ALLOWED_FOR_ORIGIN);
934 return CacheQueryResult(CacheQueryOutcome::BAD_RENDERER); 937 return CacheQueryResult(CacheQueryOutcome::BAD_RENDERER);
935 } 938 }
936 return result; 939 return result;
937 } 940 }
938 941
939 CacheQueryResult WebBluetoothServiceImpl::QueryCacheForCharacteristic( 942 CacheQueryResult WebBluetoothServiceImpl::QueryCacheForCharacteristic(
940 const std::string& characteristic_instance_id) { 943 const std::string& characteristic_instance_id) {
941 auto characteristic_iter = 944 auto characteristic_iter =
942 characteristic_id_to_service_id_.find(characteristic_instance_id); 945 characteristic_id_to_service_id_.find(characteristic_instance_id);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
987 characteristic_id_to_service_id_.clear(); 990 characteristic_id_to_service_id_.clear();
988 service_id_to_device_address_.clear(); 991 service_id_to_device_address_.clear();
989 connected_devices_.reset( 992 connected_devices_.reset(
990 new FrameConnectedBluetoothDevices(render_frame_host_)); 993 new FrameConnectedBluetoothDevices(render_frame_host_));
991 allowed_devices_map_ = BluetoothAllowedDevicesMap(); 994 allowed_devices_map_ = BluetoothAllowedDevicesMap();
992 device_chooser_controller_.reset(); 995 device_chooser_controller_.reset();
993 BluetoothAdapterFactoryWrapper::Get().ReleaseAdapter(this); 996 BluetoothAdapterFactoryWrapper::Get().ReleaseAdapter(this);
994 } 997 }
995 998
996 } // namespace content 999 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/bluetooth/web_bluetooth_service_impl.h ('k') | content/common/DEPS » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698