Index: content/child/child_histogram_message_filter.cc |
diff --git a/content/child/child_histogram_message_filter.cc b/content/child/child_histogram_message_filter.cc |
index 427dd0d7d26e3952bd3b2bc568d3d4969632c958..f05d111cf8b27f1598dbdc5603e2c454f274b844 100644 |
--- a/content/child/child_histogram_message_filter.cc |
+++ b/content/child/child_histogram_message_filter.cc |
@@ -8,8 +8,7 @@ |
#include "base/bind.h" |
#include "base/message_loop/message_loop.h" |
-#include "base/metrics/statistics_recorder.h" |
-#include "base/pickle.h" |
+#include "base/metrics/histogram_delta_serialization.h" |
#include "content/child/child_process.h" |
#include "content/child/child_thread.h" |
#include "content/common/child_process_messages.h" |
@@ -18,8 +17,7 @@ namespace content { |
ChildHistogramMessageFilter::ChildHistogramMessageFilter() |
: channel_(NULL), |
- io_message_loop_(ChildProcess::current()->io_message_loop_proxy()), |
- histogram_snapshot_manager_(this) { |
+ io_message_loop_(ChildProcess::current()->io_message_loop_proxy()) { |
} |
ChildHistogramMessageFilter::~ChildHistogramMessageFilter() { |
@@ -54,53 +52,19 @@ void ChildHistogramMessageFilter::OnGetChildHistogramData(int sequence_number) { |
} |
void ChildHistogramMessageFilter::UploadAllHistograms(int sequence_number) { |
- DCHECK_EQ(0u, pickled_histograms_.size()); |
+ if (!histogram_delta_serialization_) { |
+ histogram_delta_serialization_.reset( |
+ new base::HistogramDeltaSerialization("ChildProcess")); |
+ } |
- // Push snapshots into our pickled_histograms_ vector. |
- // Note: Before serializing, we set the kIPCSerializationSourceFlag for all |
- // the histograms, so that the receiving process can distinguish them from the |
- // local histograms. |
- histogram_snapshot_manager_.PrepareDeltas( |
- base::Histogram::kIPCSerializationSourceFlag, false); |
+ std::vector<std::string> deltas; |
+ histogram_delta_serialization_->PrepareAndSerializeDeltas(&deltas); |
+ channel_->Send( |
+ new ChildProcessHostMsg_ChildHistogramData(sequence_number, deltas)); |
- channel_->Send(new ChildProcessHostMsg_ChildHistogramData( |
- sequence_number, pickled_histograms_)); |
- |
- pickled_histograms_.clear(); |
static int count = 0; |
count++; |
DHISTOGRAM_COUNTS("Histogram.ChildProcessHistogramSentCount", count); |
} |
-void ChildHistogramMessageFilter::RecordDelta( |
- const base::HistogramBase& histogram, |
- const base::HistogramSamples& snapshot) { |
- DCHECK_NE(0, snapshot.TotalCount()); |
- |
- Pickle pickle; |
- histogram.SerializeInfo(&pickle); |
- snapshot.Serialize(&pickle); |
- |
- pickled_histograms_.push_back( |
- std::string(static_cast<const char*>(pickle.data()), pickle.size())); |
-} |
- |
-void ChildHistogramMessageFilter::InconsistencyDetected( |
- base::HistogramBase::Inconsistency problem) { |
- UMA_HISTOGRAM_ENUMERATION("Histogram.InconsistenciesChildProcess", |
- problem, base::HistogramBase::NEVER_EXCEEDED_VALUE); |
-} |
- |
-void ChildHistogramMessageFilter::UniqueInconsistencyDetected( |
- base::HistogramBase::Inconsistency problem) { |
- UMA_HISTOGRAM_ENUMERATION("Histogram.InconsistenciesChildProcessUnique", |
- problem, base::HistogramBase::NEVER_EXCEEDED_VALUE); |
-} |
- |
-void ChildHistogramMessageFilter::InconsistencyDetectedInLoggedCount( |
- int amount) { |
- UMA_HISTOGRAM_COUNTS("Histogram.InconsistentSnapshotChildProcess", |
- std::abs(amount)); |
-} |
- |
} // namespace content |