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

Unified Diff: device/bluetooth/bluetooth_adapter_mac_metrics.mm

Issue 2912633002: bluetooth: macOS: Adding histograms for NSError values (Closed)
Patch Set: . Created 3 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: device/bluetooth/bluetooth_adapter_mac_metrics.mm
diff --git a/device/bluetooth/bluetooth_adapter_mac_metrics.mm b/device/bluetooth/bluetooth_adapter_mac_metrics.mm
new file mode 100644
index 0000000000000000000000000000000000000000..e074d56251e6944d989da0444182a4c30cc2aea4
--- /dev/null
+++ b/device/bluetooth/bluetooth_adapter_mac_metrics.mm
@@ -0,0 +1,195 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "device/bluetooth/bluetooth_adapter_mac_metrics.h"
+
+#import <CoreBluetooth/CoreBluetooth.h>
+#import <Foundation/Foundation.h>
+
+#include "base/metrics/histogram_macros.h"
+
+namespace {
+
+MacOSBluetoothOperationsResult GetMacOSOperationResultFromNSError(
+ NSError* error) {
+ if (!error)
+ return MacOSBluetoothOperationsResult::NO_ERROR;
+ NSString* error_domain = [error domain];
+ NSInteger error_code = [error code];
+ if ([error_domain isEqualToString:CBErrorDomain]) {
+ CBError cb_error_code = static_cast<CBError>(error_code);
+ switch (cb_error_code) {
+ case CBErrorUnknown:
+ return MacOSBluetoothOperationsResult::CBERROR_UNKNOWN;
+ case CBErrorInvalidParameters:
+ return MacOSBluetoothOperationsResult::CBERROR_INVALID_PARAMETERS;
+ case CBErrorInvalidHandle:
+ return MacOSBluetoothOperationsResult::CBERROR_INVALID_HANDLE;
+ case CBErrorNotConnected:
+ return MacOSBluetoothOperationsResult::CBERROR_NOT_CONNECTED;
+ case CBErrorOutOfSpace:
+ return MacOSBluetoothOperationsResult::CBERROR_OUT_OF_SPACE;
+ case CBErrorOperationCancelled:
+ return MacOSBluetoothOperationsResult::CBERROR_OPERATION_CANCELLED;
+ case CBErrorConnectionTimeout:
+ return MacOSBluetoothOperationsResult::CBERROR_CONNECTION_TIMEOUT;
+ case CBErrorPeripheralDisconnected:
+ return MacOSBluetoothOperationsResult::CBERROR_PERIPHERAL_DISCONNECTED;
+ case CBErrorUUIDNotAllowed:
+ return MacOSBluetoothOperationsResult::CBERROR_UUID_NOT_ALLOWED;
+ case CBErrorAlreadyAdvertising:
+ return MacOSBluetoothOperationsResult::CBERROR_ALREADY_ADVERTISING;
+ default:
+ if (@available(macOS 10.11, *)) {
+ if (CBErrorMaxConnection == cb_error_code)
+ return MacOSBluetoothOperationsResult::CBERROR_MAX_CONNECTION;
+ }
+ NOTREACHED();
+ }
+ return MacOSBluetoothOperationsResult::CBATT_ERROR_UNKNOWN_ERROR_CODE;
+ } else if ([error_domain isEqualToString:CBATTErrorDomain]) {
+ switch (static_cast<CBATTError>(error_code)) {
+ case CBATTErrorSuccess:
+ return MacOSBluetoothOperationsResult::CBATT_ERROR_SUCCESS;
+ case CBATTErrorInvalidHandle:
+ return MacOSBluetoothOperationsResult::CBATT_ERROR_INVALID_HANDLE;
+ case CBATTErrorReadNotPermitted:
+ return MacOSBluetoothOperationsResult::CBATT_ERROR_READ_NOT_PERMITTED;
+ case CBATTErrorWriteNotPermitted:
+ return MacOSBluetoothOperationsResult::CBATT_ERROR_WRITE_NOT_PERMITTED;
+ case CBATTErrorInvalidPdu:
+ return MacOSBluetoothOperationsResult::CBATT_ERROR_INVALID_PDU;
+ case CBATTErrorInsufficientAuthentication:
+ return MacOSBluetoothOperationsResult::
+ CBATT_ERROR_INSUFFICIENT_AUTHENTICATION;
+ case CBATTErrorRequestNotSupported:
+ return MacOSBluetoothOperationsResult::
+ CBATT_ERROR_REQUEST_NOT_SUPPORTED;
+ case CBATTErrorInvalidOffset:
+ return MacOSBluetoothOperationsResult::CBATT_ERROR_INVALID_OFFSET;
+ case CBATTErrorInsufficientAuthorization:
+ return MacOSBluetoothOperationsResult::
+ CBATT_ERROR_INSUFFICIENT_AUTHORIZATION;
+ case CBATTErrorPrepareQueueFull:
+ return MacOSBluetoothOperationsResult::CBATT_ERROR_PREPARE_QUEUE_FULL;
+ case CBATTErrorAttributeNotFound:
+ return MacOSBluetoothOperationsResult::CBATT_ERROR_ATTRIBUTE_NOT_FOUND;
+ case CBATTErrorAttributeNotLong:
+ return MacOSBluetoothOperationsResult::CBATT_ERROR_ATTRIBUTE_NOT_LONG;
+ case CBATTErrorInsufficientEncryptionKeySize:
+ return MacOSBluetoothOperationsResult::
+ CBATT_ERROR_INSUFFICIENT_ENCRYPTION_KEY_SIZE;
+ case CBATTErrorInvalidAttributeValueLength:
+ return MacOSBluetoothOperationsResult::
+ CBATT_ERROR_INVALID_ATTRIBUTE_VALUE_LENGTH;
+ case CBATTErrorUnlikelyError:
+ return MacOSBluetoothOperationsResult::CBATT_ERROR_UNLIKELY_ERROR;
+ case CBATTErrorInsufficientEncryption:
+ return MacOSBluetoothOperationsResult::
+ CBATT_ERROR_INSUFFICIENT_ENCRYPTION;
+ case CBATTErrorUnsupportedGroupType:
+ return MacOSBluetoothOperationsResult::
+ CBATT_ERROR_UNSUPPORTED_GROUP_TYPE;
+ case CBATTErrorInsufficientResources:
+ return MacOSBluetoothOperationsResult::
+ CBATT_ERROR_INSUFFICIENT_RESOURCES;
+ }
+ return MacOSBluetoothOperationsResult::CBERROR_UNKNOWN_ERROR_CODE;
+ }
+ // TODO(crbug.com/755667): Needs to create an histogram to record unknown
+ // error domains.
+ return MacOSBluetoothOperationsResult::UNKNOWN_ERROR_DOMAIN;
+}
+
+} // namespace
+
+void RecordDidFailToConnectPeripheralResult(NSError* error) {
+ MacOSBluetoothOperationsResult histogram_macos_error =
+ GetMacOSOperationResultFromNSError(error);
+ UMA_HISTOGRAM_ENUMERATION(
+ "Bluetooth.MacOS.Errors.DidFailToConnectToPeripheral",
+ static_cast<int>(histogram_macos_error),
+ static_cast<int>(MacOSBluetoothOperationsResult::MAX));
+}
+
+void RecordDidDisconnectPeripheralResult(NSError* error) {
+ MacOSBluetoothOperationsResult histogram_macos_error =
+ GetMacOSOperationResultFromNSError(error);
+ UMA_HISTOGRAM_ENUMERATION(
+ "Bluetooth.MacOS.Errors.DidDisconnectPeripheral",
+ static_cast<int>(histogram_macos_error),
+ static_cast<int>(MacOSBluetoothOperationsResult::MAX));
+}
+
+void RecordDidDiscoverPrimaryServicesResult(NSError* error) {
+ MacOSBluetoothOperationsResult histogram_macos_error =
+ GetMacOSOperationResultFromNSError(error);
+ UMA_HISTOGRAM_ENUMERATION(
+ "Bluetooth.MacOS.Errors.DidDiscoverPrimaryServices",
+ static_cast<int>(histogram_macos_error),
+ static_cast<int>(MacOSBluetoothOperationsResult::MAX));
+}
+
+void RecordDidDiscoverCharacteristicsResult(NSError* error) {
+ MacOSBluetoothOperationsResult histogram_macos_error =
+ GetMacOSOperationResultFromNSError(error);
+ UMA_HISTOGRAM_ENUMERATION(
+ "Bluetooth.MacOS.Errors.DidDiscoverCharacteristics",
+ static_cast<int>(histogram_macos_error),
+ static_cast<int>(MacOSBluetoothOperationsResult::MAX));
+}
+
+void RecordDidUpdateValueResult(NSError* error) {
+ MacOSBluetoothOperationsResult histogram_macos_error =
+ GetMacOSOperationResultFromNSError(error);
+ UMA_HISTOGRAM_ENUMERATION(
+ "Bluetooth.MacOS.Errors.DidUpdateValue",
+ static_cast<int>(histogram_macos_error),
+ static_cast<int>(MacOSBluetoothOperationsResult::MAX));
+}
+
+void RecordDidWriteValueResult(NSError* error) {
+ MacOSBluetoothOperationsResult histogram_macos_error =
+ GetMacOSOperationResultFromNSError(error);
+ UMA_HISTOGRAM_ENUMERATION(
+ "Bluetooth.MacOS.Errors.DidWriteValue",
+ static_cast<int>(histogram_macos_error),
+ static_cast<int>(MacOSBluetoothOperationsResult::MAX));
+}
+
+void RecordDidUpdateNotificationStateResult(NSError* error) {
+ MacOSBluetoothOperationsResult histogram_macos_error =
+ GetMacOSOperationResultFromNSError(error);
+ UMA_HISTOGRAM_ENUMERATION(
+ "Bluetooth.MacOS.Errors.DidUpdateNotificationState",
+ static_cast<int>(histogram_macos_error),
+ static_cast<int>(MacOSBluetoothOperationsResult::MAX));
+}
+
+void RecordDidDiscoverDescriptorsResult(NSError* error) {
+ MacOSBluetoothOperationsResult histogram_macos_error =
+ GetMacOSOperationResultFromNSError(error);
+ UMA_HISTOGRAM_ENUMERATION(
+ "Bluetooth.MacOS.Errors.DidDiscoverDescriptors",
+ static_cast<int>(histogram_macos_error),
+ static_cast<int>(MacOSBluetoothOperationsResult::MAX));
+}
+
+void RecordDidUpdateValueForDescriptorResult(NSError* error) {
+ MacOSBluetoothOperationsResult histogram_macos_error =
+ GetMacOSOperationResultFromNSError(error);
+ UMA_HISTOGRAM_ENUMERATION(
+ "Bluetooth.MacOS.Errors.DidUpdateValueForDescriptor",
+ static_cast<int>(histogram_macos_error),
+ static_cast<int>(MacOSBluetoothOperationsResult::MAX));
+}
+
+void RecordDidWriteValueForDescriptorResult(NSError* error) {
+ MacOSBluetoothOperationsResult histogram_macos_error =
+ GetMacOSOperationResultFromNSError(error);
+ UMA_HISTOGRAM_ENUMERATION(
+ "Bluetooth.MacOS.Errors.DidWriteValueForDescriptor",
+ static_cast<int>(histogram_macos_error),
+ static_cast<int>(MacOSBluetoothOperationsResult::MAX));
+}
« no previous file with comments | « device/bluetooth/bluetooth_adapter_mac_metrics.h ('k') | device/bluetooth/bluetooth_low_energy_device_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698