1// Copyright 2014 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 PPAPI_PROXY_UMA_PRIVATE_RESOURCE_H_
6#define PPAPI_PROXY_UMA_PRIVATE_RESOURCE_H_
7
8#include "ppapi/proxy/connection.h"
9#include "ppapi/proxy/plugin_resource.h"
10#include "ppapi/proxy/ppapi_proxy_export.h"
11#include "ppapi/thunk/ppb_uma_singleton_api.h"
12
13namespace ppapi {
14
15namespace proxy {
16
17class PPAPI_PROXY_EXPORT UMAPrivateResource
18    : public PluginResource,
19      public thunk::PPB_UMA_Singleton_API {
20 public:
21  UMAPrivateResource(Connection connection, PP_Instance instance);
22  virtual ~UMAPrivateResource();
23
24  // Resource overrides.
25  virtual thunk::PPB_UMA_Singleton_API* AsPPB_UMA_Singleton_API() OVERRIDE;
26
27  // PPB_UMA_Singleton_API implementation.
28  virtual void HistogramCustomTimes(PP_Instance instance,
29                                    struct PP_Var name,
30                                    int64_t sample,
31                                    int64_t min,
32                                    int64_t max,
33                                    uint32_t bucket_count) OVERRIDE;
34
35  virtual void HistogramCustomCounts(PP_Instance instance,
36                                     struct PP_Var name,
37                                     int32_t sample,
38                                     int32_t min,
39                                     int32_t max,
40                                     uint32_t bucket_count) OVERRIDE;
41
42  virtual void HistogramEnumeration(PP_Instance instance,
43                                    struct PP_Var name,
44                                    int32_t sample,
45                                    int32_t boundary_value) OVERRIDE;
46
47  virtual int32_t IsCrashReportingEnabled(
48      PP_Instance instance,
49      scoped_refptr<TrackedCallback> callback) OVERRIDE;
50
51 private:
52  void OnPluginMsgIsCrashReportingEnabled(
53      const ResourceMessageReplyParams& params);
54  scoped_refptr<TrackedCallback> pending_callback_;
55
56  DISALLOW_COPY_AND_ASSIGN(UMAPrivateResource);
57};
58
59}  // namespace proxy
60}  // namespace ppapi
61
62#endif  // PPAPI_PROXY_UMA_PRIVATE_RESOURCE_H_
63