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

Side by Side Diff: chrome/renderer/webplugin_delegate_pepper.cc

Issue 343069: To facilitate apatrick's work on the 3D renderer for Pepper,... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 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
« no previous file with comments | « chrome/renderer/webplugin_delegate_pepper.h ('k') | third_party/npapi/bindings/npapi.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 #define PEPPER_APIS_ENABLED 1 5 #define PEPPER_APIS_ENABLED 1
6 6
7 #include "chrome/renderer/webplugin_delegate_pepper.h" 7 #include "chrome/renderer/webplugin_delegate_pepper.h"
8 8
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
11 11
12 #include "app/gfx/blit.h" 12 #include "app/gfx/blit.h"
13 #include "base/file_util.h" 13 #include "base/file_util.h"
14 #include "base/message_loop.h" 14 #include "base/message_loop.h"
15 #include "base/process_util.h" 15 #include "base/process_util.h"
16 #include "base/scoped_ptr.h" 16 #include "base/scoped_ptr.h"
17 #include "base/stats_counters.h" 17 #include "base/stats_counters.h"
18 #include "base/string_util.h" 18 #include "base/string_util.h"
19 #include "webkit/api/public/WebInputEvent.h" 19 #include "webkit/api/public/WebInputEvent.h"
20 #include "webkit/glue/glue_util.h" 20 #include "webkit/glue/glue_util.h"
21 #include "webkit/glue/pepper/pepper.h"
21 #include "webkit/glue/plugins/plugin_constants_win.h" 22 #include "webkit/glue/plugins/plugin_constants_win.h"
22 #include "webkit/glue/plugins/plugin_instance.h" 23 #include "webkit/glue/plugins/plugin_instance.h"
23 #include "webkit/glue/plugins/plugin_lib.h" 24 #include "webkit/glue/plugins/plugin_lib.h"
24 #include "webkit/glue/plugins/plugin_list.h" 25 #include "webkit/glue/plugins/plugin_list.h"
25 #include "webkit/glue/plugins/plugin_stream_url.h" 26 #include "webkit/glue/plugins/plugin_stream_url.h"
26 #include "webkit/glue/webkit_glue.h" 27 #include "webkit/glue/webkit_glue.h"
27 28
28 using webkit_glue::WebPlugin; 29 using webkit_glue::WebPlugin;
29 using webkit_glue::WebPluginDelegate; 30 using webkit_glue::WebPluginDelegate;
30 using webkit_glue::WebPluginResourceClient; 31 using webkit_glue::WebPluginResourceClient;
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 274
274 void WebPluginDelegatePepper::Print(gfx::NativeDrawingContext context) { 275 void WebPluginDelegatePepper::Print(gfx::NativeDrawingContext context) {
275 NOTIMPLEMENTED(); 276 NOTIMPLEMENTED();
276 } 277 }
277 278
278 void WebPluginDelegatePepper::InstallMissingPlugin() { 279 void WebPluginDelegatePepper::InstallMissingPlugin() {
279 NOTIMPLEMENTED(); 280 NOTIMPLEMENTED();
280 } 281 }
281 282
282 void WebPluginDelegatePepper::SetFocus() { 283 void WebPluginDelegatePepper::SetFocus() {
283 NPEvent npevent; 284 NPPepperEvent npevent;
284 285
285 npevent.type = NPEventType_Focus; 286 npevent.type = NPEventType_Focus;
286 npevent.size = sizeof(NPEvent); 287 npevent.size = sizeof(npevent);
287 // TODO(sehr): what timestamp should this have? 288 // TODO(sehr): what timestamp should this have?
288 npevent.timeStampSeconds = 0.0; 289 npevent.timeStampSeconds = 0.0;
289 // Currently this API only supports gaining focus. 290 // Currently this API only supports gaining focus.
290 npevent.u.focus.value = 1; 291 npevent.u.focus.value = 1;
291 instance()->NPP_HandleEvent(&npevent); 292 instance()->NPP_HandleEvent(&npevent);
292 } 293 }
293 294
294 // Anonymous namespace for functions converting WebInputEvents to NPAPI types. 295 // Anonymous namespace for functions converting WebInputEvents to NPAPI types.
295 namespace { 296 namespace {
296 NPEventTypes ConvertEventTypes(WebInputEvent::Type wetype) { 297 NPEventTypes ConvertEventTypes(WebInputEvent::Type wetype) {
(...skipping 17 matching lines...) Expand all
314 case WebInputEvent::KeyUp: 315 case WebInputEvent::KeyUp:
315 return NPEventType_KeyUp; 316 return NPEventType_KeyUp;
316 case WebInputEvent::Char: 317 case WebInputEvent::Char:
317 return NPEventType_Char; 318 return NPEventType_Char;
318 case WebInputEvent::Undefined: 319 case WebInputEvent::Undefined:
319 default: 320 default:
320 return NPEventType_Undefined; 321 return NPEventType_Undefined;
321 } 322 }
322 } 323 }
323 324
324 void BuildKeyEvent(const WebInputEvent* event, NPEvent* npevent) { 325 void BuildKeyEvent(const WebInputEvent* event, NPPepperEvent* npevent) {
325 const WebKeyboardEvent* key_event = 326 const WebKeyboardEvent* key_event =
326 reinterpret_cast<const WebKeyboardEvent*>(event); 327 reinterpret_cast<const WebKeyboardEvent*>(event);
327 npevent->u.key.modifier = key_event->modifiers; 328 npevent->u.key.modifier = key_event->modifiers;
328 npevent->u.key.normalizedKeyCode = key_event->windowsKeyCode; 329 npevent->u.key.normalizedKeyCode = key_event->windowsKeyCode;
329 } 330 }
330 331
331 void BuildCharEvent(const WebInputEvent* event, NPEvent* npevent) { 332 void BuildCharEvent(const WebInputEvent* event, NPPepperEvent* npevent) {
332 const WebKeyboardEvent* key_event = 333 const WebKeyboardEvent* key_event =
333 reinterpret_cast<const WebKeyboardEvent*>(event); 334 reinterpret_cast<const WebKeyboardEvent*>(event);
334 npevent->u.character.modifier = key_event->modifiers; 335 npevent->u.character.modifier = key_event->modifiers;
335 // For consistency, check that the sizes of the texts agree. 336 // For consistency, check that the sizes of the texts agree.
336 DCHECK(sizeof(npevent->u.character.text) == sizeof(key_event->text)); 337 DCHECK(sizeof(npevent->u.character.text) == sizeof(key_event->text));
337 DCHECK(sizeof(npevent->u.character.unmodifiedText) == 338 DCHECK(sizeof(npevent->u.character.unmodifiedText) ==
338 sizeof(key_event->unmodifiedText)); 339 sizeof(key_event->unmodifiedText));
339 for (size_t i = 0; i < WebKeyboardEvent::textLengthCap; ++i) { 340 for (size_t i = 0; i < WebKeyboardEvent::textLengthCap; ++i) {
340 npevent->u.character.text[i] = key_event->text[i]; 341 npevent->u.character.text[i] = key_event->text[i];
341 npevent->u.character.unmodifiedText[i] = key_event->unmodifiedText[i]; 342 npevent->u.character.unmodifiedText[i] = key_event->unmodifiedText[i];
342 } 343 }
343 } 344 }
344 345
345 void BuildMouseEvent(const WebInputEvent* event, NPEvent* npevent) { 346 void BuildMouseEvent(const WebInputEvent* event, NPPepperEvent* npevent) {
346 const WebMouseEvent* mouse_event = 347 const WebMouseEvent* mouse_event =
347 reinterpret_cast<const WebMouseEvent*>(event); 348 reinterpret_cast<const WebMouseEvent*>(event);
348 npevent->u.mouse.modifier = mouse_event->modifiers; 349 npevent->u.mouse.modifier = mouse_event->modifiers;
349 npevent->u.mouse.button = mouse_event->button; 350 npevent->u.mouse.button = mouse_event->button;
350 npevent->u.mouse.x = mouse_event->x; 351 npevent->u.mouse.x = mouse_event->x;
351 npevent->u.mouse.y = mouse_event->y; 352 npevent->u.mouse.y = mouse_event->y;
352 npevent->u.mouse.clickCount = mouse_event->clickCount; 353 npevent->u.mouse.clickCount = mouse_event->clickCount;
353 } 354 }
354 355
355 void BuildMouseWheelEvent(const WebInputEvent* event, NPEvent* npevent) { 356 void BuildMouseWheelEvent(const WebInputEvent* event, NPPepperEvent* npevent) {
356 const WebMouseWheelEvent* mouse_wheel_event = 357 const WebMouseWheelEvent* mouse_wheel_event =
357 reinterpret_cast<const WebMouseWheelEvent*>(event); 358 reinterpret_cast<const WebMouseWheelEvent*>(event);
358 npevent->u.wheel.modifier = mouse_wheel_event->modifiers; 359 npevent->u.wheel.modifier = mouse_wheel_event->modifiers;
359 npevent->u.wheel.deltaX = mouse_wheel_event->deltaX; 360 npevent->u.wheel.deltaX = mouse_wheel_event->deltaX;
360 npevent->u.wheel.deltaY = mouse_wheel_event->deltaY; 361 npevent->u.wheel.deltaY = mouse_wheel_event->deltaY;
361 npevent->u.wheel.wheelTicksX = mouse_wheel_event->wheelTicksX; 362 npevent->u.wheel.wheelTicksX = mouse_wheel_event->wheelTicksX;
362 npevent->u.wheel.wheelTicksY = mouse_wheel_event->wheelTicksY; 363 npevent->u.wheel.wheelTicksY = mouse_wheel_event->wheelTicksY;
363 npevent->u.wheel.scrollByPage = mouse_wheel_event->scrollByPage; 364 npevent->u.wheel.scrollByPage = mouse_wheel_event->scrollByPage;
364 } 365 }
365 } // namespace 366 } // namespace
366 367
367 bool WebPluginDelegatePepper::HandleInputEvent(const WebInputEvent& event, 368 bool WebPluginDelegatePepper::HandleInputEvent(const WebInputEvent& event,
368 WebCursorInfo* cursor_info) { 369 WebCursorInfo* cursor_info) {
369 NPEvent npevent; 370 NPPepperEvent npevent;
370 371
371 npevent.type = ConvertEventTypes(event.type); 372 npevent.type = ConvertEventTypes(event.type);
372 npevent.size = sizeof(NPEvent); 373 npevent.size = sizeof(npevent);
373 npevent.timeStampSeconds = event.timeStampSeconds; 374 npevent.timeStampSeconds = event.timeStampSeconds;
374 switch (npevent.type) { 375 switch (npevent.type) {
375 case NPEventType_Undefined: 376 case NPEventType_Undefined:
376 return false; 377 return false;
377 case NPEventType_MouseDown: 378 case NPEventType_MouseDown:
378 case NPEventType_MouseUp: 379 case NPEventType_MouseUp:
379 case NPEventType_MouseMove: 380 case NPEventType_MouseMove:
380 case NPEventType_MouseEnter: 381 case NPEventType_MouseEnter:
381 case NPEventType_MouseLeave: 382 case NPEventType_MouseLeave:
382 BuildMouseEvent(&event, &npevent); 383 BuildMouseEvent(&event, &npevent);
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
436 NPError WebPluginDelegatePepper::FlushRenderContext(NPRenderContext* context) { 437 NPError WebPluginDelegatePepper::FlushRenderContext(NPRenderContext* context) {
437 // TODO(brettw): we should have some kind of swapping of the canvases so we 438 // TODO(brettw): we should have some kind of swapping of the canvases so we
438 // can double buffer while avoiding this deep copy. 439 // can double buffer while avoiding this deep copy.
439 if (!plugin_canvas_->getTopPlatformDevice().accessBitmap(false).copyTo( 440 if (!plugin_canvas_->getTopPlatformDevice().accessBitmap(false).copyTo(
440 &committed_bitmap_, SkBitmap::kARGB_8888_Config)) 441 &committed_bitmap_, SkBitmap::kARGB_8888_Config))
441 return NPERR_OUT_OF_MEMORY_ERROR; 442 return NPERR_OUT_OF_MEMORY_ERROR;
442 443
443 committed_bitmap_.setIsOpaque(false); 444 committed_bitmap_.setIsOpaque(false);
444 return NPERR_NO_ERROR; 445 return NPERR_NO_ERROR;
445 } 446 }
OLDNEW
« no previous file with comments | « chrome/renderer/webplugin_delegate_pepper.h ('k') | third_party/npapi/bindings/npapi.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698