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 "extensions/browser/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 RunSync() 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 RunSync() 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 RunSync() 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 RunSync() OVERRIDE;
62};
63
64class MetricsHistogramHelperFunction : public SyncExtensionFunction {
65 protected:
66  virtual ~MetricsHistogramHelperFunction() {}
67  virtual bool RecordValue(const std::string& name,
68                           base::HistogramType type,
69                           int min, int max, size_t buckets,
70                           int sample);
71};
72
73class MetricsPrivateRecordValueFunction
74    : public MetricsHistogramHelperFunction {
75 public:
76  DECLARE_EXTENSION_FUNCTION("metricsPrivate.recordValue",
77                             METRICSPRIVATE_RECORDVALUE)
78
79 protected:
80  virtual ~MetricsPrivateRecordValueFunction() {}
81
82  // ExtensionFunction:
83  virtual bool RunSync() OVERRIDE;
84};
85
86class MetricsPrivateRecordSparseValueFunction
87    : public MetricsHistogramHelperFunction {
88 public:
89  DECLARE_EXTENSION_FUNCTION("metricsPrivate.recordSparseValue",
90                             METRICSPRIVATE_RECORDSPARSEVALUE)
91
92 protected:
93  virtual ~MetricsPrivateRecordSparseValueFunction() {}
94
95  // ExtensionFunction:
96  virtual bool RunSync() OVERRIDE;
97};
98
99class MetricsPrivateRecordPercentageFunction
100    : public MetricsHistogramHelperFunction {
101 public:
102  DECLARE_EXTENSION_FUNCTION("metricsPrivate.recordPercentage",
103                             METRICSPRIVATE_RECORDPERCENTAGE)
104
105 protected:
106  virtual ~MetricsPrivateRecordPercentageFunction() {}
107
108  // ExtensionFunction:
109  virtual bool RunSync() OVERRIDE;
110};
111
112class MetricsPrivateRecordCountFunction
113    : public MetricsHistogramHelperFunction {
114 public:
115  DECLARE_EXTENSION_FUNCTION("metricsPrivate.recordCount",
116                             METRICSPRIVATE_RECORDCOUNT)
117
118 protected:
119  virtual ~MetricsPrivateRecordCountFunction() {}
120
121  // ExtensionFunction:
122  virtual bool RunSync() OVERRIDE;
123};
124
125class MetricsPrivateRecordSmallCountFunction
126    : public MetricsHistogramHelperFunction {
127 public:
128  DECLARE_EXTENSION_FUNCTION("metricsPrivate.recordSmallCount",
129                             METRICSPRIVATE_RECORDSMALLCOUNT)
130
131 protected:
132  virtual ~MetricsPrivateRecordSmallCountFunction() {}
133
134  // ExtensionFunction:
135  virtual bool RunSync() OVERRIDE;
136};
137
138class MetricsPrivateRecordMediumCountFunction
139    : public MetricsHistogramHelperFunction {
140 public:
141  DECLARE_EXTENSION_FUNCTION("metricsPrivate.recordMediumCount",
142                             METRICSPRIVATE_RECORDMEDIUMCOUNT)
143
144 protected:
145  virtual ~MetricsPrivateRecordMediumCountFunction() {}
146
147  // ExtensionFunction:
148  virtual bool RunSync() OVERRIDE;
149};
150
151class MetricsPrivateRecordTimeFunction : public MetricsHistogramHelperFunction {
152 public:
153  DECLARE_EXTENSION_FUNCTION("metricsPrivate.recordTime",
154                             METRICSPRIVATE_RECORDTIME)
155
156 protected:
157  virtual ~MetricsPrivateRecordTimeFunction() {}
158
159  // ExtensionFunction:
160  virtual bool RunSync() OVERRIDE;
161};
162
163class MetricsPrivateRecordMediumTimeFunction
164    : public MetricsHistogramHelperFunction {
165 public:
166  DECLARE_EXTENSION_FUNCTION("metricsPrivate.recordMediumTime",
167                             METRICSPRIVATE_RECORDMEDIUMTIME)
168
169 protected:
170  virtual ~MetricsPrivateRecordMediumTimeFunction() {}
171
172  // ExtensionFunction:
173  virtual bool RunSync() OVERRIDE;
174};
175
176class MetricsPrivateRecordLongTimeFunction
177    : public MetricsHistogramHelperFunction {
178 public:
179  DECLARE_EXTENSION_FUNCTION("metricsPrivate.recordLongTime",
180                             METRICSPRIVATE_RECORDLONGTIME)
181
182 protected:
183  virtual ~MetricsPrivateRecordLongTimeFunction() {}
184
185  // ExtensionFunction:
186  virtual bool RunSync() OVERRIDE;
187};
188
189} // namespace extensions
190
191#endif  // CHROME_BROWSER_EXTENSIONS_API_METRICS_PRIVATE_METRICS_PRIVATE_API_H_
192