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 27 using ppapi::InputEventData; 28 using ppapi::PPB_InputEvent_Shared; 29 using ppapi::PPB_ResourceArray_Shared; 30 using ppapi::StringVar; 31 32 namespace content { 33 34 ResourceCreationImpl::ResourceCreationImpl(PepperPluginInstanceImpl* instance) { 35 } 36 37 ResourceCreationImpl::~ResourceCreationImpl() { 38 } 39 40 PP_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 49 PP_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 57 PP_Resource ResourceCreationImpl::CreateAudioTrusted( 58 PP_Instance instance) { 59 return (new PPB_Audio_Impl(instance))->GetReference(); 60 } 61 62 PP_Resource ResourceCreationImpl::CreateAudioInput(PP_Instance instance) { 63 return 0; // Not supported in-process. 64 } 65 66 PP_Resource ResourceCreationImpl::CreateBroker(PP_Instance instance) { 67 return (new PPB_Broker_Impl(instance))->GetReference(); 68 } 69 70 PP_Resource ResourceCreationImpl::CreateBuffer(PP_Instance instance, 71 uint32_t size) { 72 return PPB_Buffer_Impl::Create(instance, size); 73 } 74 75 PP_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 84 PP_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 91 PP_Resource ResourceCreationImpl::CreateFlashDRM(PP_Instance instance) { 92 return 0; // Not supported in-process. 93 } 94 95 PP_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 102 PP_Resource ResourceCreationImpl::CreateFlashMenu( 103 PP_Instance instance, 104 const PP_Flash_Menu* menu_data) { 105 return 0; // Not supported in-process. 106 } 107 108 PP_Resource ResourceCreationImpl::CreateFlashMessageLoop(PP_Instance instance) { 109 return PPB_Flash_MessageLoop_Impl::Create(instance); 110 } 111 112 PP_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 119 PP_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 126 PP_Resource ResourceCreationImpl::CreateHostResolver(PP_Instance instance) { 127 return 0; // Not supported in-process. 128 } 129 130 PP_Resource ResourceCreationImpl::CreateHostResolverPrivate( 131 PP_Instance instance) { 132 return 0; // Not supported in-process. 133 } 134 135 PP_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 145 PP_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 155 PP_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 170 PP_Resource ResourceCreationImpl::CreateIsolatedFileSystem(PP_Instance instance, 171 const char* fsid) { 172 NOTIMPLEMENTED(); // no need to support in-process 173 return 0; 174 } 175 176 PP_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 188 PP_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 202 PP_Resource ResourceCreationImpl::CreateNetAddressFromIPv4Address( 203 PP_Instance instance, 204 const PP_NetAddress_IPv4* ipv4_addr) { 205 return 0; // Not supported in-process. 206 } 207 208 PP_Resource ResourceCreationImpl::CreateNetAddressFromIPv6Address( 209 PP_Instance instance, 210 const PP_NetAddress_IPv6* ipv6_addr) { 211 return 0; // Not supported in-process. 212 } 213 214 PP_Resource ResourceCreationImpl::CreateNetAddressFromNetAddressPrivate( 215 PP_Instance instance, 216 const PP_NetAddress_Private& private_addr) { 217 return 0; // Not supported in-process. 218 } 219 220 PP_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 229 PP_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 236 PP_Resource ResourceCreationImpl::CreateScrollbar(PP_Instance instance, 237 PP_Bool vertical) { 238 return PPB_Scrollbar_Impl::Create(instance, PP_ToBool(vertical)); 239 } 240 241 PP_Resource ResourceCreationImpl::CreateTalk(PP_Instance /* instance */) { 242 return 0; // Not supported in-process. 243 } 244 245 PP_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 254 PP_Resource ResourceCreationImpl::CreateTCPServerSocketPrivate( 255 PP_Instance instance) { 256 return 0; // Not supported in-process. 257 } 258 259 PP_Resource ResourceCreationImpl::CreateTCPSocket(PP_Instance instance) { 260 return 0; // Not supported in-process. 261 } 262 263 PP_Resource ResourceCreationImpl::CreateTCPSocketPrivate(PP_Instance instance) { 264 return PPB_TCPSocket_Private_Impl::CreateResource(instance); 265 } 266 267 PP_Resource ResourceCreationImpl::CreateUDPSocket(PP_Instance instance) { 268 return 0; // Not supported in-process. 269 } 270 271 PP_Resource ResourceCreationImpl::CreateUDPSocketPrivate(PP_Instance instance) { 272 return 0; // Not supported in-process. 273 } 274 275 PP_Resource ResourceCreationImpl::CreateVideoCapture(PP_Instance instance) { 276 return 0; // VideoCapture is not supported in process now. 277 } 278 279 PP_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 286 PP_Resource ResourceCreationImpl::CreateVideoDestination( 287 PP_Instance instance) { 288 return 0; // Not supported in-process. 289 } 290 291 PP_Resource ResourceCreationImpl::CreateVideoSource( 292 PP_Instance instance) { 293 return 0; // Not supported in-process. 294 } 295 296 PP_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 308 PP_Resource ResourceCreationImpl::CreateX509CertificatePrivate( 309 PP_Instance instance) { 310 return PPB_X509Certificate_Private_Impl::CreateResource(instance); 311 } 312 313 } // namespace content 314