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

Unified Diff: content/browser/bluetooth/bluetooth_metrics.cc

Issue 1265323004: bluetooth: Move histogram related code to its own file (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@bluetooth-uma-get-primary-service
Patch Set: Address scheib's comments Created 5 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
« no previous file with comments | « content/browser/bluetooth/bluetooth_metrics.h ('k') | content/content_browser.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/bluetooth/bluetooth_metrics.cc
diff --git a/content/browser/bluetooth/bluetooth_metrics.cc b/content/browser/bluetooth/bluetooth_metrics.cc
new file mode 100644
index 0000000000000000000000000000000000000000..fcb819916b7e4ad2d0f8f90458468de5909f3aeb
--- /dev/null
+++ b/content/browser/bluetooth/bluetooth_metrics.cc
@@ -0,0 +1,136 @@
+// Copyright 2015 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 "content/browser/bluetooth/bluetooth_metrics.h"
+
+#include <map>
+#include <set>
+#include "base/hash.h"
+#include "base/metrics/histogram_macros.h"
+#include "base/metrics/sparse_histogram.h"
+#include "content/common/bluetooth/bluetooth_scan_filter.h"
+#include "device/bluetooth/bluetooth_uuid.h"
+
+using device::BluetoothUUID;
+
+namespace {
+// TODO(ortuno): Remove once we have a macro to histogram strings.
+// http://crbug.com/520284
+int HashUUID(const std::string& uuid) {
+ uint32 data = base::SuperFastHash(uuid.data(), uuid.size());
+
+ // Strip off the signed bit because UMA doesn't support negative values,
+ // but takes a signed int as input.
+ return static_cast<int>(data & 0x7fffffff);
+}
+} // namespace
+
+namespace content {
+
+// General
+
+void RecordWebBluetoothFunctionCall(UMAWebBluetoothFunction function) {
+ UMA_HISTOGRAM_ENUMERATION("Bluetooth.Web.FunctionCall.Count",
+ static_cast<int>(function),
+ static_cast<int>(UMAWebBluetoothFunction::COUNT));
+}
+
+// requestDevice()
+
+void RecordRequestDeviceOutcome(UMARequestDeviceOutcome outcome) {
+ UMA_HISTOGRAM_ENUMERATION("Bluetooth.Web.RequestDevice.Outcome",
+ static_cast<int>(outcome),
+ static_cast<int>(UMARequestDeviceOutcome::COUNT));
+}
+
+static void RecordRequestDeviceFilters(
+ const std::vector<content::BluetoothScanFilter>& filters) {
+ UMA_HISTOGRAM_COUNTS_100("Bluetooth.Web.RequestDevice.Filters.Count",
+ filters.size());
+ for (const content::BluetoothScanFilter& filter : filters) {
+ UMA_HISTOGRAM_COUNTS_100("Bluetooth.Web.RequestDevice.FilterSize",
+ filter.services.size());
+ for (const BluetoothUUID& service : filter.services) {
+ // TODO(ortuno): Use a macro to histogram strings.
+ // http://crbug.com/520284
+ UMA_HISTOGRAM_SPARSE_SLOWLY(
+ "Bluetooth.Web.RequestDevice.Filters.Services",
+ HashUUID(service.canonical_value()));
+ }
+ }
+}
+
+static void RecordRequestDeviceOptionalServices(
+ const std::vector<BluetoothUUID>& optional_services) {
+ UMA_HISTOGRAM_COUNTS_100("Bluetooth.Web.RequestDevice.OptionalServices.Count",
+ optional_services.size());
+ for (const BluetoothUUID& service : optional_services) {
+ // TODO(ortuno): Use a macro to histogram strings.
+ // http://crbug.com/520284
+ UMA_HISTOGRAM_SPARSE_SLOWLY(
+ "Bluetooth.Web.RequestDevice.OptionalServices.Services",
+ HashUUID(service.canonical_value()));
+ }
+}
+
+static void RecordUnionOfServices(
+ const std::vector<content::BluetoothScanFilter>& filters,
+ const std::vector<BluetoothUUID>& optional_services) {
+ std::set<BluetoothUUID> union_of_services(optional_services.begin(),
+ optional_services.end());
+
+ for (const content::BluetoothScanFilter& filter : filters)
+ union_of_services.insert(filter.services.begin(), filter.services.end());
+
+ UMA_HISTOGRAM_COUNTS_100("Bluetooth.Web.RequestDevice.UnionOfServices.Count",
+ union_of_services.size());
+}
+
+void RecordRequestDeviceArguments(
+ const std::vector<content::BluetoothScanFilter>& filters,
+ const std::vector<device::BluetoothUUID>& optional_services) {
+ RecordRequestDeviceFilters(filters);
+ RecordRequestDeviceOptionalServices(optional_services);
+ RecordUnionOfServices(filters, optional_services);
+}
+
+// connectGATT
+
+void RecordConnectGATTOutcome(UMAConnectGATTOutcome outcome) {
+ UMA_HISTOGRAM_ENUMERATION("Bluetooth.Web.ConnectGATT.Outcome",
+ static_cast<int>(outcome),
+ static_cast<int>(UMAConnectGATTOutcome::COUNT));
+}
+
+void RecordConnectGATTTimeSuccess(const base::TimeDelta& duration) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("Bluetooth.Web.ConnectGATT.TimeSuccess", duration);
+}
+
+void RecordConnectGATTTimeFailed(const base::TimeDelta& duration) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("Bluetooth.Web.ConnectGATT.TimeFailed", duration);
+}
+
+// getPrimaryService
+
+void RecordGetPrimaryServiceService(const BluetoothUUID& service) {
+ // TODO(ortuno): Use a macro to histogram strings.
+ // http://crbug.com/520284
+ UMA_HISTOGRAM_SPARSE_SLOWLY("Bluetooth.Web.GetPrimaryService.Services",
+ HashUUID(service.canonical_value()));
+}
+
+void RecordGetPrimaryServiceOutcome(UMAGetPrimaryServiceOutcome outcome) {
+ UMA_HISTOGRAM_ENUMERATION(
+ "Bluetooth.Web.GetPrimaryService.Outcome", static_cast<int>(outcome),
+ static_cast<int>(UMAGetPrimaryServiceOutcome::COUNT));
+}
+
+// read/write characteristic
+
+void RecordGATTError(UMAGATTError error) {
+ UMA_HISTOGRAM_ENUMERATION("Bluetooth.GATTErrors", static_cast<int>(error),
+ static_cast<int>(UMAGATTError::MAX_ERROR));
+}
+
+} // namespace content
« no previous file with comments | « content/browser/bluetooth/bluetooth_metrics.h ('k') | content/content_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698