// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef BASE_METRICS_HISTOGRAM_BASE_H_ #define BASE_METRICS_HISTOGRAM_BASE_H_ #include <limits.h> #include <stddef.h> #include <stdint.h> #include <atomic> #include <memory> #include <string> #include <string_view> #include "base/atomicops.h" #include "base/base_export.h" #include "base/time/time.h" #include "base/values.h" namespace base { class Value; class HistogramBase; class HistogramSamples; class Pickle; class PickleIterator; //////////////////////////////////////////////////////////////////////////////// // 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. enum HistogramType { … }; // Controls the verbosity of the information when the histogram is serialized to // a JSON. // GENERATED_JAVA_ENUM_PACKAGE: org.chromium.base.metrics enum JSONVerbosityLevel { … }; 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 { … }; // 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); //////////////////////////////////////////////////////////////////////////////// class BASE_EXPORT HistogramBase { … }; } // namespace base #endif // BASE_METRICS_HISTOGRAM_BASE_H_