| 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 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |