resource_creation_proxy.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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_Resource file_system,
42                                    const char* path) OVERRIDE;
43  virtual PP_Resource CreateFileSystem(PP_Instance instance,
44                                       PP_FileSystemType type) OVERRIDE;
45  virtual PP_Resource CreateIMEInputEvent(PP_Instance instance,
46                                          PP_InputEvent_Type type,
47                                          PP_TimeTicks time_stamp,
48                                          struct PP_Var text,
49                                          uint32_t segment_number,
50                                          const uint32_t* segment_offsets,
51                                          int32_t target_segment,
52                                          uint32_t selection_start,
53                                          uint32_t selection_end) OVERRIDE;
54  virtual PP_Resource CreateKeyboardInputEvent(
55      PP_Instance instance,
56      PP_InputEvent_Type type,
57      PP_TimeTicks time_stamp,
58      uint32_t modifiers,
59      uint32_t key_code,
60      PP_Var character_text) OVERRIDE;
61  virtual PP_Resource CreateMouseInputEvent(
62      PP_Instance instance,
63      PP_InputEvent_Type type,
64      PP_TimeTicks time_stamp,
65      uint32_t modifiers,
66      PP_InputEvent_MouseButton mouse_button,
67      const PP_Point* mouse_position,
68      int32_t click_count,
69      const PP_Point* mouse_movement) OVERRIDE;
70  virtual PP_Resource CreateTouchInputEvent(
71      PP_Instance instance,
72      PP_InputEvent_Type type,
73      PP_TimeTicks time_stamp,
74      uint32_t modifiers) OVERRIDE;
75  virtual PP_Resource CreateResourceArray(PP_Instance instance,
76                                          const PP_Resource elements[],
77                                          uint32_t size) OVERRIDE;
78  virtual PP_Resource CreateTrueTypeFont(
79      PP_Instance instance,
80      const PP_TrueTypeFontDesc_Dev& desc) OVERRIDE;
81  virtual PP_Resource CreateURLLoader(PP_Instance instance) OVERRIDE;
82  virtual PP_Resource CreateURLRequestInfo(
83      PP_Instance instance,
84      const URLRequestInfoData& data) OVERRIDE;
85  virtual PP_Resource CreateURLResponseInfo(
86      PP_Instance instance,
87      const URLResponseInfoData& data,
88      PP_Resource file_ref_resource) OVERRIDE;
89  virtual PP_Resource CreateWheelInputEvent(
90      PP_Instance instance,
91      PP_TimeTicks time_stamp,
92      uint32_t modifiers,
93      const PP_FloatPoint* wheel_delta,
94      const PP_FloatPoint* wheel_ticks,
95      PP_Bool scroll_by_page) OVERRIDE;
96
97  virtual PP_Resource CreateAudio(PP_Instance instance,
98                                  PP_Resource config_id,
99                                  PPB_Audio_Callback audio_callback,
100                                  void* user_data) OVERRIDE;
101  virtual PP_Resource CreateAudioTrusted(PP_Instance instance) OVERRIDE;
102  virtual PP_Resource CreateAudioConfig(PP_Instance instance,
103                                        PP_AudioSampleRate sample_rate,
104                                        uint32_t sample_frame_count) OVERRIDE;
105  virtual PP_Resource CreateFileChooser(PP_Instance instance,
106                                        PP_FileChooserMode_Dev mode,
107                                        const char* accept_types) OVERRIDE;
108  virtual PP_Resource CreateGraphics2D(PP_Instance pp_instance,
109                                       const PP_Size& size,
110                                       PP_Bool is_always_opaque) OVERRIDE;
111  virtual PP_Resource CreateGraphics3D(PP_Instance instance,
112                                       PP_Resource share_context,
113                                       const int32_t* attrib_list) OVERRIDE;
114  virtual PP_Resource CreateGraphics3DRaw(
115      PP_Instance instance,
116      PP_Resource share_context,
117      const int32_t* attrib_list) OVERRIDE;
118  virtual PP_Resource CreateHostResolverPrivate(PP_Instance instance) OVERRIDE;
119  virtual PP_Resource CreateImageData(PP_Instance instance,
120                                      PP_ImageDataFormat format,
121                                      const PP_Size& size,
122                                      PP_Bool init_to_zero) OVERRIDE;
123  virtual PP_Resource CreateImageDataNaCl(PP_Instance instance,
124                                          PP_ImageDataFormat format,
125                                          const PP_Size& size,
126                                          PP_Bool init_to_zero) OVERRIDE;
127  virtual PP_Resource CreateNetworkMonitor(
128      PP_Instance instance,
129      PPB_NetworkMonitor_Callback callback,
130      void* user_data) OVERRIDE;
131  virtual PP_Resource CreatePrinting(PP_Instance) OVERRIDE;
132  virtual PP_Resource CreateTCPServerSocketPrivate(
133      PP_Instance instance) OVERRIDE;
134  virtual PP_Resource CreateTCPSocketPrivate(PP_Instance instance) OVERRIDE;
135  virtual PP_Resource CreateUDPSocketPrivate(PP_Instance instance) OVERRIDE;
136  virtual PP_Resource CreateWebSocket(PP_Instance instance) OVERRIDE;
137  virtual PP_Resource CreateX509CertificatePrivate(
138      PP_Instance instance) OVERRIDE;
139#if !defined(OS_NACL)
140  virtual PP_Resource CreateAudioInput(PP_Instance instance) OVERRIDE;
141  virtual PP_Resource CreateBroker(PP_Instance instance) OVERRIDE;
142  virtual PP_Resource CreateBrowserFont(
143      PP_Instance instance,
144      const PP_BrowserFont_Trusted_Description* description) OVERRIDE;
145  virtual PP_Resource CreateBuffer(PP_Instance instance,
146                                   uint32_t size) OVERRIDE;
147  virtual PP_Resource CreateDirectoryReader(
148      PP_Instance instance,
149      PP_Resource directory_ref) OVERRIDE;
150  virtual PP_Resource CreateFlashDeviceID(PP_Instance instance) OVERRIDE;
151  virtual PP_Resource CreateFlashFontFile(
152      PP_Instance instance,
153      const PP_BrowserFont_Trusted_Description* description,
154      PP_PrivateFontCharset charset) OVERRIDE;
155  virtual PP_Resource CreateFlashMenu(PP_Instance instance,
156                                      const PP_Flash_Menu* menu_data) OVERRIDE;
157  virtual PP_Resource CreateFlashMessageLoop(PP_Instance instance) OVERRIDE;
158  virtual PP_Resource CreateScrollbar(PP_Instance instance,
159                                      PP_Bool vertical) OVERRIDE;
160  virtual PP_Resource CreateTalk(PP_Instance instance) OVERRIDE;
161  virtual PP_Resource CreateVideoCapture(PP_Instance instance) OVERRIDE;
162  virtual PP_Resource CreateVideoDecoder(
163      PP_Instance instance,
164      PP_Resource context3d_id,
165      PP_VideoDecoder_Profile profile) OVERRIDE;
166#endif  // !defined(OS_NACL)
167
168  virtual bool Send(IPC::Message* msg) OVERRIDE;
169  virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE;
170
171 private:
172  Connection GetConnection();
173  DISALLOW_COPY_AND_ASSIGN(ResourceCreationProxy);
174};
175
176}  // namespace proxy
177}  // namespace ppapi
178
179#endif  // PPAPI_PROXY_RESOURCE_CREATION_PROXY_H_
180