Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(648)

Unified Diff: base/metrics/histogram.h

Issue 11682003: Serialize/Deserialize support in HistogramBase (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Another friend change Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/base.gyp ('k') | base/metrics/histogram.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/metrics/histogram.h
diff --git a/base/metrics/histogram.h b/base/metrics/histogram.h
index 24585b7ab1dee6679106c85aff17dea87ed46b14..e0965ff5fb0c2399001f97b851624c71b5ce43dd 100644
--- a/base/metrics/histogram.h
+++ b/base/metrics/histogram.h
@@ -371,11 +371,6 @@ class BASE_EXPORT Histogram : public HistogramBase {
NEVER_EXCEEDED_VALUE = 0x10
};
- struct DescriptionPair {
- Sample sample;
- const char* description; // Null means end of a list of pairs.
- };
-
//----------------------------------------------------------------------------
// For a valid histogram, input should follow these restrictions:
// minimum > 0 (if a minimum below 1 is specified, it will implicitly be
@@ -414,25 +409,6 @@ class BASE_EXPORT Histogram : public HistogramBase {
Add(static_cast<int>(time.InMilliseconds()));
}
- void AddSamples(const HistogramSamples& samples);
- bool AddSamplesFromPickle(PickleIterator* iter);
-
- // Convenience methods for serializing/deserializing the histograms.
- // Histograms from Renderer process are serialized and sent to the browser.
- // Browser process reconstructs the histogram from the pickled version
- // accumulates the browser-side shadow copy of histograms (that mirror
- // histograms created in the renderer).
-
- // Serialize the given snapshot of a Histogram into a String. Uses
- // Pickle class to flatten the object.
- static std::string SerializeHistogramInfo(const Histogram& histogram,
- const HistogramSamples& snapshot);
-
- // The following method accepts a list of pickled histograms and
- // builds a histogram and updates shadow copy of histogram data in the
- // browser process.
- static bool DeserializeHistogramInfo(const std::string& histogram_info);
-
// This constant if for FindCorruption. Since snapshots of histograms are
// taken asynchronously relative to sampling, and our counting code currently
// does not prevent race conditions, it is pretty likely that we'll catch a
@@ -476,6 +452,8 @@ class BASE_EXPORT Histogram : public HistogramBase {
size_t bucket_count) const OVERRIDE;
virtual void Add(Sample value) OVERRIDE;
virtual scoped_ptr<HistogramSamples> SnapshotSamples() const OVERRIDE;
+ virtual void AddSamples(const HistogramSamples& samples) OVERRIDE;
+ virtual bool AddSamplesFromPickle(PickleIterator* iter) OVERRIDE;
virtual void WriteHTMLGraph(std::string* output) const OVERRIDE;
virtual void WriteAscii(std::string* output) const OVERRIDE;
@@ -490,11 +468,8 @@ class BASE_EXPORT Histogram : public HistogramBase {
virtual ~Histogram();
- // Serialize the histogram's ranges to |*pickle|, returning true on success.
- // Most subclasses can leave this no-op implementation, but some will want to
- // override it, especially if the ranges cannot be re-derived from other
- // serialized parameters.
- virtual bool SerializeRanges(Pickle* pickle) const;
+ // HistogramBase implementation:
+ virtual bool SerializeInfoImpl(Pickle* pickle) const OVERRIDE;
// Method to override to skip the display of the i'th bucket if it's empty.
virtual bool PrintEmptyBucket(size_t index) const;
@@ -518,6 +493,10 @@ class BASE_EXPORT Histogram : public HistogramBase {
friend class StatisticsRecorder; // To allow it to delete duplicates.
friend class StatisticsRecorderTest;
+ friend BASE_EXPORT_PRIVATE HistogramBase* DeserializeHistogramInfo(
+ PickleIterator* iter);
+ static HistogramBase* DeserializeInfoImpl(PickleIterator* iter);
+
// Implementation of SnapshotSamples function.
scoped_ptr<SampleVector> SnapshotSampleVector() const;
@@ -592,6 +571,11 @@ class BASE_EXPORT LinearHistogram : public Histogram {
size_t bucket_count,
int32 flags);
+ struct DescriptionPair {
+ Sample sample;
+ const char* description; // Null means end of a list of pairs.
+ };
+
// Create a LinearHistogram and store a list of number/text values for use in
// writing the histogram graph.
// |descriptions| can be NULL, which means no special descriptions to set. If
@@ -631,6 +615,10 @@ class BASE_EXPORT LinearHistogram : public Histogram {
virtual bool PrintEmptyBucket(size_t index) const OVERRIDE;
private:
+ friend BASE_EXPORT_PRIVATE HistogramBase* DeserializeHistogramInfo(
+ PickleIterator* iter);
+ static HistogramBase* DeserializeInfoImpl(PickleIterator* iter);
+
// For some ranges, we store a printable description of a bucket range.
// If there is no desciption, then GetAsciiBucketRange() uses parent class
// to provide a description.
@@ -654,6 +642,10 @@ class BASE_EXPORT BooleanHistogram : public LinearHistogram {
private:
BooleanHistogram(const std::string& name, const BucketRanges* ranges);
+ friend BASE_EXPORT_PRIVATE HistogramBase* DeserializeHistogramInfo(
+ PickleIterator* iter);
+ static HistogramBase* DeserializeInfoImpl(PickleIterator* iter);
+
DISALLOW_COPY_AND_ASSIGN(BooleanHistogram);
};
@@ -681,20 +673,20 @@ class BASE_EXPORT CustomHistogram : public Histogram {
// TODO(kaiwang): Change name to ArrayToCustomEnumRanges.
static std::vector<Sample> ArrayToCustomRanges(const Sample* values,
size_t num_values);
-
- // Helper for deserializing CustomHistograms. |*ranges| should already be
- // correctly sized before this call. Return true on success.
- static bool DeserializeRanges(PickleIterator* iter,
- std::vector<Sample>* ranges);
protected:
CustomHistogram(const std::string& name,
const BucketRanges* ranges);
- virtual bool SerializeRanges(Pickle* pickle) const OVERRIDE;
+ // HistogramBase implementation:
+ virtual bool SerializeInfoImpl(Pickle* pickle) const OVERRIDE;
virtual double GetBucketSize(Count current, size_t i) const OVERRIDE;
private:
+ friend BASE_EXPORT_PRIVATE HistogramBase* DeserializeHistogramInfo(
+ PickleIterator* iter);
+ static HistogramBase* DeserializeInfoImpl(PickleIterator* iter);
+
static bool ValidateCustomRanges(const std::vector<Sample>& custom_ranges);
static BucketRanges* CreateBucketRangesFromCustomRanges(
const std::vector<Sample>& custom_ranges);
« no previous file with comments | « base/base.gyp ('k') | base/metrics/histogram.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698