resource_creation_proxy.h revision 46d4c2bc3267f3f028f39e7e311b0f89aba2e4fd
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(
42      PP_Instance instance,
43      const FileRefCreateInfo& create_info) OVERRIDE;
44  virtual PP_Resource CreateFileSystem(PP_Instance instance,
45                                       PP_FileSystemType type) OVERRIDE;
46  virtual PP_Resource CreateIMEInputEvent(PP_Instance instance,
47                                          PP_InputEvent_Type type,
48                                          PP_TimeTicks time_stamp,
49                                          struct PP_Var text,
50                                          uint32_t segment_number,
51                                          const uint32_t* segment_offsets,
52                                          int32_t target_segment,
53                                          uint32_t selection_start,
54                                          uint32_t selection_end) OVERRIDE;
55  virtual PP_Resource CreateKeyboardInputEvent_1_0(
56      PP_Instance instance,
57      PP_InputEvent_Type type,
58      PP_TimeTicks time_stamp,
59      uint32_t modifiers,
60      uint32_t key_code,
61      PP_Var character_text) OVERRIDE;
62  virtual PP_Resource CreateKeyboardInputEvent_1_2(
63      PP_Instance instance,
64      PP_InputEvent_Type type,
65      PP_TimeTicks time_stamp,
66      uint32_t modifiers,
67      uint32_t key_code,
68      PP_Var character_text,
69      PP_Var code) OVERRIDE;
70  virtual PP_Resource CreateMouseInputEvent(
71      PP_Instance instance,
72      PP_InputEvent_Type type,
73      PP_TimeTicks time_stamp,
74      uint32_t modifiers,
75      PP_InputEvent_MouseButton mouse_button,
76      const PP_Point* mouse_position,
77      int32_t click_count,
78      const PP_Point* mouse_movement) OVERRIDE;
79  virtual PP_Resource CreateTouchInputEvent(
80      PP_Instance instance,
81      PP_InputEvent_Type type,
82      PP_TimeTicks time_stamp,
83      uint32_t modifiers) 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  virtual PP_Resource CreateAudio1_0(PP_Instance instance,
98                                     PP_Resource config_id,
99                                     PPB_Audio_Callback_1_0 audio_callback,
100                                     void* user_data) OVERRIDE;
101  virtual PP_Resource CreateAudio(PP_Instance instance,
102                                  PP_Resource config_id,
103                                  PPB_Audio_Callback audio_callback,
104                                  void* user_data) OVERRIDE;
105  virtual PP_Resource CreateAudioTrusted(PP_Instance instance) OVERRIDE;
106  virtual PP_Resource CreateAudioConfig(PP_Instance instance,
107                                        PP_AudioSampleRate sample_rate,
108                                        uint32_t sample_frame_count) OVERRIDE;
109  virtual PP_Resource CreateCompositor(PP_Instance instance) OVERRIDE;
110  virtual PP_Resource CreateFileChooser(PP_Instance instance,
111                                        PP_FileChooserMode_Dev mode,
112                                        const PP_Var& accept_types) OVERRIDE;
113  virtual PP_Resource CreateGraphics2D(PP_Instance pp_instance,
114                                       const PP_Size* size,
115                                       PP_Bool is_always_opaque) OVERRIDE;
116  virtual PP_Resource CreateGraphics3D(PP_Instance instance,
117                                       PP_Resource share_context,
118                                       const int32_t* attrib_list) OVERRIDE;
119  virtual PP_Resource CreateGraphics3DRaw(
120      PP_Instance instance,
121      PP_Resource share_context,
122      const int32_t* attrib_list) OVERRIDE;
123  virtual PP_Resource CreateHostResolver(PP_Instance instance) OVERRIDE;
124  virtual PP_Resource CreateHostResolverPrivate(PP_Instance instance) OVERRIDE;
125  virtual PP_Resource CreateImageData(PP_Instance instance,
126                                      PP_ImageDataFormat format,
127                                      const PP_Size* size,
128                                      PP_Bool init_to_zero) OVERRIDE;
129  virtual PP_Resource CreateImageDataSimple(PP_Instance instance,
130                                            PP_ImageDataFormat format,
131                                            const PP_Size* size,
132                                            PP_Bool init_to_zero) OVERRIDE;
133  virtual PP_Resource CreateMediaStreamVideoTrack(
134      PP_Instance instance) OVERRIDE;
135  virtual PP_Resource CreateNetAddressFromIPv4Address(
136      PP_Instance instance,
137      const PP_NetAddress_IPv4* ipv4_addr) OVERRIDE;
138  virtual PP_Resource CreateNetAddressFromIPv6Address(
139      PP_Instance instance,
140      const PP_NetAddress_IPv6* ipv6_addr) OVERRIDE;
141  virtual PP_Resource CreateNetAddressFromNetAddressPrivate(
142      PP_Instance instance,
143      const PP_NetAddress_Private& private_addr) OVERRIDE;
144  virtual PP_Resource CreateNetworkMonitor(PP_Instance instance) OVERRIDE;
145  virtual PP_Resource CreateOutputProtectionPrivate(
146      PP_Instance instance) OVERRIDE;
147  virtual PP_Resource CreatePrinting(PP_Instance) OVERRIDE;
148  virtual PP_Resource CreateTCPServerSocketPrivate(
149      PP_Instance instance) OVERRIDE;
150  virtual PP_Resource CreateTCPSocket1_0(PP_Instance instance) OVERRIDE;
151  virtual PP_Resource CreateTCPSocket(PP_Instance instance) OVERRIDE;
152  virtual PP_Resource CreateTCPSocketPrivate(PP_Instance instance) OVERRIDE;
153  virtual PP_Resource CreateUDPSocket(PP_Instance instance) OVERRIDE;
154  virtual PP_Resource CreateUDPSocketPrivate(PP_Instance instance) OVERRIDE;
155  virtual PP_Resource CreateVideoDecoder(PP_Instance instance) OVERRIDE;
156  virtual PP_Resource CreateVideoDestination(PP_Instance instance) OVERRIDE;
157  virtual PP_Resource CreateVideoSource(PP_Instance instance) OVERRIDE;
158  virtual PP_Resource CreateWebSocket(PP_Instance instance) OVERRIDE;
159  virtual PP_Resource CreateX509CertificatePrivate(
160      PP_Instance instance) OVERRIDE;
161#if !defined(OS_NACL)
162  virtual PP_Resource CreateAudioInput(PP_Instance instance) OVERRIDE;
163  virtual PP_Resource CreateBroker(PP_Instance instance) OVERRIDE;
164  virtual PP_Resource CreateBrowserFont(
165      PP_Instance instance,
166      const PP_BrowserFont_Trusted_Description* description) OVERRIDE;
167  virtual PP_Resource CreateBuffer(PP_Instance instance,
168                                   uint32_t size) OVERRIDE;
169  virtual PP_Resource CreateFlashDRM(PP_Instance instance) OVERRIDE;
170  virtual PP_Resource CreateFlashFontFile(
171      PP_Instance instance,
172      const PP_BrowserFont_Trusted_Description* description,
173      PP_PrivateFontCharset charset) OVERRIDE;
174  virtual PP_Resource CreateFlashMenu(PP_Instance instance,
175                                      const PP_Flash_Menu* menu_data) OVERRIDE;
176  virtual PP_Resource CreateFlashMessageLoop(PP_Instance instance) OVERRIDE;
177  virtual PP_Resource CreatePlatformVerificationPrivate(
178      PP_Instance instance) OVERRIDE;
179  virtual PP_Resource CreateScrollbar(PP_Instance instance,
180                                      PP_Bool vertical) OVERRIDE;
181  virtual PP_Resource CreateTalk(PP_Instance instance) OVERRIDE;
182  virtual PP_Resource CreateVideoCapture(PP_Instance instance) OVERRIDE;
183  virtual PP_Resource CreateVideoDecoderDev(
184      PP_Instance instance,
185      PP_Resource context3d_id,
186      PP_VideoDecoder_Profile profile) OVERRIDE;
187#endif  // !defined(OS_NACL)
188
189  virtual bool Send(IPC::Message* msg) OVERRIDE;
190  virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE;
191
192 private:
193  Connection GetConnection();
194  DISALLOW_COPY_AND_ASSIGN(ResourceCreationProxy);
195};
196
197}  // namespace proxy
198}  // namespace ppapi
199
200#endif  // PPAPI_PROXY_RESOURCE_CREATION_PROXY_H_
201