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

Unified Diff: device/bluetooth/bluetooth_device_android.cc

Issue 1583333003: bluetooth: Invalidate connection objects if a connection fails and add histograms (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@my-origin
Patch Set: Clean up Created 4 years, 11 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_device_android.cc
diff --git a/device/bluetooth/bluetooth_device_android.cc b/device/bluetooth/bluetooth_device_android.cc
index cb142563d043a928919ff9b5dc0fc46fca2019ea..0d8664b6b5f67d50f86a926962dbdc6ad71eaa3e 100644
--- a/device/bluetooth/bluetooth_device_android.cc
+++ b/device/bluetooth/bluetooth_device_android.cc
@@ -8,6 +8,8 @@
#include "base/android/jni_android.h"
#include "base/android/jni_array.h"
#include "base/android/jni_string.h"
+#include "base/metrics/histogram_macros.h"
scheib 2016/01/15 01:39:45 Why is histogram_macros required? Seems to be a bu
ortuno 2016/01/15 21:34:41 Done.
+#include "base/metrics/sparse_histogram.h"
#include "base/strings/stringprintf.h"
#include "device/bluetooth/bluetooth_adapter_android.h"
#include "device/bluetooth/bluetooth_remote_gatt_service_android.h"
@@ -17,6 +19,20 @@ using base::android::AttachCurrentThread;
using base::android::AppendJavaStringArrayToStringVector;
namespace device {
+namespace {
+void RecordConnectionSuccessResult(int32_t status) {
+ UMA_HISTOGRAM_SPARSE_SLOWLY("Bluetooth.Android.GATTConnection.Success.Result",
+ status);
+}
+void RecordConnectionFailureResult(int32_t status) {
+ UMA_HISTOGRAM_SPARSE_SLOWLY("Bluetooth.Android.GATTConnection.Failure.Result",
+ status);
+}
+void RecordConnectionTerminatedResult(int32_t status) {
+ UMA_HISTOGRAM_SPARSE_SLOWLY(
+ "Bluetooth.Android.GATTConnection.Terminated.Result", status);
+}
+} // namespace
BluetoothDeviceAndroid* BluetoothDeviceAndroid::Create(
BluetoothAdapterAndroid* adapter,
@@ -206,6 +222,20 @@ void BluetoothDeviceAndroid::OnConnectionStateChange(
const JavaParamRef<jobject>& jcaller,
int32_t status,
bool connected) {
+ // There are many errors not present in the Android documentation that
+ // can be returned. We histogram these errors to better understand the
+ // cases in which they arise.
+ if (connected) {
+ RecordConnectionSuccessResult(status);
+ } else if (create_gatt_connection_error_callbacks_.size() > 0) {
+ // We assume that if there are any pending connection callbacks there
+ // was a failed connection attempt.
+ RecordConnectionFailureResult(status);
+ } else {
+ // Otherwise an existing connection was terminated.
+ RecordConnectionTerminatedResult(status);
+ }
+
gatt_connected_ = connected;
if (gatt_connected_) {
DidConnectGatt();

Powered by Google App Engine
This is Rietveld 408576698