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 3 // found in the LICENSE file. 4 5 #ifndef NET_DISK_CACHE_STATS_HISTOGRAM_H_ 6 #define NET_DISK_CACHE_STATS_HISTOGRAM_H_ 7 8 #include <string> 9 10 #include "base/memory/scoped_ptr.h" 11 #include "base/metrics/histogram.h" 12 13 namespace base { 14 class BucketRanges; 15 class HistogramSamples; 16 class SampleVector; 17 } // namespace base 18 19 namespace disk_cache { 20 21 class Stats; 22 23 // This class provides support for sending the disk cache size stats as a UMA 24 // histogram. We'll provide our own storage and management for the data, and a 25 // SampleVector with a copy of our data. 26 // 27 // Class derivation of Histogram "deprecated," and should not be copied, and 28 // may eventually go away. 29 // 30 class StatsHistogram : public base::Histogram { 31 public: 32 StatsHistogram(const std::string& name, 33 Sample minimum, 34 Sample maximum, 35 const base::BucketRanges* ranges, 36 const Stats* stats); 37 virtual ~StatsHistogram(); 38 39 static void InitializeBucketRanges(const Stats* stats, 40 base::BucketRanges* ranges); 41 static StatsHistogram* FactoryGet(const std::string& name, 42 const Stats* stats); 43 44 virtual scoped_ptr<base::HistogramSamples> SnapshotSamples() const OVERRIDE; 45 virtual int FindCorruption( 46 const base::HistogramSamples& samples) const OVERRIDE; 47 48 private: 49 const Stats* stats_; 50 DISALLOW_COPY_AND_ASSIGN(StatsHistogram); 51 }; 52 53 } // namespace disk_cache 54 55 #endif // NET_DISK_CACHE_STATS_HISTOGRAM_H_ 56