summaryrefslogtreecommitdiffstats
path: root/net/disk_cache/stats.cc
diff options
context:
space:
mode:
Diffstat (limited to 'net/disk_cache/stats.cc')
-rw-r--r--net/disk_cache/stats.cc21
1 files changed, 15 insertions, 6 deletions
diff --git a/net/disk_cache/stats.cc b/net/disk_cache/stats.cc
index 4f9440e..702b2a36 100644
--- a/net/disk_cache/stats.cc
+++ b/net/disk_cache/stats.cc
@@ -123,16 +123,25 @@ bool Stats::Init(BackendImpl* backend, uint32* storage_addr) {
storage_addr_ = address.value();
backend_ = backend;
- if (!size_histogram_.get()) {
- // Stats may be reused when the cache is re-created, but we want only one
- // histogram at any given time.
- size_histogram_.reset(new StatsHistogram("DiskCache.SizeStats"));
- size_histogram_->Init(this);
- }
memcpy(data_sizes_, stats.data_sizes, sizeof(data_sizes_));
memcpy(counters_, stats.counters, sizeof(counters_));
+ // It seems impossible to support this histogram for more than one
+ // simultaneous objects with the current infrastructure.
+ static bool first_time = true;
+ if (first_time) {
+ first_time = false;
+ // ShouldReportAgain() will re-enter this object.
+ if (!size_histogram_.get() && backend->cache_type() == net::DISK_CACHE &&
+ backend->ShouldReportAgain()) {
+ // Stats may be reused when the cache is re-created, but we want only one
+ // histogram at any given time.
+ size_histogram_.reset(new StatsHistogram("DiskCache.SizeStats"));
+ size_histogram_->Init(this);
+ }
+ }
+
return true;
}