Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(408)

Unified Diff: components/metrics/data_use_tracker.cc

Issue 2770853002: Create Ukm ReportingService implementation. (Closed)
Patch Set: Fix register prefs Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/metrics/data_use_tracker.cc
diff --git a/components/metrics/data_use_tracker.cc b/components/metrics/data_use_tracker.cc
index 6081facf5d6c068bdbf782c5fd05d7890e1b263b..ff21d0d710167455f519412f365565dd7bd6d93f 100644
--- a/components/metrics/data_use_tracker.cc
+++ b/components/metrics/data_use_tracker.cc
@@ -22,6 +22,34 @@ namespace {
const int kDefaultUMAWeeklyQuotaBytes = 204800;
const double kDefaultUMARatio = 0.05;
+struct CellDataUsePrefs {
+ const MetricsLogUploader::MetricServiceType service_type;
+ const char* service_name;
+ const char* pref_name;
+};
+
+const CellDataUsePrefs data_use_prefs[] = {
+ {MetricsLogUploader::UMA, "UMA", metrics::prefs::kUmaCellDataUse},
+ {MetricsLogUploader::UKM, "UKM", metrics::prefs::kUkmCellDataUse},
+};
+
+const char* GetPrefByServiceName(const std::string& service_name) {
+ for (const auto& pref : data_use_prefs) {
+ if (service_name == pref.service_name)
+ return pref.pref_name;
+ }
Alexei Svitkine (slow) 2017/03/24 16:26:16 Nit: Add a NOTREACHED()?
Steven Holte 2017/03/24 18:13:29 It is reached, in most cases.
+ return NULL;
Alexei Svitkine (slow) 2017/03/24 16:26:17 nullptr
Steven Holte 2017/03/24 18:13:29 Done.
+}
+
+const char* GetPrefByServiceType(
+ const MetricsLogUploader::MetricServiceType service_type) {
Alexei Svitkine (slow) 2017/03/24 16:26:17 Nit: No need for const on the param since it's an
Steven Holte 2017/03/24 18:13:29 Done.
+ for (const auto& pref : data_use_prefs) {
+ if (service_type == pref.service_type)
+ return pref.pref_name;
+ }
Alexei Svitkine (slow) 2017/03/24 16:26:17 Nit: Add a NOTREACHED()?
Steven Holte 2017/03/24 18:13:29 It is reached, in most cases.
Steven Holte 2017/03/24 18:16:36 Actually, this one probably won't be reached.
Steven Holte 2017/03/24 18:20:13 Added a DCHECK for non-null return to ShouldUpload
+ return NULL;
Alexei Svitkine (slow) 2017/03/24 16:26:16 nullptr
Steven Holte 2017/03/24 18:13:29 Done.
+}
+
} // namespace
DataUseTracker::DataUseTracker(PrefService* local_state)
@@ -42,7 +70,9 @@ std::unique_ptr<DataUseTracker> DataUseTracker::Create(
// static
void DataUseTracker::RegisterPrefs(PrefRegistrySimple* registry) {
registry->RegisterDictionaryPref(metrics::prefs::kUserCellDataUse);
- registry->RegisterDictionaryPref(metrics::prefs::kUmaCellDataUse);
+ for (const auto& pref : data_use_prefs) {
+ registry->RegisterDictionaryPref(pref.pref_name);
+ }
}
void DataUseTracker::UpdateMetricsUsagePrefs(const std::string& service_name,
@@ -54,12 +84,18 @@ void DataUseTracker::UpdateMetricsUsagePrefs(const std::string& service_name,
return;
UpdateUsagePref(prefs::kUserCellDataUse, message_size);
- if (service_name == "UMA")
- UpdateUsagePref(prefs::kUmaCellDataUse, message_size);
+ const char* pref_name = GetPrefByServiceName(service_name);
+ if (pref_name)
+ UpdateUsagePref(pref_name, message_size);
}
-bool DataUseTracker::ShouldUploadLogOnCellular(int log_bytes) {
+bool DataUseTracker::ShouldUploadLogOnCellular(
+ int log_bytes,
+ const MetricsLogUploader::MetricServiceType service_type) {
Alexei Svitkine (slow) 2017/03/24 16:26:17 Nit: Remove const
Steven Holte 2017/03/24 18:13:29 Done.
DCHECK(thread_checker_.CalledOnValidThread());
+ const char* pref_name = GetPrefByServiceType(service_type);
+ if (!pref_name)
+ return false;
RemoveExpiredEntries();
@@ -67,7 +103,7 @@ bool DataUseTracker::ShouldUploadLogOnCellular(int log_bytes) {
if (!GetUmaWeeklyQuota(&uma_weekly_quota_bytes))
return true;
- int uma_total_data_use = ComputeTotalDataUse(prefs::kUmaCellDataUse);
+ int uma_total_data_use = ComputeTotalDataUse(pref_name);
int new_uma_total_data_use = log_bytes + uma_total_data_use;
// If the new log doesn't increase the total UMA traffic to be above the
// allowed quota then the log should be uploaded.
@@ -102,7 +138,9 @@ void DataUseTracker::UpdateUsagePref(const std::string& pref_name,
void DataUseTracker::RemoveExpiredEntries() {
DCHECK(thread_checker_.CalledOnValidThread());
- RemoveExpiredEntriesForPref(prefs::kUmaCellDataUse);
+ for (const auto& pref : data_use_prefs) {
+ RemoveExpiredEntriesForPref(pref.pref_name);
+ }
RemoveExpiredEntriesForPref(prefs::kUserCellDataUse);
}

Powered by Google App Engine
This is Rietveld 408576698