1 // Copyright 2016 The Chromium Authors. All rights reserved.
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/unsent_log_store_metrics_impl.h"
6
7 #include "base/metrics/histogram_functions.h"
8
9 namespace metrics {
10
RecordLogReadStatus(UnsentLogStoreMetrics::LogReadStatus status)11 void UnsentLogStoreMetricsImpl::RecordLogReadStatus(
12 UnsentLogStoreMetrics::LogReadStatus status) {
13 base::UmaHistogramEnumeration("PrefService.PersistentLogRecallProtobufs",
14 status,
15 UnsentLogStoreMetrics::END_RECALL_STATUS);
16 }
17
RecordCompressionRatio(size_t compressed_size,size_t original_size)18 void UnsentLogStoreMetricsImpl::RecordCompressionRatio(size_t compressed_size,
19 size_t original_size) {
20 base::UmaHistogramPercentageObsoleteDoNotUse(
21 "UMA.ProtoCompressionRatio",
22 static_cast<int>(100 * compressed_size / original_size));
23 }
24
RecordDroppedLogSize(size_t size)25 void UnsentLogStoreMetricsImpl::RecordDroppedLogSize(size_t size) {
26 base::UmaHistogramCounts1M("UMA.UnsentLogs.DroppedSize",
27 static_cast<int>(size));
28 }
29
RecordDroppedLogsNum(int dropped_logs_num)30 void UnsentLogStoreMetricsImpl::RecordDroppedLogsNum(int dropped_logs_num) {
31 base::UmaHistogramCounts1M("UMA.UnsentLogs.Dropped", dropped_logs_num);
32 }
33
RecordIntendingToSentLogs(int num)34 void RecordIntendingToSentLogs(int num) {
35 base::UmaHistogramExactLinear("UMA.UnsentLogs.IntendingToSend", num, 22);
36 }
37
RecordSentLog()38 void RecordSentLog() {
39 base::UmaHistogramBoolean("UMA.UnsentLogs.Sent", true);
40 }
41
RecordLastUnsentLogMetadataMetrics(int unsent_samples_count,int sent_samples_count,int persisted_size_in_kb)42 void UnsentLogStoreMetricsImpl::RecordLastUnsentLogMetadataMetrics(
43 int unsent_samples_count,
44 int sent_samples_count,
45 int persisted_size_in_kb) {
46 if (!base::FeatureList::IsEnabled(kRecordLastUnsentLogMetadataMetrics))
47 return;
48
49 if (unsent_samples_count < 0 || sent_samples_count < 0 ||
50 persisted_size_in_kb < 0) {
51 return;
52 }
53
54 base::UmaHistogramCounts100000("UMA.UnsentLogs.UnsentCount",
55 unsent_samples_count);
56 base::UmaHistogramCounts1M("UMA.UnsentLogs.SentCount", sent_samples_count);
57 // Sets 10MB as maximum because the total size of logs in each LogStore is up
58 // to 6MB.
59 base::UmaHistogramCounts10000("UMA.UnsentLogs.PersistedSizeInKB",
60 persisted_size_in_kb);
61
62 if (sent_samples_count == 0 && unsent_samples_count == 0) {
63 base::UmaHistogramPercentageObsoleteDoNotUse(
64 "UMA.UnsentLogs.UnsentPercentage", 0);
65 } else {
66 base::UmaHistogramPercentageObsoleteDoNotUse(
67 "UMA.UnsentLogs.UnsentPercentage",
68 100 * unsent_samples_count /
69 (unsent_samples_count + sent_samples_count));
70 }
71 }
72
73 } // namespace metrics
74