1// Copyright (c) 2010 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_EXTENSION_METRICS_MODULE_H__
6#define CHROME_BROWSER_EXTENSIONS_EXTENSION_METRICS_MODULE_H__
7#pragma once
8
9#include <string>
10
11#include "base/metrics/histogram.h"
12#include "chrome/browser/extensions/extension_function.h"
13
14class MetricsSetEnabledFunction : public SyncExtensionFunction {
15  DECLARE_EXTENSION_FUNCTION_NAME("experimental.metrics.setEnabled")
16 protected:
17  virtual bool RunImpl();
18};
19
20class MetricsGetEnabledFunction : public SyncExtensionFunction {
21  DECLARE_EXTENSION_FUNCTION_NAME("experimental.metrics.getEnabled")
22 protected:
23  virtual bool RunImpl();
24};
25
26class MetricsRecordUserActionFunction : public SyncExtensionFunction {
27  virtual bool RunImpl();
28  DECLARE_EXTENSION_FUNCTION_NAME("experimental.metrics.recordUserAction")
29};
30
31class MetricsHistogramHelperFunction : public SyncExtensionFunction {
32 protected:
33  bool GetNameAndSample(std::string* name, int* sample);
34  virtual bool RecordValue(const std::string& name,
35                           base::Histogram::ClassType type,
36                           int min, int max, size_t buckets, int sample);
37};
38
39class MetricsRecordValueFunction : public MetricsHistogramHelperFunction {
40  virtual bool RunImpl();
41  DECLARE_EXTENSION_FUNCTION_NAME("experimental.metrics.recordValue")
42};
43
44class MetricsRecordPercentageFunction : public MetricsHistogramHelperFunction {
45  virtual bool RunImpl();
46  DECLARE_EXTENSION_FUNCTION_NAME("experimental.metrics.recordPercentage")
47};
48
49class MetricsRecordCountFunction : public MetricsHistogramHelperFunction {
50  virtual bool RunImpl();
51  DECLARE_EXTENSION_FUNCTION_NAME("experimental.metrics.recordCount")
52};
53
54class MetricsRecordSmallCountFunction : public MetricsHistogramHelperFunction {
55  virtual bool RunImpl();
56  DECLARE_EXTENSION_FUNCTION_NAME("experimental.metrics.recordSmallCount")
57};
58
59class MetricsRecordMediumCountFunction : public MetricsHistogramHelperFunction {
60  virtual bool RunImpl();
61  DECLARE_EXTENSION_FUNCTION_NAME("experimental.metrics.recordMediumCount")
62};
63
64class MetricsRecordTimeFunction : public MetricsHistogramHelperFunction {
65  virtual bool RunImpl();
66  DECLARE_EXTENSION_FUNCTION_NAME("experimental.metrics.recordTime")
67};
68
69class MetricsRecordMediumTimeFunction : public MetricsHistogramHelperFunction {
70  virtual bool RunImpl();
71  DECLARE_EXTENSION_FUNCTION_NAME("experimental.metrics.recordMediumTime")
72};
73
74class MetricsRecordLongTimeFunction : public MetricsHistogramHelperFunction {
75  virtual bool RunImpl();
76  DECLARE_EXTENSION_FUNCTION_NAME("experimental.metrics.recordLongTime")
77};
78
79#endif  // CHROME_BROWSER_EXTENSIONS_EXTENSION_METRICS_MODULE_H__
80