| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef BASE_METRICS_HISTOGRAM_BASE_H_ | 5 #ifndef BASE_METRICS_HISTOGRAM_BASE_H_ |
| 6 #define BASE_METRICS_HISTOGRAM_BASE_H_ | 6 #define BASE_METRICS_HISTOGRAM_BASE_H_ |
| 7 | 7 |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <string> | 10 #include <string> |
| 11 #include <vector> | 11 #include <vector> |
| 12 | 12 |
| 13 #include "base/atomicops.h" | 13 #include "base/atomicops.h" |
| 14 #include "base/base_export.h" | 14 #include "base/base_export.h" |
| 15 #include "base/basictypes.h" | 15 #include "base/basictypes.h" |
| 16 #include "base/callback.h" |
| 16 #include "base/memory/scoped_ptr.h" | 17 #include "base/memory/scoped_ptr.h" |
| 17 #include "base/strings/string_piece.h" | 18 #include "base/strings/string_piece.h" |
| 18 #include "base/time/time.h" | 19 #include "base/time/time.h" |
| 19 | 20 |
| 20 class Pickle; | 21 class Pickle; |
| 21 class PickleIterator; | 22 class PickleIterator; |
| 22 | 23 |
| 23 namespace base { | 24 namespace base { |
| 24 | 25 |
| 25 class DictionaryValue; | 26 class DictionaryValue; |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 | 139 |
| 139 // The following methods provide graphical histogram displays. | 140 // The following methods provide graphical histogram displays. |
| 140 virtual void WriteHTMLGraph(std::string* output) const = 0; | 141 virtual void WriteHTMLGraph(std::string* output) const = 0; |
| 141 virtual void WriteAscii(std::string* output) const = 0; | 142 virtual void WriteAscii(std::string* output) const = 0; |
| 142 | 143 |
| 143 // Produce a JSON representation of the histogram. This is implemented with | 144 // Produce a JSON representation of the histogram. This is implemented with |
| 144 // the help of GetParameters and GetCountAndBucketData; overwrite them to | 145 // the help of GetParameters and GetCountAndBucketData; overwrite them to |
| 145 // customize the output. | 146 // customize the output. |
| 146 void WriteJSON(std::string* output) const; | 147 void WriteJSON(std::string* output) const; |
| 147 | 148 |
| 149 typedef base::Callback<void(void)> ModifiedCallback; |
| 150 void SetCallback(const ModifiedCallback&); |
| 151 |
| 148 protected: | 152 protected: |
| 149 // Subclasses should implement this function to make SerializeInfo work. | 153 // Subclasses should implement this function to make SerializeInfo work. |
| 150 virtual bool SerializeInfoImpl(Pickle* pickle) const = 0; | 154 virtual bool SerializeInfoImpl(Pickle* pickle) const = 0; |
| 151 | 155 |
| 152 // Writes information about the construction parameters in |params|. | 156 // Writes information about the construction parameters in |params|. |
| 153 virtual void GetParameters(DictionaryValue* params) const = 0; | 157 virtual void GetParameters(DictionaryValue* params) const = 0; |
| 154 | 158 |
| 155 // Writes information about the current (non-empty) buckets and their sample | 159 // Writes information about the current (non-empty) buckets and their sample |
| 156 // counts to |buckets|, the total sample count to |count| and the total sum | 160 // counts to |buckets|, the total sample count to |count| and the total sum |
| 157 // to |sum|. | 161 // to |sum|. |
| 158 virtual void GetCountAndBucketData(Count* count, | 162 virtual void GetCountAndBucketData(Count* count, |
| 159 int64* sum, | 163 int64* sum, |
| 160 ListValue* buckets) const = 0; | 164 ListValue* buckets) const = 0; |
| 161 | 165 |
| 162 //// Produce actual graph (set of blank vs non blank char's) for a bucket. | 166 //// Produce actual graph (set of blank vs non blank char's) for a bucket. |
| 163 void WriteAsciiBucketGraph(double current_size, | 167 void WriteAsciiBucketGraph(double current_size, |
| 164 double max_size, | 168 double max_size, |
| 165 std::string* output) const; | 169 std::string* output) const; |
| 166 | 170 |
| 167 // Return a string description of what goes in a given bucket. | 171 // Return a string description of what goes in a given bucket. |
| 168 const std::string GetSimpleAsciiBucketRange(Sample sample) const; | 172 const std::string GetSimpleAsciiBucketRange(Sample sample) const; |
| 169 | 173 |
| 170 // Write textual description of the bucket contents (relative to histogram). | 174 // Write textual description of the bucket contents (relative to histogram). |
| 171 // Output is the count in the buckets, as well as the percentage. | 175 // Output is the count in the buckets, as well as the percentage. |
| 172 void WriteAsciiBucketValue(Count current, | 176 void WriteAsciiBucketValue(Count current, |
| 173 double scaled_sum, | 177 double scaled_sum, |
| 174 std::string* output) const; | 178 std::string* output) const; |
| 175 | 179 |
| 180 ModifiedCallback callback_; |
| 181 |
| 176 private: | 182 private: |
| 177 const std::string histogram_name_; | 183 const std::string histogram_name_; |
| 178 int32_t flags_; | 184 int32_t flags_; |
| 179 | 185 |
| 180 DISALLOW_COPY_AND_ASSIGN(HistogramBase); | 186 DISALLOW_COPY_AND_ASSIGN(HistogramBase); |
| 181 }; | 187 }; |
| 182 | 188 |
| 183 } // namespace base | 189 } // namespace base |
| 184 | 190 |
| 185 #endif // BASE_METRICS_HISTOGRAM_BASE_H_ | 191 #endif // BASE_METRICS_HISTOGRAM_BASE_H_ |
| OLD | NEW |