| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/metrics/metrics_log.h" | 5 #include "components/metrics/metrics_log.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 49 | 49 |
| 50 namespace metrics { | 50 namespace metrics { |
| 51 | 51 |
| 52 namespace { | 52 namespace { |
| 53 | 53 |
| 54 // Any id less than 16 bytes is considered to be a testing id. | 54 // Any id less than 16 bytes is considered to be a testing id. |
| 55 bool IsTestingID(const std::string& id) { | 55 bool IsTestingID(const std::string& id) { |
| 56 return id.size() < 16; | 56 return id.size() < 16; |
| 57 } | 57 } |
| 58 | 58 |
| 59 // Returns the date at which the current metrics client ID was created as | |
| 60 // a string containing seconds since the epoch, or "0" if none was found. | |
| 61 std::string GetMetricsEnabledDate(PrefService* pref) { | |
| 62 if (!pref) { | |
| 63 NOTREACHED(); | |
| 64 return "0"; | |
| 65 } | |
| 66 | |
| 67 return pref->GetString(prefs::kMetricsReportingEnabledTimestamp); | |
| 68 } | |
| 69 | |
| 70 // Computes a SHA-1 hash of |data| and returns it as a hex string. | 59 // Computes a SHA-1 hash of |data| and returns it as a hex string. |
| 71 std::string ComputeSHA1(const std::string& data) { | 60 std::string ComputeSHA1(const std::string& data) { |
| 72 const std::string sha1 = base::SHA1HashString(data); | 61 const std::string sha1 = base::SHA1HashString(data); |
| 73 return base::HexEncode(sha1.data(), sha1.size()); | 62 return base::HexEncode(sha1.data(), sha1.size()); |
| 74 } | 63 } |
| 75 | 64 |
| 76 void WriteFieldTrials(const std::vector<ActiveGroupId>& field_trial_ids, | 65 void WriteFieldTrials(const std::vector<ActiveGroupId>& field_trial_ids, |
| 77 SystemProfileProto* system_profile) { | 66 SystemProfileProto* system_profile) { |
| 78 for (std::vector<ActiveGroupId>::const_iterator it = | 67 for (std::vector<ActiveGroupId>::const_iterator it = |
| 79 field_trial_ids.begin(); it != field_trial_ids.end(); ++it) { | 68 field_trial_ids.begin(); it != field_trial_ids.end(); ++it) { |
| (...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 295 if (incremental_uptime_sec) | 284 if (incremental_uptime_sec) |
| 296 stability->set_incremental_uptime_sec(incremental_uptime_sec); | 285 stability->set_incremental_uptime_sec(incremental_uptime_sec); |
| 297 const uint64 uptime_sec = uptime.InSeconds(); | 286 const uint64 uptime_sec = uptime.InSeconds(); |
| 298 if (uptime_sec) | 287 if (uptime_sec) |
| 299 stability->set_uptime_sec(uptime_sec); | 288 stability->set_uptime_sec(uptime_sec); |
| 300 } | 289 } |
| 301 | 290 |
| 302 void MetricsLog::RecordEnvironment( | 291 void MetricsLog::RecordEnvironment( |
| 303 const std::vector<MetricsProvider*>& metrics_providers, | 292 const std::vector<MetricsProvider*>& metrics_providers, |
| 304 const std::vector<variations::ActiveGroupId>& synthetic_trials, | 293 const std::vector<variations::ActiveGroupId>& synthetic_trials, |
| 305 int64 install_date) { | 294 int64 install_date, |
| 295 int64 metrics_reporting_enabled_date) { |
| 306 DCHECK(!HasEnvironment()); | 296 DCHECK(!HasEnvironment()); |
| 307 | 297 |
| 308 SystemProfileProto* system_profile = uma_proto()->mutable_system_profile(); | 298 SystemProfileProto* system_profile = uma_proto()->mutable_system_profile(); |
| 309 | 299 |
| 310 std::string brand_code; | 300 std::string brand_code; |
| 311 if (client_->GetBrand(&brand_code)) | 301 if (client_->GetBrand(&brand_code)) |
| 312 system_profile->set_brand_code(brand_code); | 302 system_profile->set_brand_code(brand_code); |
| 313 | 303 |
| 314 int enabled_date; | |
| 315 bool success = | |
| 316 base::StringToInt(GetMetricsEnabledDate(local_state_), &enabled_date); | |
| 317 DCHECK(success); | |
| 318 | |
| 319 // Reduce granularity of the enabled_date field to nearest hour. | 304 // Reduce granularity of the enabled_date field to nearest hour. |
| 320 system_profile->set_uma_enabled_date(RoundSecondsToHour(enabled_date)); | 305 system_profile->set_uma_enabled_date( |
| 306 RoundSecondsToHour(metrics_reporting_enabled_date)); |
| 321 | 307 |
| 322 // Reduce granularity of the install_date field to nearest hour. | 308 // Reduce granularity of the install_date field to nearest hour. |
| 323 system_profile->set_install_date(RoundSecondsToHour(install_date)); | 309 system_profile->set_install_date(RoundSecondsToHour(install_date)); |
| 324 | 310 |
| 325 system_profile->set_application_locale(client_->GetApplicationLocale()); | 311 system_profile->set_application_locale(client_->GetApplicationLocale()); |
| 326 | 312 |
| 327 SystemProfileProto::Hardware* hardware = system_profile->mutable_hardware(); | 313 SystemProfileProto::Hardware* hardware = system_profile->mutable_hardware(); |
| 328 | 314 |
| 329 // HardwareModelName() will return an empty string on platforms where it's | 315 // HardwareModelName() will return an empty string on platforms where it's |
| 330 // not implemented or if an error occured. | 316 // not implemented or if an error occured. |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 403 DCHECK(!closed_); | 389 DCHECK(!closed_); |
| 404 closed_ = true; | 390 closed_ = true; |
| 405 } | 391 } |
| 406 | 392 |
| 407 void MetricsLog::GetEncodedLog(std::string* encoded_log) { | 393 void MetricsLog::GetEncodedLog(std::string* encoded_log) { |
| 408 DCHECK(closed_); | 394 DCHECK(closed_); |
| 409 uma_proto_.SerializeToString(encoded_log); | 395 uma_proto_.SerializeToString(encoded_log); |
| 410 } | 396 } |
| 411 | 397 |
| 412 } // namespace metrics | 398 } // namespace metrics |
| OLD | NEW |