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

Unified Diff: base/metrics/histogram_base.h

Issue 1726873002: Report histogram creation results. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased Created 4 years, 9 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/metrics/histogram.cc ('k') | base/metrics/histogram_base.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/metrics/histogram_base.h
diff --git a/base/metrics/histogram_base.h b/base/metrics/histogram_base.h
index 6817629bf8c080dd9a3fe259d96ff586c7ccebc2..f11befdf69a8360f52f142e8e50ad12a5d793097 100644
--- a/base/metrics/histogram_base.h
+++ b/base/metrics/histogram_base.h
@@ -30,7 +30,7 @@ class Pickle;
class PickleIterator;
////////////////////////////////////////////////////////////////////////////////
-// These enums are used to facilitate deserialization of histograms from other
+// This enum is used to facilitate deserialization of histograms from other
// processes into the browser. If you create another class that inherits from
// HistogramBase, add new histogram types and names below.
@@ -44,6 +44,39 @@ enum HistogramType {
std::string HistogramTypeToString(HistogramType type);
+// This enum is used for reporting how many histograms and of what types and
+// variations are being created. It has to be in the main .h file so it is
+// visible to files that define the various histogram types.
+enum HistogramReport {
+ // Count the number of reports created. The other counts divided by this
+ // number will give the average per run of the program.
+ HISTOGRAM_REPORT_CREATED = 0,
+
+ // Count the total number of histograms created. It is the limit against
+ // which all others are compared.
+ HISTOGRAM_REPORT_HISTOGRAM_CREATED = 1,
+
+ // Count the total number of histograms looked-up. It's better to cache
+ // the result of a single lookup rather than do it repeatedly.
+ HISTOGRAM_REPORT_HISTOGRAM_LOOKUP = 2,
+
+ // These count the individual histogram types. This must follow the order
+ // of HistogramType above.
+ HISTOGRAM_REPORT_TYPE_LOGARITHMIC = 3,
+ HISTOGRAM_REPORT_TYPE_LINEAR = 4,
+ HISTOGRAM_REPORT_TYPE_BOOLEAN = 5,
+ HISTOGRAM_REPORT_TYPE_CUSTOM = 6,
+ HISTOGRAM_REPORT_TYPE_SPARSE = 7,
+
+ // These indicate the individual flags that were set.
+ HISTOGRAM_REPORT_FLAG_UMA_TARGETED = 8,
+ HISTOGRAM_REPORT_FLAG_UMA_STABILITY = 9,
+ HISTOGRAM_REPORT_FLAG_PERSISTENT = 10,
+
+ // This must be last.
+ HISTOGRAM_REPORT_MAX = 11
+};
+
// Create or find existing histogram that matches the pickled info.
// Returns NULL if the pickled data has problems.
BASE_EXPORT HistogramBase* DeserializeHistogramInfo(base::PickleIterator* iter);
@@ -178,7 +211,17 @@ class BASE_EXPORT HistogramBase {
// customize the output.
void WriteJSON(std::string* output) const;
+ // This enables a histogram that reports the what types of histograms are
+ // created and their flags. It must be called while still single-threaded.
+ //
+ // IMPORTANT: Callers must update tools/metrics/histograms/histograms.xml
+ // with the following histogram:
+ // UMA.Histograms.process_type.Creations
+ static void EnableActivityReportHistogram(const std::string& process_type);
+
protected:
+ enum ReportActivity { HISTOGRAM_CREATED, HISTOGRAM_LOOKUP };
+
// Subclasses should implement this function to make SerializeInfo work.
virtual bool SerializeInfoImpl(base::Pickle* pickle) const = 0;
@@ -210,7 +253,16 @@ class BASE_EXPORT HistogramBase {
// passing |sample| as the parameter.
void FindAndRunCallback(Sample sample) const;
+ // Update report with an |activity| that occurred for |histogram|.
+ static void ReportHistogramActivity(const HistogramBase& histogram,
+ ReportActivity activicty);
+
+ // Retrieves the global histogram reporting what histograms are created.
+ static HistogramBase* report_histogram_;
+
private:
+ friend class HistogramBaseTest;
+
const std::string histogram_name_;
AtomicCount flags_;
« no previous file with comments | « base/metrics/histogram.cc ('k') | base/metrics/histogram_base.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698