// Copyright (c) 2008 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "net/disk_cache/stats_histogram.h" #include "base/logging.h" #include "net/disk_cache/stats.h" namespace disk_cache { // Static. const Stats* StatsHistogram::stats_ = NULL; bool StatsHistogram::Init(const Stats* stats) { DCHECK(stats); if (stats_) return false; SetFlags(kUmaTargetedHistogramFlag); // We support statistics report for only one cache. init_ = true; stats_ = stats; return true; } StatsHistogram::~StatsHistogram() { // Only cleanup what we set. if (init_) stats_ = NULL; } Histogram::Sample StatsHistogram::ranges(size_t i) const { DCHECK(stats_); return stats_->GetBucketRange(i); } size_t StatsHistogram::bucket_count() const { return disk_cache::Stats::kDataSizesLength; } void StatsHistogram::SnapshotSample(SampleSet* sample) const { DCHECK(stats_); StatsSamples my_sample; stats_->Snapshot(&my_sample); *sample = my_sample; // Only report UMA data once. StatsHistogram* mutable_me = const_cast(this); mutable_me->ClearFlags(kUmaTargetedHistogramFlag); } } // namespace disk_cache