Index: components/metrics/persisted_logs.cc |
diff --git a/components/metrics/persisted_logs.cc b/components/metrics/persisted_logs.cc |
index 12d3a6821885aac896df975787e81447889f8c43..a407a0d46970e04f192011fd047bf7545d84c668 100644 |
--- a/components/metrics/persisted_logs.cc |
+++ b/components/metrics/persisted_logs.cc |
@@ -14,6 +14,7 @@ |
#include "base/sha1.h" |
#include "base/strings/string_number_conversions.h" |
#include "base/timer/elapsed_timer.h" |
+#include "components/metrics/persisted_logs_metrics.h" |
#include "components/prefs/pref_service.h" |
#include "components/prefs/scoped_user_pref_update.h" |
#include "third_party/zlib/google/compression_utils.h" |
@@ -26,13 +27,6 @@ const char kLogHashKey[] = "hash"; |
const char kLogTimestampKey[] = "timestamp"; |
const char kLogDataKey[] = "data"; |
-PersistedLogs::LogReadStatus MakeRecallStatusHistogram( |
- PersistedLogs::LogReadStatus status) { |
- UMA_HISTOGRAM_ENUMERATION("PrefService.PersistentLogRecallProtobufs", |
- status, PersistedLogs::END_RECALL_STATUS); |
- return status; |
-} |
- |
// Reads the value at |index| from |list_value| as a string and Base64-decodes |
// it into |result|. Returns true on success. |
bool ReadBase64String(const base::ListValue& list_value, |
@@ -58,7 +52,8 @@ std::string DecodeFromBase64(const std::string& to_convert) { |
} // namespace |
-void PersistedLogs::LogInfo::Init(const std::string& log_data, |
+void PersistedLogs::LogInfo::Init(PersistedLogsMetrics* metrics, |
+ const std::string& log_data, |
const std::string& log_timestamp) { |
DCHECK(!log_data.empty()); |
@@ -67,21 +62,21 @@ void PersistedLogs::LogInfo::Init(const std::string& log_data, |
return; |
} |
- UMA_HISTOGRAM_PERCENTAGE( |
- "UMA.ProtoCompressionRatio", |
- static_cast<int>(100 * compressed_log_data.size() / log_data.size())); |
+ metrics->RecordCompressionRatio(compressed_log_data.size(), log_data.size()); |
hash = base::SHA1HashString(log_data); |
timestamp = log_timestamp; |
} |
-PersistedLogs::PersistedLogs(PrefService* local_state, |
+PersistedLogs::PersistedLogs(std::unique_ptr<PersistedLogsMetrics> metrics, |
+ PrefService* local_state, |
const char* pref_name, |
const char* outdated_pref_name, |
size_t min_log_count, |
size_t min_log_bytes, |
size_t max_log_size) |
- : local_state_(local_state), |
+ : metrics_(std::move(metrics)), |
+ local_state_(local_state), |
pref_name_(pref_name), |
outdated_pref_name_(outdated_pref_name), |
min_log_count_(min_log_count), |
@@ -117,7 +112,9 @@ PersistedLogs::LogReadStatus PersistedLogs::DeserializeLogs() { |
void PersistedLogs::StoreLog(const std::string& log_data) { |
list_.push_back(LogInfo()); |
- list_.back().Init(log_data, base::Int64ToString(base::Time::Now().ToTimeT())); |
+ list_.back().Init(metrics_.get(), |
+ log_data, |
+ base::Int64ToString(base::Time::Now().ToTimeT())); |
} |
void PersistedLogs::StageLog() { |
@@ -139,7 +136,7 @@ void PersistedLogs::DiscardStagedLog() { |
PersistedLogs::LogReadStatus PersistedLogs::ReadLogsFromPrefList( |
const base::ListValue& list_value) { |
if (list_value.empty()) |
- return MakeRecallStatusHistogram(LIST_EMPTY); |
+ return metrics_->RecordLogReadStatus(LIST_EMPTY); |
const size_t log_count = list_value.GetSize(); |
@@ -152,7 +149,7 @@ PersistedLogs::LogReadStatus PersistedLogs::ReadLogsFromPrefList( |
!dict->GetString(kLogDataKey, &list_[i].compressed_log_data) || |
!dict->GetString(kLogHashKey, &list_[i].hash)) { |
list_.clear(); |
- return MakeRecallStatusHistogram(LOG_STRING_CORRUPTION); |
+ return metrics_->RecordLogReadStatus(LOG_STRING_CORRUPTION); |
} |
list_[i].compressed_log_data = |
@@ -165,7 +162,7 @@ PersistedLogs::LogReadStatus PersistedLogs::ReadLogsFromPrefList( |
dict->GetString(kLogTimestampKey, &list_[i].timestamp); |
} |
- return MakeRecallStatusHistogram(RECALL_SUCCESS); |
+ return metrics_->RecordLogReadStatus(RECALL_SUCCESS); |
} |
void PersistedLogs::WriteLogsToPrefList(base::ListValue* list_value) const { |
@@ -194,8 +191,7 @@ void PersistedLogs::WriteLogsToPrefList(base::ListValue* list_value) const { |
for (size_t i = start; i < list_.size(); ++i) { |
size_t log_size = list_[i].compressed_log_data.length(); |
if (log_size > max_log_size_) { |
- UMA_HISTOGRAM_COUNTS("UMA.Large Accumulated Log Not Persisted", |
- static_cast<int>(log_size)); |
+ metrics_->RecordDroppedLogSize(log_size); |
dropped_logs_num++; |
continue; |
} |
@@ -208,13 +204,13 @@ void PersistedLogs::WriteLogsToPrefList(base::ListValue* list_value) const { |
list_value->Append(std::move(dict_value)); |
} |
if (dropped_logs_num > 0) |
- UMA_HISTOGRAM_COUNTS("UMA.UnsentLogs.Dropped", dropped_logs_num); |
+ metrics_->RecordDroppedLogsNum(dropped_logs_num); |
} |
PersistedLogs::LogReadStatus PersistedLogs::ReadLogsFromOldFormatPrefList( |
const base::ListValue& list_value) { |
if (list_value.empty()) |
- return MakeRecallStatusHistogram(LIST_EMPTY); |
+ return metrics_->RecordLogReadStatus(LIST_EMPTY); |
// For each log, there's two entries in the list (the data and the hash). |
DCHECK_EQ(0U, list_value.GetSize() % 2); |
@@ -229,11 +225,11 @@ PersistedLogs::LogReadStatus PersistedLogs::ReadLogsFromOldFormatPrefList( |
if (!ReadBase64String(list_value, i * 2, &list_[i].compressed_log_data) || |
!ReadBase64String(list_value, i * 2 + 1, &list_[i].hash)) { |
list_.clear(); |
- return MakeRecallStatusHistogram(LOG_STRING_CORRUPTION); |
+ return metrics_->RecordLogReadStatus(LOG_STRING_CORRUPTION); |
} |
} |
- return MakeRecallStatusHistogram(RECALL_SUCCESS); |
+ return metrics_->RecordLogReadStatus(RECALL_SUCCESS); |
} |
} // namespace metrics |