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