Home | History | Annotate | Download | only in pepper
      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