1 // Copyright 2020 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "components/metrics/structured/histogram_util.h"
6
7 #include "base/metrics/histogram_functions.h"
8 #include "base/metrics/histogram_macros.h"
9 #include "base/strings/strcat.h"
10
11 namespace metrics::structured {
12
LogInternalError(StructuredMetricsError error)13 void LogInternalError(StructuredMetricsError error) {
14 UMA_HISTOGRAM_ENUMERATION("UMA.StructuredMetrics.InternalError2", error);
15 }
16
LogEventRecordingState(EventRecordingState state)17 void LogEventRecordingState(EventRecordingState state) {
18 UMA_HISTOGRAM_ENUMERATION("UMA.StructuredMetrics.EventRecordingState2",
19 state);
20 }
21
LogNumEventsInUpload(const int num_events)22 void LogNumEventsInUpload(const int num_events) {
23 UMA_HISTOGRAM_COUNTS_1000("UMA.StructuredMetrics.NumEventsInUpload",
24 num_events);
25 }
26
LogKeyValidation(KeyValidationState state)27 void LogKeyValidation(KeyValidationState state) {
28 UMA_HISTOGRAM_ENUMERATION("UMA.StructuredMetrics.KeyValidationState", state);
29 }
30
LogNumEventsRecordedBeforeInit(int num_events)31 void LogNumEventsRecordedBeforeInit(int num_events) {
32 UMA_HISTOGRAM_COUNTS_100("UMA.StructuredMetrics.EventsRecordedBeforeInit",
33 num_events);
34 }
35
LogNumFilesPerExternalMetricsScan(int num_files)36 void LogNumFilesPerExternalMetricsScan(int num_files) {
37 base::UmaHistogramCounts1000(
38 "UMA.StructuredMetrics.NumFilesPerExternalMetricsScan", num_files);
39 }
40
LogEventFileSizeKB(int64_t file_size_kb)41 void LogEventFileSizeKB(int64_t file_size_kb) {
42 base::UmaHistogramMemoryKB("UMA.StructuredMetrics.EventFileSize",
43 file_size_kb);
44 }
LogEventSerializedSizeBytes(int64_t event_size_bytes)45 void LogEventSerializedSizeBytes(int64_t event_size_bytes) {
46 base::UmaHistogramCounts1000("UMA.StructuredMetrics.EventSerializedSize",
47 event_size_bytes);
48 }
49
LogUploadSizeBytes(int64_t upload_size_bytes)50 void LogUploadSizeBytes(int64_t upload_size_bytes) {
51 base::UmaHistogramCounts100000("StructuredMetrics.UploadSize",
52 upload_size_bytes);
53 }
54
LogExternalMetricsScanInUpload(int num_scans)55 void LogExternalMetricsScanInUpload(int num_scans) {
56 base::UmaHistogramExactLinear(
57 "UMA.StructuredMetrics.ExternalMetricScansPerUpload", num_scans, 10);
58 }
59
LogDroppedExternalMetrics(int num_dropped)60 void LogDroppedExternalMetrics(int num_dropped) {
61 base::UmaHistogramCounts1000("StructuredMetrics.ExternalMetricsDropped",
62 num_dropped);
63 }
64
LogDroppedProjectExternalMetrics(std::string_view project_name,int num_dropped)65 void LogDroppedProjectExternalMetrics(std::string_view project_name,
66 int num_dropped) {
67 const std::string histogram_name =
68 base::StrCat({"StructuredMetrics.ExternalMetricsDropped.", project_name});
69 base::UmaHistogramCounts100(histogram_name, num_dropped);
70 }
71
LogProducedProjectExternalMetrics(std::string_view project_name,int num_produced)72 void LogProducedProjectExternalMetrics(std::string_view project_name,
73 int num_produced) {
74 const std::string histogram_name = base::StrCat(
75 {"StructuredMetrics.ExternalMetricsProduced.", project_name});
76 base::UmaHistogramCounts100(histogram_name, num_produced);
77 }
78
79 } // namespace metrics::structured
80