1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_ASH_CERT_PROVISIONING_CERT_PROVISIONING_METRICS_H_
#define CHROME_BROWSER_ASH_CERT_PROVISIONING_CERT_PROVISIONING_METRICS_H_
#include <string_view>
#include "base/time/time.h"
#include "chrome/browser/ash/cert_provisioning/cert_provisioning_common.h"
#include "components/policy/core/common/cloud/cloud_policy_constants.h"
namespace ash::cert_provisioning {
inline constexpr std::string_view kDmStatusHistogramName =
"ChromeOS.CertProvisioning.DmStatus.Dynamic";
inline constexpr std::string_view kCertProvBackendErrorHistogramName =
"ChromeOS.CertProvisioning.CertProvBackendError.Dynamic";
// The enum is used for UMA, the values should not be renumerated.
enum class CertProvisioningEvent {
// Some worker tried to register(or reregister) for invalidation topic.
kRegisteredToInvalidationTopic = 0,
// Invalidation received.
kInvalidationReceived = 1,
// Some worker retried to continue without invalidation.
kWorkerRetryWithoutInvalidation = 2,
// Some worker retried to continue without invalidation and made some
// progress.
kWorkerRetrySucceededWithoutInvalidation = 3,
// Profile retried manually from UI.
kWorkerRetryManual = 4,
kWorkerCreated = 5,
kWorkerDeserialized = 6,
kWorkerDeserializationFailed = 7,
// The subscription to an invalidation topic (the start of which is reported
// as kRegisteredToInvalidationTopic) has successfully finished.
kSuccessfullySubscribedToInvalidationTopic = 8,
kMaxValue = kSuccessfullySubscribedToInvalidationTopic
};
// Records the |final_state| of a worker. If the worker is failed, also records
// its |prev_state| into the same histogram. It is reasonable to put both of
// them in the same histogram because the worker should never stop on an
// intermediate state and even if it does, it is the same as failure.
void RecordResult(ProtocolVersion protocol_version,
CertScope scope,
CertProvisioningWorkerState final_state,
CertProvisioningWorkerState prev_state);
void RecordEvent(ProtocolVersion protocol_version,
CertScope scope,
CertProvisioningEvent event);
// Records received DeviceManagementStatus-es by the dynamic workers.
void RecordDmStatusForDynamic(policy::DeviceManagementStatus status);
// Records received CertProvBackendError-s by the dynamic workers.
void RecordCertProvBackendErrorForDynamic(
enterprise_management::CertProvBackendError::Error error);
} // namespace ash::cert_provisioning
#endif // CHROME_BROWSER_ASH_CERT_PROVISIONING_CERT_PROVISIONING_METRICS_H_
|