| Index: content/browser/bluetooth/bluetooth_metrics.h
|
| diff --git a/content/browser/bluetooth/bluetooth_metrics.h b/content/browser/bluetooth/bluetooth_metrics.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3483d4c34fac3852498767ceefe3d8a81ae63152
|
| --- /dev/null
|
| +++ b/content/browser/bluetooth/bluetooth_metrics.h
|
| @@ -0,0 +1,135 @@
|
| +// 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.
|
| +
|
| +#ifndef CONTENT_BROWSER_BLUETOOTH_BLUETOOTH_METRICS_H_
|
| +#define CONTENT_BROWSER_BLUETOOTH_BLUETOOTH_METRICS_H_
|
| +
|
| +#include <vector>
|
| +
|
| +namespace base {
|
| +class TimeDelta;
|
| +}
|
| +
|
| +namespace device {
|
| +class BluetoothUUID;
|
| +}
|
| +
|
| +namespace content {
|
| +struct BluetoothScanFilter;
|
| +
|
| +// General Metrics
|
| +
|
| +// Enumaration of each Web Bluetooth API entry point.
|
| +enum class UMAWebBluetoothFunction {
|
| + REQUEST_DEVICE = 0,
|
| + CONNECT_GATT = 1,
|
| + GET_PRIMARY_SERVICE = 2,
|
| + GET_CHARACTERISTIC = 3,
|
| + CHARACTERISTIC_READ_VALUE = 4,
|
| + CHARACTERISTIC_WRITE_VALUE = 5,
|
| + // NOTE: Add new actions immediately above this line. Make sure to update
|
| + // the enum list in tools/metrics/histograms/histograms.xml accordingly.
|
| + COUNT
|
| +};
|
| +
|
| +// There should be a call to this function for every call to the Web Bluetooth
|
| +// API.
|
| +void RecordWebBluetoothFunctionCall(UMAWebBluetoothFunction function);
|
| +
|
| +// requestDevice() Metrics
|
| +enum class UMARequestDeviceOutcome {
|
| + SUCCESS = 0,
|
| + NO_BLUETOOTH_ADAPTER = 1,
|
| + NO_RENDER_FRAME = 2,
|
| + DISCOVERY_START_FAILED = 3,
|
| + DISCOVERY_STOP_FAILED = 4,
|
| + NO_MATCHING_DEVICES_FOUND = 5,
|
| + BLUETOOTH_ADAPTER_NOT_PRESENT = 6,
|
| + BLUETOOTH_ADAPTER_OFF = 7,
|
| + // NOTE: Add new requestDevice() outcomes immediately above this line. Make
|
| + // sure to update the enum list in
|
| + // tools/metrics/histograms/histograms.xml accordingly.
|
| + COUNT
|
| +};
|
| +// There should be a call to this function before every
|
| +// Send(BluetoothMsg_RequestDeviceSuccess...) or
|
| +// Send(BluetoothMsg_RequestDeviceError...).
|
| +void RecordRequestDeviceOutcome(UMARequestDeviceOutcome outcome);
|
| +
|
| +// Records stats about the arguments used when calling requestDevice.
|
| +// - The number of filters used.
|
| +// - The size of each filter.
|
| +// - UUID of the services used in filters.
|
| +// - Number of optional services used.
|
| +// - UUID of the optional services.
|
| +// - Size of the union of all services.
|
| +void RecordRequestDeviceArguments(
|
| + const std::vector<content::BluetoothScanFilter>& filters,
|
| + const std::vector<device::BluetoothUUID>& optional_services);
|
| +
|
| +// connectGATT() Metrics
|
| +enum class UMAConnectGATTOutcome {
|
| + SUCCESS = 0,
|
| + NO_DEVICE = 1,
|
| + UNKNOWN = 2,
|
| + IN_PROGRESS = 3,
|
| + FAILED = 4,
|
| + AUTH_FAILED = 5,
|
| + AUTH_CANCELED = 6,
|
| + AUTH_REJECTED = 7,
|
| + AUTH_TIMEOUT = 8,
|
| + UNSUPPORTED_DEVICE = 9,
|
| + // Note: Add new ConnectGATT outcomes immediately above this line. Make sure
|
| + // to update the enum list in tools/metrics/histograms/histograms.xml
|
| + // accordingly.
|
| + COUNT
|
| +};
|
| +// There should be a call to this function before every
|
| +// Send(BluetoothMsg_ConnectGATTSuccess) and
|
| +// Send(BluetoothMsg_ConnectGATTError).
|
| +void RecordConnectGATTOutcome(UMAConnectGATTOutcome outcome);
|
| +// Records how long it took for the connection to succeed.
|
| +void RecordConnectGATTTimeSuccess(const base::TimeDelta& duration);
|
| +// Records how long it took for the connection to fail.
|
| +void RecordConnectGATTTimeFailed(const base::TimeDelta& duration);
|
| +
|
| +// getPrimaryService() Metrics
|
| +enum class UMAGetPrimaryServiceOutcome {
|
| + SUCCESS = 0,
|
| + NO_DEVICE = 1,
|
| + NOT_FOUND = 2,
|
| + // Note: Add new GetPrimaryService outcomes immediately above this line.
|
| + // Make sure to update the enum list in
|
| + // tools/metrics/histograms/histograms.xml accordingly.
|
| + COUNT
|
| +};
|
| +// Record the service uuid used when calling getPrimaryService.
|
| +void RecordGetPrimaryServiceService(const device::BluetoothUUID& service);
|
| +// There should be a call to this function for every call to
|
| +// Send(BluetoothMsg_GetPrimaryServiceSuccess) and
|
| +// Send(BluetoothMsg_GetPrimaryServiceError).
|
| +void RecordGetPrimaryServiceOutcome(UMAGetPrimaryServiceOutcome outcome);
|
| +
|
| +// read/write characteristics Metrics
|
| +// TODO(ortuno): For now we are just copying over the code to record these
|
| +// errors but a follow up CL will add a function for each operation.
|
| +
|
| +// These types of errors aren't as common. We log them to understand
|
| +// how common they are and if we need to investigate more.
|
| +enum class UMAGATTError {
|
| + UNKNOWN = 0,
|
| + FAILED = 1,
|
| + IN_PROGRESS = 2,
|
| + NOT_PAIRED = 3,
|
| + // Note: Add new GATT Errors immediately above this line.
|
| + // Make sure to update the enum list in
|
| + // tools/metrics/histograms/histograms.xml accordingly.
|
| + MAX_ERROR,
|
| +};
|
| +// Records the GATT Error the function returned.
|
| +void RecordGATTError(UMAGATTError error);
|
| +
|
| +} // namespace content
|
| +
|
| +#endif // CONTENT_BROWSER_BLUETOOTH_BLUETOOTH_METRICS_H_
|
|
|