| Index: chrome/renderer/renderer_histogram_snapshots.cc
|
| ===================================================================
|
| --- chrome/renderer/renderer_histogram_snapshots.cc (revision 64486)
|
| +++ chrome/renderer/renderer_histogram_snapshots.cc (working copy)
|
| @@ -52,17 +52,33 @@
|
| sequence_number, pickled_histograms));
|
| }
|
|
|
| -// Extract snapshot data and then send it off the the Browser process
|
| -// to save it.
|
| +// Extract snapshot data, remember what we've seen so far, and then send off the
|
| +// delta to the browser.
|
| void RendererHistogramSnapshots::UploadHistrogram(
|
| const Histogram& histogram,
|
| HistogramPickledList* pickled_histograms) {
|
| -
|
| // 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 the browser.
|
| + UMA_HISTOGRAM_ENUMERATION("Histogram.InconsistenciesRenderer",
|
| + 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.InconsistenciesRendererUnique",
|
| + 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;
|
| @@ -89,7 +105,6 @@
|
| const Histogram& histogram,
|
| const Histogram::SampleSet& snapshot,
|
| HistogramPickledList* pickled_histograms) {
|
| -
|
| DCHECK(0 != snapshot.TotalCount());
|
| snapshot.CheckSize(histogram);
|
|
|
|
|