Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(345)

Side by Side Diff: webkit/plugins/ppapi/plugin_module.cc

Issue 8413021: Add functions to generate input events to PPB_Testing_Dev. These make (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 #include "ppapi/c/trusted/ppb_buffer_trusted.h" 79 #include "ppapi/c/trusted/ppb_buffer_trusted.h"
80 #include "ppapi/c/trusted/ppb_file_chooser_trusted.h" 80 #include "ppapi/c/trusted/ppb_file_chooser_trusted.h"
81 #include "ppapi/c/trusted/ppb_file_io_trusted.h" 81 #include "ppapi/c/trusted/ppb_file_io_trusted.h"
82 #include "ppapi/c/trusted/ppb_graphics_3d_trusted.h" 82 #include "ppapi/c/trusted/ppb_graphics_3d_trusted.h"
83 #include "ppapi/c/trusted/ppb_image_data_trusted.h" 83 #include "ppapi/c/trusted/ppb_image_data_trusted.h"
84 #include "ppapi/c/trusted/ppb_url_loader_trusted.h" 84 #include "ppapi/c/trusted/ppb_url_loader_trusted.h"
85 #include "ppapi/shared_impl/input_event_impl.h" 85 #include "ppapi/shared_impl/input_event_impl.h"
86 #include "ppapi/shared_impl/time_conversion.h" 86 #include "ppapi/shared_impl/time_conversion.h"
87 #include "ppapi/thunk/enter.h" 87 #include "ppapi/thunk/enter.h"
88 #include "ppapi/thunk/thunk.h" 88 #include "ppapi/thunk/thunk.h"
89 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h"
90 #include "third_party/WebKit/Source/WebKit/chromium/public/WebElement.h"
91 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
92 #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h"
93 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginContainer.h"
94 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
89 #include "webkit/plugins/plugin_switches.h" 95 #include "webkit/plugins/plugin_switches.h"
90 #include "webkit/plugins/ppapi/callbacks.h" 96 #include "webkit/plugins/ppapi/callbacks.h"
91 #include "webkit/plugins/ppapi/common.h" 97 #include "webkit/plugins/ppapi/common.h"
98 #include "webkit/plugins/ppapi/event_conversion.h"
92 #include "webkit/plugins/ppapi/host_globals.h" 99 #include "webkit/plugins/ppapi/host_globals.h"
93 #include "webkit/plugins/ppapi/host_resource_tracker.h" 100 #include "webkit/plugins/ppapi/host_resource_tracker.h"
94 #include "webkit/plugins/ppapi/ppapi_interface_factory.h" 101 #include "webkit/plugins/ppapi/ppapi_interface_factory.h"
95 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h" 102 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h"
96 #include "webkit/plugins/ppapi/ppb_directory_reader_impl.h" 103 #include "webkit/plugins/ppapi/ppb_directory_reader_impl.h"
97 #include "webkit/plugins/ppapi/ppb_flash_clipboard_impl.h" 104 #include "webkit/plugins/ppapi/ppb_flash_clipboard_impl.h"
98 #include "webkit/plugins/ppapi/ppb_flash_file_impl.h" 105 #include "webkit/plugins/ppapi/ppb_flash_file_impl.h"
99 #include "webkit/plugins/ppapi/ppb_flash_impl.h" 106 #include "webkit/plugins/ppapi/ppb_flash_impl.h"
100 #include "webkit/plugins/ppapi/ppb_flash_menu_impl.h" 107 #include "webkit/plugins/ppapi/ppb_flash_menu_impl.h"
101 #include "webkit/plugins/ppapi/ppb_flash_net_connector_impl.h" 108 #include "webkit/plugins/ppapi/ppb_flash_net_connector_impl.h"
102 #include "webkit/plugins/ppapi/ppb_font_impl.h" 109 #include "webkit/plugins/ppapi/ppb_font_impl.h"
103 #include "webkit/plugins/ppapi/ppb_gpu_blacklist_private_impl.h" 110 #include "webkit/plugins/ppapi/ppb_gpu_blacklist_private_impl.h"
104 #include "webkit/plugins/ppapi/ppb_graphics_2d_impl.h" 111 #include "webkit/plugins/ppapi/ppb_graphics_2d_impl.h"
105 #include "webkit/plugins/ppapi/ppb_image_data_impl.h" 112 #include "webkit/plugins/ppapi/ppb_image_data_impl.h"
106 #include "webkit/plugins/ppapi/ppb_layer_compositor_impl.h" 113 #include "webkit/plugins/ppapi/ppb_layer_compositor_impl.h"
107 #include "webkit/plugins/ppapi/ppb_opengles_impl.h" 114 #include "webkit/plugins/ppapi/ppb_opengles_impl.h"
108 #include "webkit/plugins/ppapi/ppb_proxy_impl.h" 115 #include "webkit/plugins/ppapi/ppb_proxy_impl.h"
109 #include "webkit/plugins/ppapi/ppb_scrollbar_impl.h" 116 #include "webkit/plugins/ppapi/ppb_scrollbar_impl.h"
110 #include "webkit/plugins/ppapi/ppb_uma_private_impl.h" 117 #include "webkit/plugins/ppapi/ppb_uma_private_impl.h"
111 #include "webkit/plugins/ppapi/ppb_var_impl.h" 118 #include "webkit/plugins/ppapi/ppb_var_impl.h"
112 #include "webkit/plugins/ppapi/ppb_video_capture_impl.h" 119 #include "webkit/plugins/ppapi/ppb_video_capture_impl.h"
113 #include "webkit/plugins/ppapi/ppb_video_decoder_impl.h" 120 #include "webkit/plugins/ppapi/ppb_video_decoder_impl.h"
114 #include "webkit/plugins/ppapi/ppb_video_layer_impl.h" 121 #include "webkit/plugins/ppapi/ppb_video_layer_impl.h"
115 #include "webkit/plugins/ppapi/webkit_forwarding_impl.h" 122 #include "webkit/plugins/ppapi/webkit_forwarding_impl.h"
116 123
124 using ppapi::InputEventData;
117 using ppapi::PpapiGlobals; 125 using ppapi::PpapiGlobals;
118 using ppapi::TimeTicksToPPTimeTicks; 126 using ppapi::TimeTicksToPPTimeTicks;
119 using ppapi::TimeToPPTime; 127 using ppapi::TimeToPPTime;
120 using ppapi::thunk::EnterResource; 128 using ppapi::thunk::EnterResource;
121 using ppapi::thunk::PPB_Graphics2D_API; 129 using ppapi::thunk::PPB_Graphics2D_API;
122 130
131 using WebKit::WebView;
132 using WebKit::WebInputEvent;
133
123 namespace webkit { 134 namespace webkit {
124 namespace ppapi { 135 namespace ppapi {
125 136
126 namespace { 137 namespace {
127 138
128 // Global tracking info for PPAPI plugins. This is lazily created before the 139 // Global tracking info for PPAPI plugins. This is lazily created before the
129 // first plugin is allocated, and leaked on shutdown. 140 // first plugin is allocated, and leaked on shutdown.
130 // 141 //
131 // Note that we don't want a Singleton here since destroying this object will 142 // Note that we don't want a Singleton here since destroying this object will
132 // try to free some stuff that requires WebKit, and Singletons are destroyed 143 // try to free some stuff that requires WebKit, and Singletons are destroyed
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 226
216 uint32_t GetLiveObjectsForInstance(PP_Instance instance_id) { 227 uint32_t GetLiveObjectsForInstance(PP_Instance instance_id) {
217 return HostGlobals::Get()->host_resource_tracker()->GetLiveObjectsForInstance( 228 return HostGlobals::Get()->host_resource_tracker()->GetLiveObjectsForInstance(
218 instance_id); 229 instance_id);
219 } 230 }
220 231
221 PP_Bool IsOutOfProcess() { 232 PP_Bool IsOutOfProcess() {
222 return PP_FALSE; 233 return PP_FALSE;
223 } 234 }
224 235
236 WebView* GetViewForInstance(PP_Instance instance) {
237 PluginInstance* plugin_instance = host_globals->GetInstance(instance);
238 if (!plugin_instance)
239 return NULL;
240 return plugin_instance->container()->element().document().frame()->view();
241 }
242
243 void GenerateKeyEvent(
244 PP_Instance instance,
245 PP_InputEvent_Type type,
246 const PP_InputEvent_Key& key_event) {
247 InputEventData input_event;
248 input_event.event_type = type;
249 input_event.event_time_stamp = GetTickTime();
250 input_event.event_modifiers = key_event.modifier;
251 input_event.key_code = key_event.key_code;
252 scoped_ptr<WebInputEvent> web_event(CreateWebInputEvent(input_event));
253 WebView* web_view = GetViewForInstance(instance);
254 if (web_view && web_event.get())
255 web_view->handleInputEvent(*web_event);
256 }
257
258 void GenerateCharacterEvent(
259 PP_Instance instance,
260 const PP_InputEvent_Character& character_event)
261 {
262 InputEventData input_event;
263 input_event.event_type = PP_INPUTEVENT_TYPE_CHAR;
264 input_event.event_time_stamp = GetTickTime();
265 input_event.event_modifiers = character_event.modifier;
266 input_event.character_text = character_event.text;
267 scoped_ptr<WebInputEvent> web_event(CreateWebInputEvent(input_event));
268 WebView* web_view = GetViewForInstance(instance);
269 if (web_view && web_event.get())
270 web_view->handleInputEvent(*web_event);
271 }
272
273 void GenerateMouseEvent(
274 PP_Instance instance,
275 PP_InputEvent_Type type,
276 const PP_InputEvent_Mouse& mouse_event)
277 {
278 InputEventData input_event;
279 input_event.event_type = type;
280 input_event.event_time_stamp = GetTickTime();
281 input_event.event_modifiers = mouse_event.modifier;
282 input_event.mouse_button = mouse_event.button;
283 input_event.mouse_position = PP_MakePoint(mouse_event.x, mouse_event.y);
284 input_event.mouse_movement = PP_Point();
285 input_event.mouse_click_count = mouse_event.click_count;
286 scoped_ptr<WebInputEvent> web_event(CreateWebInputEvent(input_event));
287 WebView* web_view = GetViewForInstance(instance);
288 if (web_view && web_event.get())
289 web_view->handleInputEvent(*web_event);
290 }
291
292 void GenerateWheelEvent(
293 PP_Instance instance,
294 const PP_InputEvent_Wheel& wheel_event)
295 {
296 InputEventData input_event;
297 input_event.event_type = PP_INPUTEVENT_TYPE_WHEEL;
298 input_event.event_time_stamp = GetTickTime();
299 input_event.event_modifiers = wheel_event.modifier;
300 input_event.wheel_delta =
301 PP_MakeFloatPoint(wheel_event.delta_x, wheel_event.delta_y);
302 input_event.wheel_ticks =
303 PP_MakeFloatPoint(wheel_event.wheel_ticks_x, wheel_event.wheel_ticks_y);
304 input_event.wheel_scroll_by_page = (wheel_event.scroll_by_page == PP_TRUE);
305 scoped_ptr<WebInputEvent> web_event(CreateWebInputEvent(input_event));
306 WebView* web_view = GetViewForInstance(instance);
307 if (web_view && web_event.get())
308 web_view->handleInputEvent(*web_event);
309 }
310
225 const PPB_Testing_Dev testing_interface = { 311 const PPB_Testing_Dev testing_interface = {
226 &ReadImageData, 312 &ReadImageData,
227 &RunMessageLoop, 313 &RunMessageLoop,
228 &QuitMessageLoop, 314 &QuitMessageLoop,
229 &GetLiveObjectsForInstance, 315 &GetLiveObjectsForInstance,
230 &IsOutOfProcess 316 &IsOutOfProcess,
317 &GenerateKeyEvent,
318 &GenerateCharacterEvent,
319 &GenerateMouseEvent,
320 &GenerateWheelEvent,
231 }; 321 };
232 322
233 // GetInterface ---------------------------------------------------------------- 323 // GetInterface ----------------------------------------------------------------
234 324
235 const void* GetInterface(const char* name) { 325 const void* GetInterface(const char* name) {
236 // All interfaces should be used on the main thread. 326 // All interfaces should be used on the main thread.
237 CHECK(IsMainThread()); 327 CHECK(IsMainThread());
238 328
239 // Allow custom interface factories first stab at the GetInterface call. 329 // Allow custom interface factories first stab at the GetInterface call.
240 const void* custom_interface = 330 const void* custom_interface =
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
556 int retval = entry_points.initialize_module(pp_module(), &GetInterface); 646 int retval = entry_points.initialize_module(pp_module(), &GetInterface);
557 if (retval != 0) { 647 if (retval != 0) {
558 LOG(WARNING) << "PPP_InitializeModule returned failure " << retval; 648 LOG(WARNING) << "PPP_InitializeModule returned failure " << retval;
559 return false; 649 return false;
560 } 650 }
561 return true; 651 return true;
562 } 652 }
563 653
564 } // namespace ppapi 654 } // namespace ppapi
565 } // namespace webkit 655 } // namespace webkit
OLDNEW
« ppapi/proxy/ppapi_messages.h ('K') | « ppapi/proxy/ppb_testing_proxy.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698