resource_creation_impl.cc revision c2db58bd994c04d98e4ee2cd7565b71548655fe3
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#include "content/renderer/pepper/resource_creation_impl.h"
6
7#include "content/renderer/pepper/common.h"
8#include "content/renderer/pepper/ppb_audio_impl.h"
9#include "content/renderer/pepper/ppb_broker_impl.h"
10#include "content/renderer/pepper/ppb_buffer_impl.h"
11#include "content/renderer/pepper/ppb_file_ref_impl.h"
12#include "content/renderer/pepper/ppb_flash_message_loop_impl.h"
13#include "content/renderer/pepper/ppb_graphics_3d_impl.h"
14#include "content/renderer/pepper/ppb_image_data_impl.h"
15#include "content/renderer/pepper/ppb_network_monitor_private_impl.h"
16#include "content/renderer/pepper/ppb_scrollbar_impl.h"
17#include "content/renderer/pepper/ppb_tcp_socket_private_impl.h"
18#include "content/renderer/pepper/ppb_video_decoder_impl.h"
19#include "content/renderer/pepper/ppb_x509_certificate_private_impl.h"
20#include "ppapi/c/pp_size.h"
21#include "ppapi/shared_impl/ppb_audio_config_shared.h"
22#include "ppapi/shared_impl/ppb_image_data_shared.h"
23#include "ppapi/shared_impl/ppb_input_event_shared.h"
24#include "ppapi/shared_impl/ppb_resource_array_shared.h"
25#include "ppapi/shared_impl/var.h"
26
27using ppapi::InputEventData;
28using ppapi::PPB_InputEvent_Shared;
29using ppapi::PPB_ResourceArray_Shared;
30using ppapi::StringVar;
31
32namespace content {
33
34ResourceCreationImpl::ResourceCreationImpl(PepperPluginInstanceImpl* instance) {
35}
36
37ResourceCreationImpl::~ResourceCreationImpl() {
38}
39
40PP_Resource ResourceCreationImpl::CreateAudio(
41    PP_Instance instance,
42    PP_Resource config_id,
43    PPB_Audio_Callback audio_callback,
44    void* user_data) {
45  return PPB_Audio_Impl::Create(instance, config_id, audio_callback,
46                                user_data);
47}
48
49PP_Resource ResourceCreationImpl::CreateAudioConfig(
50    PP_Instance instance,
51    PP_AudioSampleRate sample_rate,
52    uint32_t sample_frame_count) {
53  return ppapi::PPB_AudioConfig_Shared::Create(
54      ppapi::OBJECT_IS_IMPL, instance, sample_rate, sample_frame_count);
55}
56
57PP_Resource ResourceCreationImpl::CreateAudioTrusted(
58    PP_Instance instance) {
59  return (new PPB_Audio_Impl(instance))->GetReference();
60}
61
62PP_Resource ResourceCreationImpl::CreateAudioInput(PP_Instance instance) {
63  return 0;  // Not supported in-process.
64}
65
66PP_Resource ResourceCreationImpl::CreateBroker(PP_Instance instance) {
67  return (new PPB_Broker_Impl(instance))->GetReference();
68}
69
70PP_Resource ResourceCreationImpl::CreateBuffer(PP_Instance instance,
71                                               uint32_t size) {
72  return PPB_Buffer_Impl::Create(instance, size);
73}
74
75PP_Resource ResourceCreationImpl::CreateFileRef(
76    PP_Instance instance,
77    PP_Resource file_system,
78    const char* path) {
79  PPB_FileRef_Impl* res = PPB_FileRef_Impl::CreateInternal(
80      instance, file_system, path);
81  return res ? res->GetReference() : 0;
82}
83
84PP_Resource ResourceCreationImpl::CreateFileRef(
85    const ppapi::PPB_FileRef_CreateInfo& serialized) {
86  // When we're in-process, the host resource in the create info *is* the
87  // resource, so we don't need to do anything.
88  return serialized.resource.host_resource();
89}
90
91PP_Resource ResourceCreationImpl::CreateFlashDRM(PP_Instance instance) {
92  return 0;  // Not supported in-process.
93}
94
95PP_Resource ResourceCreationImpl::CreateFlashFontFile(
96    PP_Instance instance,
97    const PP_BrowserFont_Trusted_Description* description,
98    PP_PrivateFontCharset charset) {
99  return 0;  // Not supported in-process.
100}
101
102PP_Resource ResourceCreationImpl::CreateFlashMenu(
103    PP_Instance instance,
104    const PP_Flash_Menu* menu_data) {
105  return 0;  // Not supported in-process.
106}
107
108PP_Resource ResourceCreationImpl::CreateFlashMessageLoop(PP_Instance instance) {
109  return PPB_Flash_MessageLoop_Impl::Create(instance);
110}
111
112PP_Resource ResourceCreationImpl::CreateGraphics3D(
113    PP_Instance instance,
114    PP_Resource share_context,
115    const int32_t* attrib_list) {
116  return PPB_Graphics3D_Impl::Create(instance, share_context, attrib_list);
117}
118
119PP_Resource ResourceCreationImpl::CreateGraphics3DRaw(
120    PP_Instance instance,
121    PP_Resource share_context,
122    const int32_t* attrib_list) {
123  return PPB_Graphics3D_Impl::CreateRaw(instance, share_context, attrib_list);
124}
125
126PP_Resource ResourceCreationImpl::CreateHostResolver(PP_Instance instance) {
127  return 0;  // Not supported in-process.
128}
129
130PP_Resource ResourceCreationImpl::CreateHostResolverPrivate(
131    PP_Instance instance) {
132  return 0;  // Not supported in-process.
133}
134
135PP_Resource ResourceCreationImpl::CreateImageData(
136    PP_Instance instance,
137    PP_ImageDataFormat format,
138    const PP_Size* size,
139    PP_Bool init_to_zero) {
140  return PPB_ImageData_Impl::Create(instance,
141                                    ppapi::PPB_ImageData_Shared::PLATFORM,
142                                    format, *size, init_to_zero);
143}
144
145PP_Resource ResourceCreationImpl::CreateImageDataSimple(
146    PP_Instance instance,
147    PP_ImageDataFormat format,
148    const PP_Size* size,
149    PP_Bool init_to_zero) {
150  return PPB_ImageData_Impl::Create(instance,
151                                    ppapi::PPB_ImageData_Shared::SIMPLE,
152                                    format, *size, init_to_zero);
153}
154
155PP_Resource ResourceCreationImpl::CreateIMEInputEvent(
156    PP_Instance instance,
157    PP_InputEvent_Type type,
158    PP_TimeTicks time_stamp,
159    struct PP_Var text,
160    uint32_t segment_number,
161    const uint32_t* segment_offsets,
162    int32_t target_segment,
163    uint32_t selection_start,
164    uint32_t selection_end) {
165  return PPB_InputEvent_Shared::CreateIMEInputEvent(
166      ppapi::OBJECT_IS_IMPL, instance, type, time_stamp, text, segment_number,
167      segment_offsets, target_segment, selection_start, selection_end);
168}
169
170PP_Resource ResourceCreationImpl::CreateIsolatedFileSystem(PP_Instance instance,
171                                                           const char* fsid) {
172  NOTIMPLEMENTED();  // no need to support in-process
173  return 0;
174}
175
176PP_Resource ResourceCreationImpl::CreateKeyboardInputEvent(
177    PP_Instance instance,
178    PP_InputEvent_Type type,
179    PP_TimeTicks time_stamp,
180    uint32_t modifiers,
181    uint32_t key_code,
182    struct PP_Var character_text) {
183  return PPB_InputEvent_Shared::CreateKeyboardInputEvent(
184      ppapi::OBJECT_IS_IMPL, instance, type, time_stamp, modifiers, key_code,
185      character_text);
186}
187
188PP_Resource ResourceCreationImpl::CreateMouseInputEvent(
189    PP_Instance instance,
190    PP_InputEvent_Type type,
191    PP_TimeTicks time_stamp,
192    uint32_t modifiers,
193    PP_InputEvent_MouseButton mouse_button,
194    const PP_Point* mouse_position,
195    int32_t click_count,
196    const PP_Point* mouse_movement) {
197  return PPB_InputEvent_Shared::CreateMouseInputEvent(
198      ppapi::OBJECT_IS_IMPL, instance, type, time_stamp, modifiers,
199      mouse_button, mouse_position, click_count, mouse_movement);
200}
201
202PP_Resource ResourceCreationImpl::CreateNetAddressFromIPv4Address(
203    PP_Instance instance,
204    const PP_NetAddress_IPv4* ipv4_addr) {
205  return 0;  // Not supported in-process.
206}
207
208PP_Resource ResourceCreationImpl::CreateNetAddressFromIPv6Address(
209    PP_Instance instance,
210    const PP_NetAddress_IPv6* ipv6_addr) {
211  return 0;  // Not supported in-process.
212}
213
214PP_Resource ResourceCreationImpl::CreateNetAddressFromNetAddressPrivate(
215    PP_Instance instance,
216    const PP_NetAddress_Private& private_addr) {
217  return 0;  // Not supported in-process.
218}
219
220PP_Resource ResourceCreationImpl::CreateTouchInputEvent(
221    PP_Instance instance,
222    PP_InputEvent_Type type,
223    PP_TimeTicks time_stamp,
224    uint32_t modifiers) {
225  return PPB_InputEvent_Shared::CreateTouchInputEvent(
226      ppapi::OBJECT_IS_IMPL, instance, type, time_stamp, modifiers);
227}
228
229PP_Resource ResourceCreationImpl::CreateNetworkMonitor(
230    PP_Instance instance,
231    PPB_NetworkMonitor_Callback callback,
232    void* user_data) {
233  return PPB_NetworkMonitor_Private_Impl::Create(instance, callback, user_data);
234}
235
236PP_Resource ResourceCreationImpl::CreateScrollbar(PP_Instance instance,
237                                                  PP_Bool vertical) {
238  return PPB_Scrollbar_Impl::Create(instance, PP_ToBool(vertical));
239}
240
241PP_Resource ResourceCreationImpl::CreateTalk(PP_Instance /* instance */) {
242  return 0;  // Not supported in-process.
243}
244
245PP_Resource ResourceCreationImpl::CreateResourceArray(
246    PP_Instance instance,
247    const PP_Resource elements[],
248    uint32_t size) {
249  PPB_ResourceArray_Shared* object = new PPB_ResourceArray_Shared(
250      ppapi::OBJECT_IS_IMPL, instance, elements, size);
251  return object->GetReference();
252}
253
254PP_Resource ResourceCreationImpl::CreateTCPServerSocketPrivate(
255    PP_Instance instance) {
256  return 0;  // Not supported in-process.
257}
258
259PP_Resource ResourceCreationImpl::CreateTCPSocket(PP_Instance instance) {
260  return 0;  // Not supported in-process.
261}
262
263PP_Resource ResourceCreationImpl::CreateTCPSocketPrivate(PP_Instance instance) {
264  return PPB_TCPSocket_Private_Impl::CreateResource(instance);
265}
266
267PP_Resource ResourceCreationImpl::CreateUDPSocket(PP_Instance instance) {
268  return 0;  // Not supported in-process.
269}
270
271PP_Resource ResourceCreationImpl::CreateUDPSocketPrivate(PP_Instance instance) {
272  return 0;  // Not supported in-process.
273}
274
275PP_Resource ResourceCreationImpl::CreateVideoCapture(PP_Instance instance) {
276  return 0;  // VideoCapture is not supported in process now.
277}
278
279PP_Resource ResourceCreationImpl::CreateVideoDecoder(
280    PP_Instance instance,
281    PP_Resource graphics3d_id,
282    PP_VideoDecoder_Profile profile) {
283  return PPB_VideoDecoder_Impl::Create(instance, graphics3d_id, profile);
284}
285
286PP_Resource ResourceCreationImpl::CreateVideoDestination(
287    PP_Instance instance) {
288  return 0;  // Not supported in-process.
289}
290
291PP_Resource ResourceCreationImpl::CreateVideoSource(
292    PP_Instance instance) {
293  return 0;  // Not supported in-process.
294}
295
296PP_Resource ResourceCreationImpl::CreateWheelInputEvent(
297    PP_Instance instance,
298    PP_TimeTicks time_stamp,
299    uint32_t modifiers,
300    const PP_FloatPoint* wheel_delta,
301    const PP_FloatPoint* wheel_ticks,
302    PP_Bool scroll_by_page) {
303  return PPB_InputEvent_Shared::CreateWheelInputEvent(
304      ppapi::OBJECT_IS_IMPL, instance, time_stamp, modifiers,
305      wheel_delta, wheel_ticks, scroll_by_page);
306}
307
308PP_Resource ResourceCreationImpl::CreateX509CertificatePrivate(
309    PP_Instance instance) {
310  return PPB_X509Certificate_Private_Impl::CreateResource(instance);
311}
312
313}  // namespace content
314