resource_creation_proxy.h revision 7d4cd473f85ac64c3747c96c277f9e506a0d2246
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 PPAPI_PROXY_RESOURCE_CREATION_PROXY_H_
6#define PPAPI_PROXY_RESOURCE_CREATION_PROXY_H_
7
8#include <string>
9
10#include "base/basictypes.h"
11#include "ipc/ipc_channel.h"
12#include "ppapi/c/pp_bool.h"
13#include "ppapi/c/pp_instance.h"
14#include "ppapi/proxy/interface_proxy.h"
15#include "ppapi/proxy/serialized_structs.h"
16#include "ppapi/thunk/resource_creation_api.h"
17
18struct PP_Size;
19
20namespace ppapi {
21
22class HostResource;
23
24namespace proxy {
25
26struct Connection;
27class Dispatcher;
28
29class ResourceCreationProxy : public InterfaceProxy,
30                              public thunk::ResourceCreationAPI {
31 public:
32  explicit ResourceCreationProxy(Dispatcher* dispatcher);
33  virtual ~ResourceCreationProxy();
34
35  // Factory function used for registration (normal code can just use the
36  // constructor).
37  static InterfaceProxy* Create(Dispatcher* dispatcher);
38
39  // ResourceCreationAPI (called in plugin).
40  virtual PP_Resource CreateFileIO(PP_Instance instance) OVERRIDE;
41  virtual PP_Resource CreateFileRef(PP_Instance instance,
42                                    PP_Resource file_system,
43                                    const char* path) OVERRIDE;
44  virtual PP_Resource CreateFileRef(
45      const PPB_FileRef_CreateInfo& create_info) OVERRIDE;
46  virtual PP_Resource CreateFileSystem(PP_Instance instance,
47                                       PP_FileSystemType type) OVERRIDE;
48  virtual PP_Resource CreateIsolatedFileSystem(
49      PP_Instance instance,
50      const char* fsid) OVERRIDE;
51  virtual PP_Resource CreateIMEInputEvent(PP_Instance instance,
52                                          PP_InputEvent_Type type,
53                                          PP_TimeTicks time_stamp,
54                                          struct PP_Var text,
55                                          uint32_t segment_number,
56                                          const uint32_t* segment_offsets,
57                                          int32_t target_segment,
58                                          uint32_t selection_start,
59                                          uint32_t selection_end) OVERRIDE;
60  virtual PP_Resource CreateKeyboardInputEvent(
61      PP_Instance instance,
62      PP_InputEvent_Type type,
63      PP_TimeTicks time_stamp,
64      uint32_t modifiers,
65      uint32_t key_code,
66      PP_Var character_text) OVERRIDE;
67  virtual PP_Resource CreateMouseInputEvent(
68      PP_Instance instance,
69      PP_InputEvent_Type type,
70      PP_TimeTicks time_stamp,
71      uint32_t modifiers,
72      PP_InputEvent_MouseButton mouse_button,
73      const PP_Point* mouse_position,
74      int32_t click_count,
75      const PP_Point* mouse_movement) OVERRIDE;
76  virtual PP_Resource CreateTouchInputEvent(
77      PP_Instance instance,
78      PP_InputEvent_Type type,
79      PP_TimeTicks time_stamp,
80      uint32_t modifiers) OVERRIDE;
81  virtual PP_Resource CreateResourceArray(PP_Instance instance,
82                                          const PP_Resource elements[],
83                                          uint32_t size) OVERRIDE;
84  virtual PP_Resource CreateTrueTypeFont(
85      PP_Instance instance,
86      const PP_TrueTypeFontDesc_Dev* desc) OVERRIDE;
87  virtual PP_Resource CreateURLLoader(PP_Instance instance) OVERRIDE;
88  virtual PP_Resource CreateURLRequestInfo(
89      PP_Instance instance) OVERRIDE;
90  virtual PP_Resource CreateWheelInputEvent(
91      PP_Instance instance,
92      PP_TimeTicks time_stamp,
93      uint32_t modifiers,
94      const PP_FloatPoint* wheel_delta,
95      const PP_FloatPoint* wheel_ticks,
96      PP_Bool scroll_by_page) OVERRIDE;
97
98  virtual PP_Resource CreateAudio(PP_Instance instance,
99                                  PP_Resource config_id,
100                                  PPB_Audio_Callback audio_callback,
101                                  void* user_data) OVERRIDE;
102  virtual PP_Resource CreateAudioTrusted(PP_Instance instance) OVERRIDE;
103  virtual PP_Resource CreateAudioConfig(PP_Instance instance,
104                                        PP_AudioSampleRate sample_rate,
105                                        uint32_t sample_frame_count) OVERRIDE;
106  virtual PP_Resource CreateFileChooser(PP_Instance instance,
107                                        PP_FileChooserMode_Dev mode,
108                                        const PP_Var& accept_types) OVERRIDE;
109  virtual PP_Resource CreateGraphics2D(PP_Instance pp_instance,
110                                       const PP_Size* size,
111                                       PP_Bool is_always_opaque) OVERRIDE;
112  virtual PP_Resource CreateGraphics3D(PP_Instance instance,
113                                       PP_Resource share_context,
114                                       const int32_t* attrib_list) OVERRIDE;
115  virtual PP_Resource CreateGraphics3DRaw(
116      PP_Instance instance,
117      PP_Resource share_context,
118      const int32_t* attrib_list) OVERRIDE;
119  virtual PP_Resource CreateHostResolver(PP_Instance instance) OVERRIDE;
120  virtual PP_Resource CreateHostResolverPrivate(PP_Instance instance) OVERRIDE;
121  virtual PP_Resource CreateImageData(PP_Instance instance,
122                                      PPB_ImageData_Shared::ImageDataType type,
123                                      PP_ImageDataFormat format,
124                                      const PP_Size* size,
125                                      PP_Bool init_to_zero) OVERRIDE;
126  virtual PP_Resource CreateNetAddressFromIPv4Address(
127      PP_Instance instance,
128      const PP_NetAddress_IPv4_Dev* ipv4_addr) OVERRIDE;
129  virtual PP_Resource CreateNetAddressFromIPv6Address(
130      PP_Instance instance,
131      const PP_NetAddress_IPv6_Dev* ipv6_addr) OVERRIDE;
132  virtual PP_Resource CreateNetAddressFromNetAddressPrivate(
133      PP_Instance instance,
134      const PP_NetAddress_Private& private_addr) OVERRIDE;
135  virtual PP_Resource CreateNetworkMonitor(
136      PP_Instance instance,
137      PPB_NetworkMonitor_Callback callback,
138      void* user_data) OVERRIDE;
139  virtual PP_Resource CreatePrinting(PP_Instance) OVERRIDE;
140  virtual PP_Resource CreateTCPServerSocketPrivate(
141      PP_Instance instance) OVERRIDE;
142  virtual PP_Resource CreateTCPSocket(PP_Instance instance) OVERRIDE;
143  virtual PP_Resource CreateTCPSocketPrivate(PP_Instance instance) OVERRIDE;
144  virtual PP_Resource CreateUDPSocket(PP_Instance instance) OVERRIDE;
145  virtual PP_Resource CreateUDPSocketPrivate(PP_Instance instance) OVERRIDE;
146  virtual PP_Resource CreateWebSocket(PP_Instance instance) OVERRIDE;
147  virtual PP_Resource CreateX509CertificatePrivate(
148      PP_Instance instance) OVERRIDE;
149#if !defined(OS_NACL)
150  virtual PP_Resource CreateAudioInput(PP_Instance instance) OVERRIDE;
151  virtual PP_Resource CreateBroker(PP_Instance instance) OVERRIDE;
152  virtual PP_Resource CreateBrowserFont(
153      PP_Instance instance,
154      const PP_BrowserFont_Trusted_Description* description) OVERRIDE;
155  virtual PP_Resource CreateBuffer(PP_Instance instance,
156                                   uint32_t size) OVERRIDE;
157  virtual PP_Resource CreateFlashDRM(PP_Instance instance) OVERRIDE;
158  virtual PP_Resource CreateFlashFontFile(
159      PP_Instance instance,
160      const PP_BrowserFont_Trusted_Description* description,
161      PP_PrivateFontCharset charset) OVERRIDE;
162  virtual PP_Resource CreateFlashMenu(PP_Instance instance,
163                                      const PP_Flash_Menu* menu_data) OVERRIDE;
164  virtual PP_Resource CreateFlashMessageLoop(PP_Instance instance) OVERRIDE;
165  virtual PP_Resource CreateScrollbar(PP_Instance instance,
166                                      PP_Bool vertical) OVERRIDE;
167  virtual PP_Resource CreateTalk(PP_Instance instance) OVERRIDE;
168  virtual PP_Resource CreateVideoCapture(PP_Instance instance) OVERRIDE;
169  virtual PP_Resource CreateVideoDecoder(
170      PP_Instance instance,
171      PP_Resource context3d_id,
172      PP_VideoDecoder_Profile profile) OVERRIDE;
173  virtual PP_Resource CreateVideoDestination(PP_Instance instance) OVERRIDE;
174  virtual PP_Resource CreateVideoSource(PP_Instance instance) OVERRIDE;
175#endif  // !defined(OS_NACL)
176
177  virtual bool Send(IPC::Message* msg) OVERRIDE;
178  virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE;
179
180 private:
181  Connection GetConnection();
182  DISALLOW_COPY_AND_ASSIGN(ResourceCreationProxy);
183};
184
185}  // namespace proxy
186}  // namespace ppapi
187
188#endif  // PPAPI_PROXY_RESOURCE_CREATION_PROXY_H_
189