| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |