Index: webkit/plugins/ppapi/plugin_module.cc |
=================================================================== |
--- webkit/plugins/ppapi/plugin_module.cc (revision 108154) |
+++ webkit/plugins/ppapi/plugin_module.cc (working copy) |
@@ -86,9 +86,17 @@ |
#include "ppapi/shared_impl/time_conversion.h" |
#include "ppapi/thunk/enter.h" |
#include "ppapi/thunk/thunk.h" |
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebCursorInfo.h" |
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" |
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebElement.h" |
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" |
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h" |
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginContainer.h" |
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" |
bbudge
2011/11/08 00:05:05
Most of these aren't needed anymore.
|
#include "webkit/plugins/plugin_switches.h" |
#include "webkit/plugins/ppapi/callbacks.h" |
#include "webkit/plugins/ppapi/common.h" |
+#include "webkit/plugins/ppapi/event_conversion.h" |
#include "webkit/plugins/ppapi/host_globals.h" |
#include "webkit/plugins/ppapi/host_resource_tracker.h" |
#include "webkit/plugins/ppapi/ppapi_interface_factory.h" |
@@ -114,12 +122,18 @@ |
#include "webkit/plugins/ppapi/ppb_video_layer_impl.h" |
#include "webkit/plugins/ppapi/webkit_forwarding_impl.h" |
+using ppapi::InputEventData; |
using ppapi::PpapiGlobals; |
using ppapi::TimeTicksToPPTimeTicks; |
using ppapi::TimeToPPTime; |
using ppapi::thunk::EnterResource; |
+using ppapi::thunk::EnterResourceNoLock; |
using ppapi::thunk::PPB_Graphics2D_API; |
+using ppapi::thunk::PPB_InputEvent_API; |
+using WebKit::WebCursorInfo; |
+using WebKit::WebInputEvent; |
+ |
namespace webkit { |
namespace ppapi { |
@@ -222,12 +236,36 @@ |
return PP_FALSE; |
} |
+void SimulateInputEvent(PP_Instance instance, PP_Resource input_event) { |
+ PluginInstance* plugin_instance = host_globals->GetInstance(instance); |
+ if (!plugin_instance) { |
+ NOTREACHED(); |
+ return; |
+ } |
+ EnterResourceNoLock<PPB_InputEvent_API> enter(input_event, false); |
dmichael (off chromium)
2011/11/07 17:12:58
We should probably be consistent and use EnterReso
bbudge
2011/11/08 00:05:05
Done.
|
+ if (enter.failed()) { |
+ NOTREACHED(); |
+ return; |
+ } |
+ const InputEventData& data = enter.object()->GetInputEventData(); |
+ scoped_ptr<WebInputEvent> web_input_event( |
+ CreateWebInputEvent(data)); |
+ |
+ // Route the event back through the plugin, rather than through the entire |
+ // renderer, to avoid the complex event logic there. |
+ // TODO(bbudge) For "user gesture" events, create a user gesture indicator |
+ // here so we can write automated tests for functionality that requires one. |
+ WebCursorInfo cursor_info; |
+ plugin_instance->HandleInputEvent(*web_input_event.get(), &cursor_info); |
+} |
+ |
const PPB_Testing_Dev testing_interface = { |
&ReadImageData, |
&RunMessageLoop, |
&QuitMessageLoop, |
&GetLiveObjectsForInstance, |
- &IsOutOfProcess |
+ &IsOutOfProcess, |
+ &SimulateInputEvent |
}; |
// GetInterface ---------------------------------------------------------------- |