OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "webkit/plugins/ppapi/plugin_module.h" | 5 #include "webkit/plugins/ppapi/plugin_module.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
110 #include "webkit/plugins/ppapi/ppb_opengles_impl.h" | 110 #include "webkit/plugins/ppapi/ppb_opengles_impl.h" |
111 #include "webkit/plugins/ppapi/ppb_proxy_impl.h" | 111 #include "webkit/plugins/ppapi/ppb_proxy_impl.h" |
112 #include "webkit/plugins/ppapi/ppb_scrollbar_impl.h" | 112 #include "webkit/plugins/ppapi/ppb_scrollbar_impl.h" |
113 #include "webkit/plugins/ppapi/ppb_uma_private_impl.h" | 113 #include "webkit/plugins/ppapi/ppb_uma_private_impl.h" |
114 #include "webkit/plugins/ppapi/ppb_var_impl.h" | 114 #include "webkit/plugins/ppapi/ppb_var_impl.h" |
115 #include "webkit/plugins/ppapi/ppb_video_capture_impl.h" | 115 #include "webkit/plugins/ppapi/ppb_video_capture_impl.h" |
116 #include "webkit/plugins/ppapi/ppb_video_decoder_impl.h" | 116 #include "webkit/plugins/ppapi/ppb_video_decoder_impl.h" |
117 #include "webkit/plugins/ppapi/ppb_video_layer_impl.h" | 117 #include "webkit/plugins/ppapi/ppb_video_layer_impl.h" |
118 #include "webkit/plugins/ppapi/webkit_forwarding_impl.h" | 118 #include "webkit/plugins/ppapi/webkit_forwarding_impl.h" |
119 | 119 |
| 120 using ppapi::InputEventData; |
120 using ppapi::PpapiGlobals; | 121 using ppapi::PpapiGlobals; |
121 using ppapi::TimeTicksToPPTimeTicks; | 122 using ppapi::TimeTicksToPPTimeTicks; |
122 using ppapi::TimeToPPTime; | 123 using ppapi::TimeToPPTime; |
123 using ppapi::thunk::EnterResource; | 124 using ppapi::thunk::EnterResource; |
124 using ppapi::thunk::PPB_Graphics2D_API; | 125 using ppapi::thunk::PPB_Graphics2D_API; |
| 126 using ppapi::thunk::PPB_InputEvent_API; |
125 | 127 |
126 namespace webkit { | 128 namespace webkit { |
127 namespace ppapi { | 129 namespace ppapi { |
128 | 130 |
129 namespace { | 131 namespace { |
130 | 132 |
131 // Global tracking info for PPAPI plugins. This is lazily created before the | 133 // Global tracking info for PPAPI plugins. This is lazily created before the |
132 // first plugin is allocated, and leaked on shutdown. | 134 // first plugin is allocated, and leaked on shutdown. |
133 // | 135 // |
134 // Note that we don't want a Singleton here since destroying this object will | 136 // Note that we don't want a Singleton here since destroying this object will |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
218 | 220 |
219 uint32_t GetLiveObjectsForInstance(PP_Instance instance_id) { | 221 uint32_t GetLiveObjectsForInstance(PP_Instance instance_id) { |
220 return HostGlobals::Get()->host_resource_tracker()->GetLiveObjectsForInstance( | 222 return HostGlobals::Get()->host_resource_tracker()->GetLiveObjectsForInstance( |
221 instance_id); | 223 instance_id); |
222 } | 224 } |
223 | 225 |
224 PP_Bool IsOutOfProcess() { | 226 PP_Bool IsOutOfProcess() { |
225 return PP_FALSE; | 227 return PP_FALSE; |
226 } | 228 } |
227 | 229 |
| 230 void SimulateInputEvent(PP_Instance instance, PP_Resource input_event) { |
| 231 PluginInstance* plugin_instance = host_globals->GetInstance(instance); |
| 232 if (!plugin_instance) |
| 233 return; |
| 234 |
| 235 EnterResource<PPB_InputEvent_API> enter(input_event, false); |
| 236 if (enter.failed()) |
| 237 return; |
| 238 |
| 239 const InputEventData& input_event_data = enter.object()->GetInputEventData(); |
| 240 plugin_instance->SimulateInputEvent(input_event_data); |
| 241 } |
| 242 |
228 const PPB_Testing_Dev testing_interface = { | 243 const PPB_Testing_Dev testing_interface = { |
229 &ReadImageData, | 244 &ReadImageData, |
230 &RunMessageLoop, | 245 &RunMessageLoop, |
231 &QuitMessageLoop, | 246 &QuitMessageLoop, |
232 &GetLiveObjectsForInstance, | 247 &GetLiveObjectsForInstance, |
233 &IsOutOfProcess | 248 &IsOutOfProcess, |
| 249 &SimulateInputEvent |
234 }; | 250 }; |
235 | 251 |
236 // GetInterface ---------------------------------------------------------------- | 252 // GetInterface ---------------------------------------------------------------- |
237 | 253 |
238 const void* GetInterface(const char* name) { | 254 const void* GetInterface(const char* name) { |
239 // All interfaces should be used on the main thread. | 255 // All interfaces should be used on the main thread. |
240 CHECK(IsMainThread()); | 256 CHECK(IsMainThread()); |
241 | 257 |
242 // Allow custom interface factories first stab at the GetInterface call. | 258 // Allow custom interface factories first stab at the GetInterface call. |
243 const void* custom_interface = | 259 const void* custom_interface = |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
317 return PPB_Var_Impl::GetVarInterface(); | 333 return PPB_Var_Impl::GetVarInterface(); |
318 | 334 |
319 #ifdef ENABLE_FLAPPER_HACKS | 335 #ifdef ENABLE_FLAPPER_HACKS |
320 if (strcmp(name, PPB_FLASH_NETCONNECTOR_INTERFACE) == 0) | 336 if (strcmp(name, PPB_FLASH_NETCONNECTOR_INTERFACE) == 0) |
321 return ::ppapi::thunk::GetPPB_Flash_NetConnector_Thunk(); | 337 return ::ppapi::thunk::GetPPB_Flash_NetConnector_Thunk(); |
322 #endif // ENABLE_FLAPPER_HACKS | 338 #endif // ENABLE_FLAPPER_HACKS |
323 | 339 |
324 // Only support the testing interface when the command line switch is | 340 // Only support the testing interface when the command line switch is |
325 // specified. This allows us to prevent people from (ab)using this interface | 341 // specified. This allows us to prevent people from (ab)using this interface |
326 // in production code. | 342 // in production code. |
327 if (strcmp(name, PPB_TESTING_DEV_INTERFACE) == 0) { | 343 if (CommandLine::ForCurrentProcess()->HasSwitch( |
328 if (CommandLine::ForCurrentProcess()->HasSwitch( | 344 switches::kEnablePepperTesting)) { |
329 switches::kEnablePepperTesting)) | 345 if (strcmp(name, PPB_TESTING_DEV_INTERFACE) == 0 || |
| 346 strcmp(name, PPB_TESTING_DEV_INTERFACE_0_7) == 0) { |
330 return &testing_interface; | 347 return &testing_interface; |
| 348 } |
331 } | 349 } |
332 return NULL; | 350 return NULL; |
333 } | 351 } |
334 | 352 |
335 // Gets the PPAPI entry points from the given library and places them into the | 353 // Gets the PPAPI entry points from the given library and places them into the |
336 // given structure. Returns true on success. | 354 // given structure. Returns true on success. |
337 bool LoadEntryPointsFromLibrary(const base::NativeLibrary& library, | 355 bool LoadEntryPointsFromLibrary(const base::NativeLibrary& library, |
338 PluginModule::EntryPoints* entry_points) { | 356 PluginModule::EntryPoints* entry_points) { |
339 entry_points->get_interface = | 357 entry_points->get_interface = |
340 reinterpret_cast<PluginModule::GetInterfaceFunc>( | 358 reinterpret_cast<PluginModule::GetInterfaceFunc>( |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
561 int retval = entry_points.initialize_module(pp_module(), &GetInterface); | 579 int retval = entry_points.initialize_module(pp_module(), &GetInterface); |
562 if (retval != 0) { | 580 if (retval != 0) { |
563 LOG(WARNING) << "PPP_InitializeModule returned failure " << retval; | 581 LOG(WARNING) << "PPP_InitializeModule returned failure " << retval; |
564 return false; | 582 return false; |
565 } | 583 } |
566 return true; | 584 return true; |
567 } | 585 } |
568 | 586 |
569 } // namespace ppapi | 587 } // namespace ppapi |
570 } // namespace webkit | 588 } // namespace webkit |
OLD | NEW |