Repo created
This commit is contained in:
parent
81b91f4139
commit
f8c34fa5ee
22732 changed files with 4815320 additions and 2 deletions
|
|
@ -0,0 +1,77 @@
|
|||
// Copyright 2017 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 "base/metrics/single_sample_metrics.h"
|
||||
|
||||
#include "base/memory/ptr_util.h"
|
||||
#include "base/metrics/histogram.h"
|
||||
|
||||
namespace base {
|
||||
|
||||
static SingleSampleMetricsFactory* g_factory = nullptr;
|
||||
|
||||
// static
|
||||
SingleSampleMetricsFactory* SingleSampleMetricsFactory::Get() {
|
||||
if (!g_factory)
|
||||
g_factory = new DefaultSingleSampleMetricsFactory();
|
||||
|
||||
return g_factory;
|
||||
}
|
||||
|
||||
// static
|
||||
void SingleSampleMetricsFactory::SetFactory(
|
||||
std::unique_ptr<SingleSampleMetricsFactory> factory) {
|
||||
DCHECK(!g_factory);
|
||||
g_factory = factory.release();
|
||||
}
|
||||
|
||||
// static
|
||||
void SingleSampleMetricsFactory::DeleteFactoryForTesting() {
|
||||
DCHECK(g_factory);
|
||||
delete g_factory;
|
||||
g_factory = nullptr;
|
||||
}
|
||||
|
||||
std::unique_ptr<SingleSampleMetric>
|
||||
DefaultSingleSampleMetricsFactory::CreateCustomCountsMetric(
|
||||
const std::string& histogram_name,
|
||||
HistogramBase::Sample min,
|
||||
HistogramBase::Sample max,
|
||||
uint32_t bucket_count) {
|
||||
return std::make_unique<DefaultSingleSampleMetric>(
|
||||
histogram_name, min, max, bucket_count,
|
||||
HistogramBase::kUmaTargetedHistogramFlag);
|
||||
}
|
||||
|
||||
DefaultSingleSampleMetric::DefaultSingleSampleMetric(
|
||||
const std::string& histogram_name,
|
||||
HistogramBase::Sample min,
|
||||
HistogramBase::Sample max,
|
||||
uint32_t bucket_count,
|
||||
int32_t flags)
|
||||
: histogram_(Histogram::FactoryGet(histogram_name,
|
||||
min,
|
||||
max,
|
||||
bucket_count,
|
||||
flags)) {
|
||||
// Bad construction parameters may lead to |histogram_| being null; DCHECK to
|
||||
// find accidental errors in production. We must still handle the nullptr in
|
||||
// destruction though since this construction may come from another untrusted
|
||||
// process.
|
||||
DCHECK(histogram_);
|
||||
}
|
||||
|
||||
DefaultSingleSampleMetric::~DefaultSingleSampleMetric() {
|
||||
// |histogram_| may be nullptr if bad construction parameters are given.
|
||||
if (sample_ < 0 || !histogram_)
|
||||
return;
|
||||
histogram_->Add(sample_);
|
||||
}
|
||||
|
||||
void DefaultSingleSampleMetric::SetSample(HistogramBase::Sample sample) {
|
||||
DCHECK_GE(sample, 0);
|
||||
sample_ = sample;
|
||||
}
|
||||
|
||||
} // namespace base
|
||||
Loading…
Add table
Add a link
Reference in a new issue