Upstream version 6.35.121.0
[platform/framework/web/crosswalk.git] / src / chrome / renderer / pepper / pepper_uma_host.h
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 CHROME_RENDERER_PEPPER_PEPPER_UMA_HOST_H_
6 #define CHROME_RENDERER_PEPPER_PEPPER_UMA_HOST_H_
7
8 #include <set>
9 #include <string>
10
11 #include "ppapi/c/pp_instance.h"
12 #include "ppapi/c/pp_resource.h"
13 #include "ppapi/host/resource_host.h"
14 #include "url/gurl.h"
15
16 namespace content {
17 class RendererPpapiHost;
18 }
19
20 namespace ppapi {
21 namespace host {
22 struct HostMessageContext;
23 }  // namespace host
24 }  // namespace ppapi
25
26 class PepperUMAHost : public ppapi::host::ResourceHost {
27  public:
28   PepperUMAHost(content::RendererPpapiHost* host,
29                 PP_Instance instance,
30                 PP_Resource resource);
31
32   virtual ~PepperUMAHost();
33
34   // ppapi::host::ResourceMessageHandler implementation.
35   virtual int32_t OnResourceMessageReceived(
36       const IPC::Message& msg,
37       ppapi::host::HostMessageContext* context) OVERRIDE;
38
39  private:
40   bool IsPluginWhitelisted();
41   bool IsHistogramAllowed(const std::string& histogram);
42
43   int32_t OnHistogramCustomTimes(
44       ppapi::host::HostMessageContext* context,
45       const std::string& name,
46       int64_t sample,
47       int64_t min,
48       int64_t max,
49       uint32_t bucket_count);
50
51   int32_t OnHistogramCustomCounts(
52       ppapi::host::HostMessageContext* context,
53       const std::string& name,
54       int32_t sample,
55       int32_t min,
56       int32_t max,
57       uint32_t bucket_count);
58
59   int32_t OnHistogramEnumeration(
60       ppapi::host::HostMessageContext* context,
61       const std::string& name,
62       int32_t sample,
63       int32_t boundary_value);
64
65   int32_t OnIsCrashReportingEnabled(
66       ppapi::host::HostMessageContext* context);
67
68   const GURL document_url_;
69   bool is_plugin_in_process_;
70
71   // Set of origins that can use UMA private APIs from NaCl.
72   std::set<std::string> allowed_origins_;
73   // Set of hashed histogram prefixes that can be used from this interface.
74   std::set<std::string> allowed_histogram_prefixes_;
75
76   DISALLOW_COPY_AND_ASSIGN(PepperUMAHost);
77 };
78
79 #endif  // CHROME_RENDERER_PEPPER_PEPPER_UMA_HOST_H_