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

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

Issue 2771893002: Move Bluetooth.Web.FunctionCall.Count UMA from browser to WebKit (Closed)
Patch Set: move Bluetooth.Web.FunctionCall.Count UMA from browser to WebKit Created 3 years, 9 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 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: A service, characteristic, or descriptor ID not in the 5 // ID Not In Map Note: A service, characteristic, or descriptor ID not in the
6 // corresponding WebBluetoothServiceImpl map [service_id_to_device_address_, 6 // corresponding WebBluetoothServiceImpl map [service_id_to_device_address_,
7 // characteristic_id_to_service_id_, descriptor_id_to_characteristic_id_] 7 // characteristic_id_to_service_id_, descriptor_id_to_characteristic_id_]
8 // implies a hostile renderer because a renderer obtains the corresponding ID 8 // implies a hostile renderer because a renderer obtains the corresponding ID
9 // from this class and it will be added to the map at that time. 9 // from this class and it will be added to the map at that time.
10 10
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 279
280 void WebBluetoothServiceImpl::SetClient( 280 void WebBluetoothServiceImpl::SetClient(
281 blink::mojom::WebBluetoothServiceClientAssociatedPtrInfo client) { 281 blink::mojom::WebBluetoothServiceClientAssociatedPtrInfo client) {
282 DCHECK(!client_.get()); 282 DCHECK(!client_.get());
283 client_.Bind(std::move(client)); 283 client_.Bind(std::move(client));
284 } 284 }
285 285
286 void WebBluetoothServiceImpl::RequestDevice( 286 void WebBluetoothServiceImpl::RequestDevice(
287 blink::mojom::WebBluetoothRequestDeviceOptionsPtr options, 287 blink::mojom::WebBluetoothRequestDeviceOptionsPtr options,
288 const RequestDeviceCallback& callback) { 288 const RequestDeviceCallback& callback) {
289 RecordWebBluetoothFunctionCall(UMAWebBluetoothFunction::REQUEST_DEVICE);
290 RecordRequestDeviceOptions(options); 289 RecordRequestDeviceOptions(options);
291 290
292 if (!GetAdapter()) { 291 if (!GetAdapter()) {
293 if (BluetoothAdapterFactoryWrapper::Get().IsLowEnergyAvailable()) { 292 if (BluetoothAdapterFactoryWrapper::Get().IsLowEnergyAvailable()) {
294 BluetoothAdapterFactoryWrapper::Get().AcquireAdapter( 293 BluetoothAdapterFactoryWrapper::Get().AcquireAdapter(
295 this, base::Bind(&WebBluetoothServiceImpl::RequestDeviceImpl, 294 this, base::Bind(&WebBluetoothServiceImpl::RequestDeviceImpl,
296 weak_ptr_factory_.GetWeakPtr(), 295 weak_ptr_factory_.GetWeakPtr(),
297 base::Passed(std::move(options)), callback)); 296 base::Passed(std::move(options)), callback));
298 return; 297 return;
299 } 298 }
300 RecordRequestDeviceOutcome( 299 RecordRequestDeviceOutcome(
301 UMARequestDeviceOutcome::BLUETOOTH_LOW_ENERGY_NOT_AVAILABLE); 300 UMARequestDeviceOutcome::BLUETOOTH_LOW_ENERGY_NOT_AVAILABLE);
302 callback.Run( 301 callback.Run(
303 blink::mojom::WebBluetoothResult::BLUETOOTH_LOW_ENERGY_NOT_AVAILABLE, 302 blink::mojom::WebBluetoothResult::BLUETOOTH_LOW_ENERGY_NOT_AVAILABLE,
304 nullptr /* device */); 303 nullptr /* device */);
305 return; 304 return;
306 } 305 }
307 RequestDeviceImpl(std::move(options), callback, GetAdapter()); 306 RequestDeviceImpl(std::move(options), callback, GetAdapter());
308 } 307 }
309 308
310 void WebBluetoothServiceImpl::RemoteServerConnect( 309 void WebBluetoothServiceImpl::RemoteServerConnect(
311 const WebBluetoothDeviceId& device_id, 310 const WebBluetoothDeviceId& device_id,
312 const RemoteServerConnectCallback& callback) { 311 const RemoteServerConnectCallback& callback) {
313 DCHECK_CURRENTLY_ON(BrowserThread::UI); 312 DCHECK_CURRENTLY_ON(BrowserThread::UI);
314 RecordWebBluetoothFunctionCall(UMAWebBluetoothFunction::CONNECT_GATT);
315 313
316 const CacheQueryResult query_result = QueryCacheForDevice(device_id); 314 const CacheQueryResult query_result = QueryCacheForDevice(device_id);
317 315
318 if (query_result.outcome != CacheQueryOutcome::SUCCESS) { 316 if (query_result.outcome != CacheQueryOutcome::SUCCESS) {
319 RecordConnectGATTOutcome(query_result.outcome); 317 RecordConnectGATTOutcome(query_result.outcome);
320 callback.Run(query_result.GetWebResult()); 318 callback.Run(query_result.GetWebResult());
321 return; 319 return;
322 } 320 }
323 321
324 if (connected_devices_->IsConnectedToDeviceWithId(device_id)) { 322 if (connected_devices_->IsConnectedToDeviceWithId(device_id)) {
(...skipping 16 matching lines...) Expand all
341 base::Bind(&WebBluetoothServiceImpl::OnCreateGATTConnectionSuccess, 339 base::Bind(&WebBluetoothServiceImpl::OnCreateGATTConnectionSuccess,
342 weak_ptr_factory_.GetWeakPtr(), device_id, start_time, 340 weak_ptr_factory_.GetWeakPtr(), device_id, start_time,
343 callback), 341 callback),
344 base::Bind(&WebBluetoothServiceImpl::OnCreateGATTConnectionFailed, 342 base::Bind(&WebBluetoothServiceImpl::OnCreateGATTConnectionFailed,
345 weak_ptr_factory_.GetWeakPtr(), start_time, callback)); 343 weak_ptr_factory_.GetWeakPtr(), start_time, callback));
346 } 344 }
347 345
348 void WebBluetoothServiceImpl::RemoteServerDisconnect( 346 void WebBluetoothServiceImpl::RemoteServerDisconnect(
349 const WebBluetoothDeviceId& device_id) { 347 const WebBluetoothDeviceId& device_id) {
350 DCHECK_CURRENTLY_ON(BrowserThread::UI); 348 DCHECK_CURRENTLY_ON(BrowserThread::UI);
351 RecordWebBluetoothFunctionCall(
352 UMAWebBluetoothFunction::REMOTE_GATT_SERVER_DISCONNECT);
353 349
354 if (connected_devices_->IsConnectedToDeviceWithId(device_id)) { 350 if (connected_devices_->IsConnectedToDeviceWithId(device_id)) {
355 DVLOG(1) << "Disconnecting device: " << device_id.str(); 351 DVLOG(1) << "Disconnecting device: " << device_id.str();
356 connected_devices_->CloseConnectionToDeviceWithId(device_id); 352 connected_devices_->CloseConnectionToDeviceWithId(device_id);
357 } 353 }
358 } 354 }
359 355
360 void WebBluetoothServiceImpl::RemoteServerGetPrimaryServices( 356 void WebBluetoothServiceImpl::RemoteServerGetPrimaryServices(
361 const WebBluetoothDeviceId& device_id, 357 const WebBluetoothDeviceId& device_id,
362 blink::mojom::WebBluetoothGATTQueryQuantity quantity, 358 blink::mojom::WebBluetoothGATTQueryQuantity quantity,
363 const base::Optional<BluetoothUUID>& services_uuid, 359 const base::Optional<BluetoothUUID>& services_uuid,
364 const RemoteServerGetPrimaryServicesCallback& callback) { 360 const RemoteServerGetPrimaryServicesCallback& callback) {
365 DCHECK_CURRENTLY_ON(BrowserThread::UI); 361 DCHECK_CURRENTLY_ON(BrowserThread::UI);
366 RecordWebBluetoothFunctionCall(
367 quantity == blink::mojom::WebBluetoothGATTQueryQuantity::SINGLE
368 ? UMAWebBluetoothFunction::GET_PRIMARY_SERVICE
369 : UMAWebBluetoothFunction::GET_PRIMARY_SERVICES);
370 RecordGetPrimaryServicesServices(quantity, services_uuid); 362 RecordGetPrimaryServicesServices(quantity, services_uuid);
371 363
372 if (!allowed_devices().IsAllowedToAccessAtLeastOneService(device_id)) { 364 if (!allowed_devices().IsAllowedToAccessAtLeastOneService(device_id)) {
373 callback.Run( 365 callback.Run(
374 blink::mojom::WebBluetoothResult::NOT_ALLOWED_TO_ACCESS_ANY_SERVICE, 366 blink::mojom::WebBluetoothResult::NOT_ALLOWED_TO_ACCESS_ANY_SERVICE,
375 base::nullopt /* service */); 367 base::nullopt /* service */);
376 return; 368 return;
377 } 369 }
378 370
379 if (services_uuid && 371 if (services_uuid &&
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 base::Unretained(this), device_id, quantity, services_uuid, callback)); 405 base::Unretained(this), device_id, quantity, services_uuid, callback));
414 } 406 }
415 407
416 void WebBluetoothServiceImpl::RemoteServiceGetCharacteristics( 408 void WebBluetoothServiceImpl::RemoteServiceGetCharacteristics(
417 const std::string& service_instance_id, 409 const std::string& service_instance_id,
418 blink::mojom::WebBluetoothGATTQueryQuantity quantity, 410 blink::mojom::WebBluetoothGATTQueryQuantity quantity,
419 const base::Optional<BluetoothUUID>& characteristics_uuid, 411 const base::Optional<BluetoothUUID>& characteristics_uuid,
420 const RemoteServiceGetCharacteristicsCallback& callback) { 412 const RemoteServiceGetCharacteristicsCallback& callback) {
421 DCHECK_CURRENTLY_ON(BrowserThread::UI); 413 DCHECK_CURRENTLY_ON(BrowserThread::UI);
422 414
423 RecordWebBluetoothFunctionCall(
424 quantity == blink::mojom::WebBluetoothGATTQueryQuantity::SINGLE
425 ? UMAWebBluetoothFunction::SERVICE_GET_CHARACTERISTIC
426 : UMAWebBluetoothFunction::SERVICE_GET_CHARACTERISTICS);
427 RecordGetCharacteristicsCharacteristic(quantity, characteristics_uuid); 415 RecordGetCharacteristicsCharacteristic(quantity, characteristics_uuid);
428 416
429 if (characteristics_uuid && 417 if (characteristics_uuid &&
430 BluetoothBlocklist::Get().IsExcluded(characteristics_uuid.value())) { 418 BluetoothBlocklist::Get().IsExcluded(characteristics_uuid.value())) {
431 RecordGetCharacteristicsOutcome(quantity, 419 RecordGetCharacteristicsOutcome(quantity,
432 UMAGetCharacteristicOutcome::BLOCKLISTED); 420 UMAGetCharacteristicOutcome::BLOCKLISTED);
433 callback.Run( 421 callback.Run(
434 blink::mojom::WebBluetoothResult::BLOCKLISTED_CHARACTERISTIC_UUID, 422 blink::mojom::WebBluetoothResult::BLOCKLISTED_CHARACTERISTIC_UUID,
435 base::nullopt /* characteristics */); 423 base::nullopt /* characteristics */);
436 return; 424 return;
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
501 base::nullopt /* characteristics */); 489 base::nullopt /* characteristics */);
502 } 490 }
503 491
504 void WebBluetoothServiceImpl::RemoteCharacteristicGetDescriptors( 492 void WebBluetoothServiceImpl::RemoteCharacteristicGetDescriptors(
505 const std::string& characteristic_instance_id, 493 const std::string& characteristic_instance_id,
506 blink::mojom::WebBluetoothGATTQueryQuantity quantity, 494 blink::mojom::WebBluetoothGATTQueryQuantity quantity,
507 const base::Optional<BluetoothUUID>& descriptors_uuid, 495 const base::Optional<BluetoothUUID>& descriptors_uuid,
508 const RemoteCharacteristicGetDescriptorsCallback& callback) { 496 const RemoteCharacteristicGetDescriptorsCallback& callback) {
509 DCHECK_CURRENTLY_ON(BrowserThread::UI); 497 DCHECK_CURRENTLY_ON(BrowserThread::UI);
510 498
511 RecordWebBluetoothFunctionCall(
512 quantity == blink::mojom::WebBluetoothGATTQueryQuantity::SINGLE
513 ? UMAWebBluetoothFunction::CHARACTERISTIC_GET_DESCRIPTOR
514 : UMAWebBluetoothFunction::CHARACTERISTIC_GET_DESCRIPTORS);
515 RecordGetDescriptorsDescriptor(quantity, descriptors_uuid); 499 RecordGetDescriptorsDescriptor(quantity, descriptors_uuid);
516 500
517 if (descriptors_uuid && 501 if (descriptors_uuid &&
518 BluetoothBlocklist::Get().IsExcluded(descriptors_uuid.value())) { 502 BluetoothBlocklist::Get().IsExcluded(descriptors_uuid.value())) {
519 RecordGetDescriptorsOutcome(quantity, UMAGetDescriptorOutcome::BLOCKLISTED); 503 RecordGetDescriptorsOutcome(quantity, UMAGetDescriptorOutcome::BLOCKLISTED);
520 callback.Run(blink::mojom::WebBluetoothResult::BLOCKLISTED_DESCRIPTOR_UUID, 504 callback.Run(blink::mojom::WebBluetoothResult::BLOCKLISTED_DESCRIPTOR_UUID,
521 base::nullopt /* descriptor */); 505 base::nullopt /* descriptor */);
522 return; 506 return;
523 } 507 }
524 508
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
576 callback.Run(descriptors_uuid 560 callback.Run(descriptors_uuid
577 ? blink::mojom::WebBluetoothResult::DESCRIPTOR_NOT_FOUND 561 ? blink::mojom::WebBluetoothResult::DESCRIPTOR_NOT_FOUND
578 : blink::mojom::WebBluetoothResult::NO_DESCRIPTORS_FOUND, 562 : blink::mojom::WebBluetoothResult::NO_DESCRIPTORS_FOUND,
579 base::nullopt /* descriptors */); 563 base::nullopt /* descriptors */);
580 } 564 }
581 565
582 void WebBluetoothServiceImpl::RemoteCharacteristicReadValue( 566 void WebBluetoothServiceImpl::RemoteCharacteristicReadValue(
583 const std::string& characteristic_instance_id, 567 const std::string& characteristic_instance_id,
584 const RemoteCharacteristicReadValueCallback& callback) { 568 const RemoteCharacteristicReadValueCallback& callback) {
585 DCHECK_CURRENTLY_ON(BrowserThread::UI); 569 DCHECK_CURRENTLY_ON(BrowserThread::UI);
586 RecordWebBluetoothFunctionCall(
587 UMAWebBluetoothFunction::CHARACTERISTIC_READ_VALUE);
588 570
589 const CacheQueryResult query_result = 571 const CacheQueryResult query_result =
590 QueryCacheForCharacteristic(characteristic_instance_id); 572 QueryCacheForCharacteristic(characteristic_instance_id);
591 573
592 if (query_result.outcome == CacheQueryOutcome::BAD_RENDERER) { 574 if (query_result.outcome == CacheQueryOutcome::BAD_RENDERER) {
593 return; 575 return;
594 } 576 }
595 577
596 if (query_result.outcome != CacheQueryOutcome::SUCCESS) { 578 if (query_result.outcome != CacheQueryOutcome::SUCCESS) {
597 RecordCharacteristicReadValueOutcome(query_result.outcome); 579 RecordCharacteristicReadValueOutcome(query_result.outcome);
(...skipping 14 matching lines...) Expand all
612 weak_ptr_factory_.GetWeakPtr(), callback), 594 weak_ptr_factory_.GetWeakPtr(), callback),
613 base::Bind(&WebBluetoothServiceImpl::OnCharacteristicReadValueFailed, 595 base::Bind(&WebBluetoothServiceImpl::OnCharacteristicReadValueFailed,
614 weak_ptr_factory_.GetWeakPtr(), callback)); 596 weak_ptr_factory_.GetWeakPtr(), callback));
615 } 597 }
616 598
617 void WebBluetoothServiceImpl::RemoteCharacteristicWriteValue( 599 void WebBluetoothServiceImpl::RemoteCharacteristicWriteValue(
618 const std::string& characteristic_instance_id, 600 const std::string& characteristic_instance_id,
619 const std::vector<uint8_t>& value, 601 const std::vector<uint8_t>& value,
620 const RemoteCharacteristicWriteValueCallback& callback) { 602 const RemoteCharacteristicWriteValueCallback& callback) {
621 DCHECK_CURRENTLY_ON(BrowserThread::UI); 603 DCHECK_CURRENTLY_ON(BrowserThread::UI);
622 RecordWebBluetoothFunctionCall(
623 UMAWebBluetoothFunction::CHARACTERISTIC_WRITE_VALUE);
624 604
625 // We perform the length check on the renderer side. So if we 605 // We perform the length check on the renderer side. So if we
626 // get a value with length > 512, we can assume it's a hostile 606 // get a value with length > 512, we can assume it's a hostile
627 // renderer and kill it. 607 // renderer and kill it.
628 if (value.size() > 512) { 608 if (value.size() > 512) {
629 CrashRendererAndClosePipe(bad_message::BDH_INVALID_WRITE_VALUE_LENGTH); 609 CrashRendererAndClosePipe(bad_message::BDH_INVALID_WRITE_VALUE_LENGTH);
630 return; 610 return;
631 } 611 }
632 612
633 const CacheQueryResult query_result = 613 const CacheQueryResult query_result =
(...skipping 21 matching lines...) Expand all
655 base::Bind(&WebBluetoothServiceImpl::OnCharacteristicWriteValueSuccess, 635 base::Bind(&WebBluetoothServiceImpl::OnCharacteristicWriteValueSuccess,
656 weak_ptr_factory_.GetWeakPtr(), callback), 636 weak_ptr_factory_.GetWeakPtr(), callback),
657 base::Bind(&WebBluetoothServiceImpl::OnCharacteristicWriteValueFailed, 637 base::Bind(&WebBluetoothServiceImpl::OnCharacteristicWriteValueFailed,
658 weak_ptr_factory_.GetWeakPtr(), callback)); 638 weak_ptr_factory_.GetWeakPtr(), callback));
659 } 639 }
660 640
661 void WebBluetoothServiceImpl::RemoteCharacteristicStartNotifications( 641 void WebBluetoothServiceImpl::RemoteCharacteristicStartNotifications(
662 const std::string& characteristic_instance_id, 642 const std::string& characteristic_instance_id,
663 const RemoteCharacteristicStartNotificationsCallback& callback) { 643 const RemoteCharacteristicStartNotificationsCallback& callback) {
664 DCHECK_CURRENTLY_ON(BrowserThread::UI); 644 DCHECK_CURRENTLY_ON(BrowserThread::UI);
665 RecordWebBluetoothFunctionCall(
666 UMAWebBluetoothFunction::CHARACTERISTIC_START_NOTIFICATIONS);
667 645
668 auto iter = 646 auto iter =
669 characteristic_id_to_notify_session_.find(characteristic_instance_id); 647 characteristic_id_to_notify_session_.find(characteristic_instance_id);
670 if (iter != characteristic_id_to_notify_session_.end() && 648 if (iter != characteristic_id_to_notify_session_.end() &&
671 iter->second->IsActive()) { 649 iter->second->IsActive()) {
672 // If the frame has already started notifications and the notifications 650 // If the frame has already started notifications and the notifications
673 // are active we return SUCCESS. 651 // are active we return SUCCESS.
674 callback.Run(blink::mojom::WebBluetoothResult::SUCCESS); 652 callback.Run(blink::mojom::WebBluetoothResult::SUCCESS);
675 return; 653 return;
676 } 654 }
(...skipping 24 matching lines...) Expand all
701 base::Bind(&WebBluetoothServiceImpl::OnStartNotifySessionSuccess, 679 base::Bind(&WebBluetoothServiceImpl::OnStartNotifySessionSuccess,
702 weak_ptr_factory_.GetWeakPtr(), callback), 680 weak_ptr_factory_.GetWeakPtr(), callback),
703 base::Bind(&WebBluetoothServiceImpl::OnStartNotifySessionFailed, 681 base::Bind(&WebBluetoothServiceImpl::OnStartNotifySessionFailed,
704 weak_ptr_factory_.GetWeakPtr(), callback)); 682 weak_ptr_factory_.GetWeakPtr(), callback));
705 } 683 }
706 684
707 void WebBluetoothServiceImpl::RemoteCharacteristicStopNotifications( 685 void WebBluetoothServiceImpl::RemoteCharacteristicStopNotifications(
708 const std::string& characteristic_instance_id, 686 const std::string& characteristic_instance_id,
709 const RemoteCharacteristicStopNotificationsCallback& callback) { 687 const RemoteCharacteristicStopNotificationsCallback& callback) {
710 DCHECK_CURRENTLY_ON(BrowserThread::UI); 688 DCHECK_CURRENTLY_ON(BrowserThread::UI);
711 RecordWebBluetoothFunctionCall(
712 UMAWebBluetoothFunction::CHARACTERISTIC_STOP_NOTIFICATIONS);
713 689
714 const CacheQueryResult query_result = 690 const CacheQueryResult query_result =
715 QueryCacheForCharacteristic(characteristic_instance_id); 691 QueryCacheForCharacteristic(characteristic_instance_id);
716 692
717 if (query_result.outcome == CacheQueryOutcome::BAD_RENDERER) { 693 if (query_result.outcome == CacheQueryOutcome::BAD_RENDERER) {
718 return; 694 return;
719 } 695 }
720 696
721 auto notify_session_iter = 697 auto notify_session_iter =
722 characteristic_id_to_notify_session_.find(characteristic_instance_id); 698 characteristic_id_to_notify_session_.find(characteristic_instance_id);
723 if (notify_session_iter == characteristic_id_to_notify_session_.end()) { 699 if (notify_session_iter == characteristic_id_to_notify_session_.end()) {
724 // If the frame hasn't subscribed to notifications before we just 700 // If the frame hasn't subscribed to notifications before we just
725 // run the callback. 701 // run the callback.
726 callback.Run(); 702 callback.Run();
727 return; 703 return;
728 } 704 }
729 notify_session_iter->second->Stop(base::Bind( 705 notify_session_iter->second->Stop(base::Bind(
730 &WebBluetoothServiceImpl::OnStopNotifySessionComplete, 706 &WebBluetoothServiceImpl::OnStopNotifySessionComplete,
731 weak_ptr_factory_.GetWeakPtr(), characteristic_instance_id, callback)); 707 weak_ptr_factory_.GetWeakPtr(), characteristic_instance_id, callback));
732 } 708 }
733 709
734 void WebBluetoothServiceImpl::RemoteDescriptorReadValue( 710 void WebBluetoothServiceImpl::RemoteDescriptorReadValue(
735 const std::string& descriptor_instance_id, 711 const std::string& descriptor_instance_id,
736 const RemoteDescriptorReadValueCallback& callback) { 712 const RemoteDescriptorReadValueCallback& callback) {
737 DCHECK_CURRENTLY_ON(BrowserThread::UI); 713 DCHECK_CURRENTLY_ON(BrowserThread::UI);
738 RecordWebBluetoothFunctionCall(
739 UMAWebBluetoothFunction::DESCRIPTOR_READ_VALUE);
740 714
741 const CacheQueryResult query_result = 715 const CacheQueryResult query_result =
742 QueryCacheForDescriptor(descriptor_instance_id); 716 QueryCacheForDescriptor(descriptor_instance_id);
743 717
744 if (query_result.outcome == CacheQueryOutcome::BAD_RENDERER) { 718 if (query_result.outcome == CacheQueryOutcome::BAD_RENDERER) {
745 return; 719 return;
746 } 720 }
747 721
748 if (query_result.outcome != CacheQueryOutcome::SUCCESS) { 722 if (query_result.outcome != CacheQueryOutcome::SUCCESS) {
749 RecordDescriptorReadValueOutcome(query_result.outcome); 723 RecordDescriptorReadValueOutcome(query_result.outcome);
(...skipping 14 matching lines...) Expand all
764 weak_ptr_factory_.GetWeakPtr(), callback), 738 weak_ptr_factory_.GetWeakPtr(), callback),
765 base::Bind(&WebBluetoothServiceImpl::OnDescriptorReadValueFailed, 739 base::Bind(&WebBluetoothServiceImpl::OnDescriptorReadValueFailed,
766 weak_ptr_factory_.GetWeakPtr(), callback)); 740 weak_ptr_factory_.GetWeakPtr(), callback));
767 } 741 }
768 742
769 void WebBluetoothServiceImpl::RemoteDescriptorWriteValue( 743 void WebBluetoothServiceImpl::RemoteDescriptorWriteValue(
770 const std::string& descriptor_instance_id, 744 const std::string& descriptor_instance_id,
771 const std::vector<uint8_t>& value, 745 const std::vector<uint8_t>& value,
772 const RemoteDescriptorWriteValueCallback& callback) { 746 const RemoteDescriptorWriteValueCallback& callback) {
773 DCHECK_CURRENTLY_ON(BrowserThread::UI); 747 DCHECK_CURRENTLY_ON(BrowserThread::UI);
774 RecordWebBluetoothFunctionCall(
775 UMAWebBluetoothFunction::DESCRIPTOR_WRITE_VALUE);
776 748
777 // We perform the length check on the renderer side. So if we 749 // We perform the length check on the renderer side. So if we
778 // get a value with length > 512, we can assume it's a hostile 750 // get a value with length > 512, we can assume it's a hostile
779 // renderer and kill it. 751 // renderer and kill it.
780 if (value.size() > 512) { 752 if (value.size() > 512) {
781 CrashRendererAndClosePipe(bad_message::BDH_INVALID_WRITE_VALUE_LENGTH); 753 CrashRendererAndClosePipe(bad_message::BDH_INVALID_WRITE_VALUE_LENGTH);
782 return; 754 return;
783 } 755 }
784 756
785 const CacheQueryResult query_result = 757 const CacheQueryResult query_result =
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
1186 descriptor_id_to_characteristic_id_.clear(); 1158 descriptor_id_to_characteristic_id_.clear();
1187 characteristic_id_to_service_id_.clear(); 1159 characteristic_id_to_service_id_.clear();
1188 service_id_to_device_address_.clear(); 1160 service_id_to_device_address_.clear();
1189 connected_devices_.reset( 1161 connected_devices_.reset(
1190 new FrameConnectedBluetoothDevices(render_frame_host_)); 1162 new FrameConnectedBluetoothDevices(render_frame_host_));
1191 device_chooser_controller_.reset(); 1163 device_chooser_controller_.reset();
1192 BluetoothAdapterFactoryWrapper::Get().ReleaseAdapter(this); 1164 BluetoothAdapterFactoryWrapper::Get().ReleaseAdapter(this);
1193 } 1165 }
1194 1166
1195 } // namespace content 1167 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698