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

Side by Side Diff: content/renderer/pepper/event_conversion.cc

Issue 2569273002: Add constructors to WebInputEvents and setters so we can work at cleaning up these public structs. (Closed)
Patch Set: Rebase Created 3 years, 11 months 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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 "content/renderer/pepper/event_conversion.h" 5 #include "content/renderer/pepper/event_conversion.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 #include <string.h> 9 #include <string.h>
10 10
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 &web_event->touchesLength); 385 &web_event->touchesLength);
386 SetWebTouchPointsIfNotYetSet(event.touches, 386 SetWebTouchPointsIfNotYetSet(event.touches,
387 WebTouchPoint::StateStationary, 387 WebTouchPoint::StateStationary,
388 web_event->touches, 388 web_event->touches,
389 &web_event->touchesLength); 389 &web_event->touchesLength);
390 390
391 return web_event; 391 return web_event;
392 } 392 }
393 393
394 WebKeyboardEvent* BuildKeyEvent(const InputEventData& event) { 394 WebKeyboardEvent* BuildKeyEvent(const InputEventData& event) {
395 WebKeyboardEvent* key_event = new WebKeyboardEvent(); 395 WebInputEvent::Type type = WebInputEvent::Type::Undefined;
396 switch (event.event_type) { 396 switch (event.event_type) {
397 case PP_INPUTEVENT_TYPE_RAWKEYDOWN: 397 case PP_INPUTEVENT_TYPE_RAWKEYDOWN:
398 key_event->type = WebInputEvent::RawKeyDown; 398 type = WebInputEvent::RawKeyDown;
399 break; 399 break;
400 case PP_INPUTEVENT_TYPE_KEYDOWN: 400 case PP_INPUTEVENT_TYPE_KEYDOWN:
401 key_event->type = WebInputEvent::KeyDown; 401 type = WebInputEvent::KeyDown;
402 break; 402 break;
403 case PP_INPUTEVENT_TYPE_KEYUP: 403 case PP_INPUTEVENT_TYPE_KEYUP:
404 key_event->type = WebInputEvent::KeyUp; 404 type = WebInputEvent::KeyUp;
405 break; 405 break;
406 default: 406 default:
407 NOTREACHED(); 407 NOTREACHED();
408 } 408 }
409 key_event->timeStampSeconds = event.event_time_stamp; 409 WebKeyboardEvent* key_event =
410 key_event->modifiers = event.event_modifiers; 410 new WebKeyboardEvent(type, event.event_modifiers, event.event_time_stamp);
411 key_event->windowsKeyCode = event.key_code; 411 key_event->windowsKeyCode = event.key_code;
412 return key_event; 412 return key_event;
413 } 413 }
414 414
415 WebKeyboardEvent* BuildCharEvent(const InputEventData& event) { 415 WebKeyboardEvent* BuildCharEvent(const InputEventData& event) {
416 WebKeyboardEvent* key_event = new WebKeyboardEvent(); 416 WebKeyboardEvent* key_event = new WebKeyboardEvent(
417 key_event->type = WebInputEvent::Char; 417 WebInputEvent::Char, event.event_modifiers, event.event_time_stamp);
418 key_event->timeStampSeconds = event.event_time_stamp;
419 key_event->modifiers = event.event_modifiers;
420 418
421 // Make sure to not read beyond the buffer in case some bad code doesn't 419 // Make sure to not read beyond the buffer in case some bad code doesn't
422 // NULL-terminate it (this is called from plugins). 420 // NULL-terminate it (this is called from plugins).
423 size_t text_length_cap = WebKeyboardEvent::textLengthCap; 421 size_t text_length_cap = WebKeyboardEvent::textLengthCap;
424 base::string16 text16 = base::UTF8ToUTF16(event.character_text); 422 base::string16 text16 = base::UTF8ToUTF16(event.character_text);
425 423
426 memset(key_event->text, 0, text_length_cap); 424 memset(key_event->text, 0, text_length_cap);
427 memset(key_event->unmodifiedText, 0, text_length_cap); 425 memset(key_event->unmodifiedText, 0, text_length_cap);
428 for (size_t i = 0; i < std::min(text_length_cap, text16.size()); ++i) 426 for (size_t i = 0; i < std::min(text_length_cap, text16.size()); ++i)
429 key_event->text[i] = text16[i]; 427 key_event->text[i] = text16[i];
430 return key_event; 428 return key_event;
431 } 429 }
432 430
433 WebMouseEvent* BuildMouseEvent(const InputEventData& event) { 431 WebMouseEvent* BuildMouseEvent(const InputEventData& event) {
434 WebMouseEvent* mouse_event = new WebMouseEvent(); 432 WebInputEvent::Type type = WebInputEvent::Undefined;
435 mouse_event->pointerType = blink::WebPointerProperties::PointerType::Mouse;
436
437 switch (event.event_type) { 433 switch (event.event_type) {
438 case PP_INPUTEVENT_TYPE_MOUSEDOWN: 434 case PP_INPUTEVENT_TYPE_MOUSEDOWN:
439 mouse_event->type = WebInputEvent::MouseDown; 435 type = WebInputEvent::MouseDown;
440 break; 436 break;
441 case PP_INPUTEVENT_TYPE_MOUSEUP: 437 case PP_INPUTEVENT_TYPE_MOUSEUP:
442 mouse_event->type = WebInputEvent::MouseUp; 438 type = WebInputEvent::MouseUp;
443 break; 439 break;
444 case PP_INPUTEVENT_TYPE_MOUSEMOVE: 440 case PP_INPUTEVENT_TYPE_MOUSEMOVE:
445 mouse_event->type = WebInputEvent::MouseMove; 441 type = WebInputEvent::MouseMove;
446 break; 442 break;
447 case PP_INPUTEVENT_TYPE_MOUSEENTER: 443 case PP_INPUTEVENT_TYPE_MOUSEENTER:
448 mouse_event->type = WebInputEvent::MouseEnter; 444 type = WebInputEvent::MouseEnter;
449 break; 445 break;
450 case PP_INPUTEVENT_TYPE_MOUSELEAVE: 446 case PP_INPUTEVENT_TYPE_MOUSELEAVE:
451 mouse_event->type = WebInputEvent::MouseLeave; 447 type = WebInputEvent::MouseLeave;
452 break; 448 break;
453 case PP_INPUTEVENT_TYPE_CONTEXTMENU: 449 case PP_INPUTEVENT_TYPE_CONTEXTMENU:
454 mouse_event->type = WebInputEvent::ContextMenu; 450 type = WebInputEvent::ContextMenu;
455 break; 451 break;
456 default: 452 default:
457 NOTREACHED(); 453 NOTREACHED();
458 } 454 }
459 mouse_event->timeStampSeconds = event.event_time_stamp; 455 WebMouseEvent* mouse_event =
460 mouse_event->modifiers = event.event_modifiers; 456 new WebMouseEvent(type, event.event_modifiers, event.event_time_stamp);
457 mouse_event->pointerType = blink::WebPointerProperties::PointerType::Mouse;
461 mouse_event->button = static_cast<WebMouseEvent::Button>(event.mouse_button); 458 mouse_event->button = static_cast<WebMouseEvent::Button>(event.mouse_button);
462 if (mouse_event->type == WebInputEvent::MouseMove) { 459 if (mouse_event->type == WebInputEvent::MouseMove) {
463 if (mouse_event->modifiers & WebInputEvent::LeftButtonDown) 460 if (mouse_event->modifiers & WebInputEvent::LeftButtonDown)
464 mouse_event->button = WebMouseEvent::Button::Left; 461 mouse_event->button = WebMouseEvent::Button::Left;
465 else if (mouse_event->modifiers & WebInputEvent::MiddleButtonDown) 462 else if (mouse_event->modifiers & WebInputEvent::MiddleButtonDown)
466 mouse_event->button = WebMouseEvent::Button::Middle; 463 mouse_event->button = WebMouseEvent::Button::Middle;
467 else if (mouse_event->modifiers & WebInputEvent::RightButtonDown) 464 else if (mouse_event->modifiers & WebInputEvent::RightButtonDown)
468 mouse_event->button = WebMouseEvent::Button::Right; 465 mouse_event->button = WebMouseEvent::Button::Right;
469 } 466 }
470 mouse_event->x = event.mouse_position.x; 467 mouse_event->x = event.mouse_position.x;
471 mouse_event->y = event.mouse_position.y; 468 mouse_event->y = event.mouse_position.y;
472 mouse_event->clickCount = event.mouse_click_count; 469 mouse_event->clickCount = event.mouse_click_count;
473 mouse_event->movementX = event.mouse_movement.x; 470 mouse_event->movementX = event.mouse_movement.x;
474 mouse_event->movementY = event.mouse_movement.y; 471 mouse_event->movementY = event.mouse_movement.y;
475 return mouse_event; 472 return mouse_event;
476 } 473 }
477 474
478 WebMouseWheelEvent* BuildMouseWheelEvent(const InputEventData& event) { 475 WebMouseWheelEvent* BuildMouseWheelEvent(const InputEventData& event) {
479 WebMouseWheelEvent* mouse_wheel_event = new WebMouseWheelEvent(); 476 WebMouseWheelEvent* mouse_wheel_event = new WebMouseWheelEvent(
480 mouse_wheel_event->type = WebInputEvent::MouseWheel; 477 WebInputEvent::MouseWheel, event.event_modifiers, event.event_time_stamp);
481 mouse_wheel_event->timeStampSeconds = event.event_time_stamp;
482 mouse_wheel_event->modifiers = event.event_modifiers;
483 mouse_wheel_event->deltaX = event.wheel_delta.x; 478 mouse_wheel_event->deltaX = event.wheel_delta.x;
484 mouse_wheel_event->deltaY = event.wheel_delta.y; 479 mouse_wheel_event->deltaY = event.wheel_delta.y;
485 mouse_wheel_event->wheelTicksX = event.wheel_ticks.x; 480 mouse_wheel_event->wheelTicksX = event.wheel_ticks.x;
486 mouse_wheel_event->wheelTicksY = event.wheel_ticks.y; 481 mouse_wheel_event->wheelTicksY = event.wheel_ticks.y;
487 mouse_wheel_event->scrollByPage = event.wheel_scroll_by_page; 482 mouse_wheel_event->scrollByPage = event.wheel_scroll_by_page;
488 return mouse_wheel_event; 483 return mouse_wheel_event;
489 } 484 }
490 485
491 #if !defined(OS_WIN) 486 #if !defined(OS_WIN)
492 #define VK_RETURN 0x0D 487 #define VK_RETURN 0x0D
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
704 699
705 WebUChar code = 0, text = 0; 700 WebUChar code = 0, text = 0;
706 bool needs_shift_modifier = false, generate_char = false; 701 bool needs_shift_modifier = false, generate_char = false;
707 GetKeyCode(event.character_text, 702 GetKeyCode(event.character_text,
708 &code, 703 &code,
709 &text, 704 &text,
710 &needs_shift_modifier, 705 &needs_shift_modifier,
711 &generate_char); 706 &generate_char);
712 707
713 // Synthesize key down and key up events in all cases. 708 // Synthesize key down and key up events in all cases.
714 std::unique_ptr<WebKeyboardEvent> key_down_event(new WebKeyboardEvent()); 709 std::unique_ptr<WebKeyboardEvent> key_down_event(new WebKeyboardEvent(
710 WebInputEvent::RawKeyDown,
711 needs_shift_modifier ? WebInputEvent::ShiftKey
712 : WebInputEvent::NoModifiers,
713 web_char_event->timeStampSeconds));
715 std::unique_ptr<WebKeyboardEvent> key_up_event(new WebKeyboardEvent()); 714 std::unique_ptr<WebKeyboardEvent> key_up_event(new WebKeyboardEvent());
716 715
717 key_down_event->type = WebInputEvent::RawKeyDown;
718 key_down_event->windowsKeyCode = code; 716 key_down_event->windowsKeyCode = code;
719 key_down_event->nativeKeyCode = code; 717 key_down_event->nativeKeyCode = code;
720 if (needs_shift_modifier)
721 key_down_event->modifiers |= WebInputEvent::ShiftKey;
722 718
723 // If a char event is needed, set the text fields. 719 // If a char event is needed, set the text fields.
724 if (generate_char) { 720 if (generate_char) {
725 key_down_event->text[0] = text; 721 key_down_event->text[0] = text;
726 key_down_event->unmodifiedText[0] = text; 722 key_down_event->unmodifiedText[0] = text;
727 } 723 }
728 724
729 *key_up_event = *web_char_event = *key_down_event; 725 *key_up_event = *web_char_event = *key_down_event;
730 726
731 events.push_back(std::move(key_down_event)); 727 events.push_back(std::move(key_down_event));
732 728
733 if (generate_char) { 729 if (generate_char) {
734 web_char_event->type = WebInputEvent::Char; 730 web_char_event->setType(WebInputEvent::Char);
735 events.push_back(std::move(original_event)); 731 events.push_back(std::move(original_event));
736 } 732 }
737 733
738 key_up_event->type = WebInputEvent::KeyUp; 734 key_up_event->setType(WebInputEvent::KeyUp);
739 events.push_back(std::move(key_up_event)); 735 events.push_back(std::move(key_up_event));
740 break; 736 break;
741 } 737 }
742 738
743 default: 739 default:
744 break; 740 break;
745 } 741 }
746 return events; 742 return events;
747 } 743 }
748 744
(...skipping 20 matching lines...) Expand all
769 return PP_INPUTEVENT_CLASS_TOUCH; 765 return PP_INPUTEVENT_CLASS_TOUCH;
770 case WebInputEvent::TouchScrollStarted: 766 case WebInputEvent::TouchScrollStarted:
771 return PP_InputEvent_Class(0); 767 return PP_InputEvent_Class(0);
772 default: 768 default:
773 CHECK(WebInputEvent::isGestureEventType(event.type)); 769 CHECK(WebInputEvent::isGestureEventType(event.type));
774 return PP_InputEvent_Class(0); 770 return PP_InputEvent_Class(0);
775 } 771 }
776 } 772 }
777 773
778 } // namespace content 774 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698