Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(38)

Side by Side Diff: components/metrics/single_sample_metrics.cc

Issue 2687583002: Add support for single sample metrics. (Closed)
Patch Set: Fix nullptr potential. Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 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 #include "components/metrics/single_sample_metrics.h"
6
7 #include "base/memory/ptr_util.h"
8 #include "base/metrics/single_sample_metrics.h"
9 #include "base/threading/thread_checker.h"
10 #include "components/metrics/single_sample_metrics_factory_impl.h"
11 #include "mojo/public/cpp/bindings/strong_binding.h"
12
13 namespace metrics {
14
15 namespace {
16
17 class MojoSingleSampleMetric : public mojom::SingleSampleMetric {
18 public:
19 MojoSingleSampleMetric(const std::string& name,
20 base::HistogramBase::Sample min,
21 base::HistogramBase::Sample max,
22 uint32_t bucket_count,
23 int32_t flags)
24 : metric_(name, min, max, bucket_count, flags) {}
25 ~MojoSingleSampleMetric() override {}
26
27 private:
28 // mojom::SingleSampleMetric:
29 void SetSample(base::HistogramBase::Sample sample) override {
30 metric_.SetSample(sample);
31 }
32
33 base::DefaultSingleSampleMetric metric_;
34
35 DISALLOW_COPY_AND_ASSIGN(MojoSingleSampleMetric);
36 };
37
38 class MojoSingleSampleMetricsProvider
39 : public mojom::SingleSampleMetricsProvider {
40 public:
41 MojoSingleSampleMetricsProvider() {}
42 ~MojoSingleSampleMetricsProvider() override {
43 DCHECK(thread_checker_.CalledOnValidThread());
44 }
45
46 private:
47 // mojom::SingleSampleMetricsProvider:
48 void AcquireSingleSampleMetric(
49 const std::string& name,
50 base::HistogramBase::Sample min,
51 base::HistogramBase::Sample max,
52 uint32_t bucket_count,
53 int32_t flags,
54 mojom::SingleSampleMetricRequest request) override {
55 DCHECK(thread_checker_.CalledOnValidThread());
56 mojo::MakeStrongBinding(base::MakeUnique<MojoSingleSampleMetric>(
57 name, min, max, bucket_count, flags),
58 std::move(request));
59 }
60
61 // Providers must be created, used on, and destroyed on the same thread.
62 base::ThreadChecker thread_checker_;
63
64 DISALLOW_COPY_AND_ASSIGN(MojoSingleSampleMetricsProvider);
65 };
66
67 } // namespace
68
69 // static
70 void InitializeSingleSampleMetricsFactory(CreateProviderCB create_provider_cb) {
71 base::SingleSampleMetricsFactory::SetFactory(
72 base::MakeUnique<SingleSampleMetricsFactoryImpl>(
73 std::move(create_provider_cb)));
dcheng 2017/05/04 22:18:51 Nit: #include <utility>
DaleCurtis 2017/05/04 22:25:04 Done.
74 }
75
76 // static
77 void CreateSingleSampleMetricsProvider(
78 const service_manager::BindSourceInfo& source_info,
79 mojom::SingleSampleMetricsProviderRequest request) {
80 mojo::MakeStrongBinding(base::MakeUnique<MojoSingleSampleMetricsProvider>(),
81 std::move(request));
82 }
83
84 } // namespace metrics
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698