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 // Disables this histogram when the underlying Stats go away. 45 void Disable(); 46 47 virtual scoped_ptr<base::HistogramSamples> SnapshotSamples() const OVERRIDE; 48 virtual int FindCorruption( 49 const base::HistogramSamples& samples) const OVERRIDE; 50 51 private: 52 const Stats* stats_; 53 DISALLOW_COPY_AND_ASSIGN(StatsHistogram); 54 }; 55 56 } // namespace disk_cache 57 58 #endif // NET_DISK_CACHE_STATS_HISTOGRAM_H_ 59