OLD | NEW |
---|---|
(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 | |
OLD | NEW |