Index: chrome/common/metrics_helpers.cc |
=================================================================== |
--- chrome/common/metrics_helpers.cc (revision 64486) |
+++ chrome/common/metrics_helpers.cc (working copy) |
@@ -484,9 +484,25 @@ |
// Get up-to-date snapshot of sample stats. |
Histogram::SampleSet snapshot; |
histogram.SnapshotSample(&snapshot); |
- |
const std::string& histogram_name = histogram.histogram_name(); |
+ int corruption = histogram.FindCorruption(snapshot); |
+ if (corruption) { |
+ NOTREACHED(); |
+ // Don't send corrupt data to metrics survices. |
+ UMA_HISTOGRAM_ENUMERATION("Histogram.InconsistenciesBrowser", |
+ corruption, Histogram::NEVER_EXCEEDED_VALUE); |
+ typedef std::map<std::string, int> ProblemMap; |
+ static ProblemMap* inconsistencies = new ProblemMap; |
+ int old_corruption = (*inconsistencies)[histogram_name]; |
+ if (old_corruption == (corruption | old_corruption)) |
+ return; // We've already seen this corruption for this histogram. |
+ (*inconsistencies)[histogram_name] |= corruption; |
+ UMA_HISTOGRAM_ENUMERATION("Histogram.InconsistenciesBrowserUnique", |
+ corruption, Histogram::NEVER_EXCEEDED_VALUE); |
+ return; |
+ } |
+ |
// Find the already sent stats, or create an empty set. |
LoggedSampleMap::iterator it = logged_samples_.find(histogram_name); |
Histogram::SampleSet* already_logged; |