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

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

Powered by Google App Engine
This is Rietveld 408576698