Chromium Code Reviews| 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); |
| } |