1// Copyright (c) 2012 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#ifndef CHROME_BROWSER_EXTENSIONS_API_METRICS_PRIVATE_METRICS_PRIVATE_API_H_
6#define CHROME_BROWSER_EXTENSIONS_API_METRICS_PRIVATE_METRICS_PRIVATE_API_H_
7
8#include <string>
9
10#include "base/metrics/histogram.h"
11#include "chrome/browser/extensions/extension_function.h"
12
13namespace extensions {
14
15class MetricsPrivateGetIsCrashReportingEnabledFunction
16    : public SyncExtensionFunction {
17 public:
18  DECLARE_EXTENSION_FUNCTION("metricsPrivate.getIsCrashReportingEnabled",
19                             METRICSPRIVATE_GETISCRASHRECORDINGENABLED)
20
21 protected:
22  virtual ~MetricsPrivateGetIsCrashReportingEnabledFunction() {}
23
24  // ExtensionFunction:
25  virtual bool RunImpl() OVERRIDE;
26};
27
28class MetricsPrivateGetFieldTrialFunction : public SyncExtensionFunction {
29 public:
30  DECLARE_EXTENSION_FUNCTION("metricsPrivate.getFieldTrial",
31                             METRICSPRIVATE_GETFIELDTRIAL)
32
33 protected:
34  virtual ~MetricsPrivateGetFieldTrialFunction() {}
35
36  // ExtensionFunction:
37  virtual bool RunImpl() OVERRIDE;
38};
39
40class MetricsPrivateGetVariationParamsFunction : public SyncExtensionFunction {
41 public:
42  DECLARE_EXTENSION_FUNCTION("metricsPrivate.getVariationParams",
43                             METRICSPRIVATE_GETVARIATIONPARAMS)
44
45 protected:
46  virtual ~MetricsPrivateGetVariationParamsFunction() {}
47
48  // ExtensionFunction:
49  virtual bool RunImpl() OVERRIDE;
50};
51
52class MetricsPrivateRecordUserActionFunction : public SyncExtensionFunction {
53 public:
54  DECLARE_EXTENSION_FUNCTION("metricsPrivate.recordUserAction",
55                             METRICSPRIVATE_RECORDUSERACTION)
56
57 protected:
58  virtual ~MetricsPrivateRecordUserActionFunction() {}
59
60  // ExtensionFunction:
61  virtual bool RunImpl() OVERRIDE;
62};
63
64class MetricsHistogramHelperFunction : public SyncExtensionFunction {
65 protected:
66  virtual ~MetricsHistogramHelperFunction() {}
67  bool GetNameAndSample(std::string* name, int* sample);
68  virtual bool RecordValue(const std::string& name,
69                           base::HistogramType type,
70                           int min, int max, size_t buckets,
71                           int sample);
72};
73
74class MetricsPrivateRecordValueFunction
75    : public MetricsHistogramHelperFunction {
76 public:
77  DECLARE_EXTENSION_FUNCTION("metricsPrivate.recordValue",
78                             METRICSPRIVATE_RECORDVALUE)
79
80 protected:
81  virtual ~MetricsPrivateRecordValueFunction() {}
82
83  // ExtensionFunction:
84  virtual bool RunImpl() OVERRIDE;
85};
86
87class MetricsPrivateRecordPercentageFunction
88    : public MetricsHistogramHelperFunction {
89 public:
90  DECLARE_EXTENSION_FUNCTION("metricsPrivate.recordPercentage",
91                             METRICSPRIVATE_RECORDPERCENTAGE)
92
93 protected:
94  virtual ~MetricsPrivateRecordPercentageFunction() {}
95
96  // ExtensionFunction:
97  virtual bool RunImpl() OVERRIDE;
98};
99
100class MetricsPrivateRecordCountFunction
101    : public MetricsHistogramHelperFunction {
102 public:
103  DECLARE_EXTENSION_FUNCTION("metricsPrivate.recordCount",
104                             METRICSPRIVATE_RECORDCOUNT)
105
106 protected:
107  virtual ~MetricsPrivateRecordCountFunction() {}
108
109  // ExtensionFunction:
110  virtual bool RunImpl() OVERRIDE;
111};
112
113class MetricsPrivateRecordSmallCountFunction
114    : public MetricsHistogramHelperFunction {
115 public:
116  DECLARE_EXTENSION_FUNCTION("metricsPrivate.recordSmallCount",
117                             METRICSPRIVATE_RECORDSMALLCOUNT)
118
119 protected:
120  virtual ~MetricsPrivateRecordSmallCountFunction() {}
121
122  // ExtensionFunction:
123  virtual bool RunImpl() OVERRIDE;
124};
125
126class MetricsPrivateRecordMediumCountFunction
127    : public MetricsHistogramHelperFunction {
128 public:
129  DECLARE_EXTENSION_FUNCTION("metricsPrivate.recordMediumCount",
130                             METRICSPRIVATE_RECORDMEDIUMCOUNT)
131
132 protected:
133  virtual ~MetricsPrivateRecordMediumCountFunction() {}
134
135  // ExtensionFunction:
136  virtual bool RunImpl() OVERRIDE;
137};
138
139class MetricsPrivateRecordTimeFunction : public MetricsHistogramHelperFunction {
140 public:
141  DECLARE_EXTENSION_FUNCTION("metricsPrivate.recordTime",
142                             METRICSPRIVATE_RECORDTIME)
143
144 protected:
145  virtual ~MetricsPrivateRecordTimeFunction() {}
146
147  // ExtensionFunction:
148  virtual bool RunImpl() OVERRIDE;
149};
150
151class MetricsPrivateRecordMediumTimeFunction
152    : public MetricsHistogramHelperFunction {
153 public:
154  DECLARE_EXTENSION_FUNCTION("metricsPrivate.recordMediumTime",
155                             METRICSPRIVATE_RECORDMEDIUMTIME)
156
157 protected:
158  virtual ~MetricsPrivateRecordMediumTimeFunction() {}
159
160  // ExtensionFunction:
161  virtual bool RunImpl() OVERRIDE;
162};
163
164class MetricsPrivateRecordLongTimeFunction
165    : public MetricsHistogramHelperFunction {
166 public:
167  DECLARE_EXTENSION_FUNCTION("metricsPrivate.recordLongTime",
168                             METRICSPRIVATE_RECORDLONGTIME)
169
170 protected:
171  virtual ~MetricsPrivateRecordLongTimeFunction() {}
172
173  // ExtensionFunction:
174  virtual bool RunImpl() OVERRIDE;
175};
176
177} // namespace extensions
178
179#endif  // CHROME_BROWSER_EXTENSIONS_API_METRICS_PRIVATE_METRICS_PRIVATE_API_H_
180