OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 // MSVC++ requires this to be set before any other includes to get M_PI. | 5 // MSVC++ requires this to be set before any other includes to get M_PI. |
6 #define _USE_MATH_DEFINES | 6 #define _USE_MATH_DEFINES |
7 | 7 |
8 #include "ui/events/blink/blink_event_util.h" | 8 #include "ui/events/blink/blink_event_util.h" |
9 | 9 |
10 #include <stddef.h> | 10 #include <stddef.h> |
(...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
524 return std::make_pair(scroll_event, pinch_event); | 524 return std::make_pair(scroll_event, pinch_event); |
525 } | 525 } |
526 | 526 |
527 blink::WebTouchEvent CreateWebTouchEventFromMotionEvent( | 527 blink::WebTouchEvent CreateWebTouchEventFromMotionEvent( |
528 const MotionEvent& event, | 528 const MotionEvent& event, |
529 bool moved_beyond_slop_region) { | 529 bool moved_beyond_slop_region) { |
530 static_assert(static_cast<int>(MotionEvent::MAX_TOUCH_POINT_COUNT) == | 530 static_assert(static_cast<int>(MotionEvent::MAX_TOUCH_POINT_COUNT) == |
531 static_cast<int>(blink::WebTouchEvent::kTouchesLengthCap), | 531 static_cast<int>(blink::WebTouchEvent::kTouchesLengthCap), |
532 "inconsistent maximum number of active touch points"); | 532 "inconsistent maximum number of active touch points"); |
533 | 533 |
534 blink::WebTouchEvent result; | 534 blink::WebTouchEvent result( |
535 | 535 ToWebTouchEventType(event.GetAction()), |
536 result.type = ToWebTouchEventType(event.GetAction()); | 536 EventFlagsToWebEventModifiers(event.GetFlags()), |
| 537 ui::EventTimeStampToSeconds(event.GetEventTime())); |
537 result.dispatchType = result.type == WebInputEvent::TouchCancel | 538 result.dispatchType = result.type == WebInputEvent::TouchCancel |
538 ? WebInputEvent::EventNonBlocking | 539 ? WebInputEvent::EventNonBlocking |
539 : WebInputEvent::Blocking; | 540 : WebInputEvent::Blocking; |
540 result.timeStampSeconds = ui::EventTimeStampToSeconds(event.GetEventTime()); | |
541 result.movedBeyondSlopRegion = moved_beyond_slop_region; | 541 result.movedBeyondSlopRegion = moved_beyond_slop_region; |
542 | 542 |
543 result.modifiers = EventFlagsToWebEventModifiers(event.GetFlags()); | |
544 // TODO(mustaq): MotionEvent flags seems unrelated, should use | 543 // TODO(mustaq): MotionEvent flags seems unrelated, should use |
545 // metaState instead? | 544 // metaState instead? |
546 | 545 |
547 DCHECK_NE(event.GetUniqueEventId(), 0U); | 546 DCHECK_NE(event.GetUniqueEventId(), 0U); |
548 result.uniqueTouchEventId = event.GetUniqueEventId(); | 547 result.uniqueTouchEventId = event.GetUniqueEventId(); |
549 result.touchesLength = | 548 result.touchesLength = |
550 std::min(static_cast<unsigned>(event.GetPointerCount()), | 549 std::min(static_cast<unsigned>(event.GetPointerCount()), |
551 static_cast<unsigned>(WebTouchEvent::kTouchesLengthCap)); | 550 static_cast<unsigned>(WebTouchEvent::kTouchesLengthCap)); |
552 DCHECK_GT(result.touchesLength, 0U); | 551 DCHECK_GT(result.touchesLength, 0U); |
553 | 552 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
589 | 588 |
590 return modifiers; | 589 return modifiers; |
591 } | 590 } |
592 | 591 |
593 WebGestureEvent CreateWebGestureEvent(const GestureEventDetails& details, | 592 WebGestureEvent CreateWebGestureEvent(const GestureEventDetails& details, |
594 base::TimeTicks timestamp, | 593 base::TimeTicks timestamp, |
595 const gfx::PointF& location, | 594 const gfx::PointF& location, |
596 const gfx::PointF& raw_location, | 595 const gfx::PointF& raw_location, |
597 int flags, | 596 int flags, |
598 uint32_t unique_touch_event_id) { | 597 uint32_t unique_touch_event_id) { |
599 WebGestureEvent gesture; | 598 WebGestureEvent gesture(WebInputEvent::Undefined, |
600 gesture.timeStampSeconds = ui::EventTimeStampToSeconds(timestamp); | 599 EventFlagsToWebEventModifiers(flags), |
| 600 ui::EventTimeStampToSeconds(timestamp)); |
601 gesture.x = gfx::ToFlooredInt(location.x()); | 601 gesture.x = gfx::ToFlooredInt(location.x()); |
602 gesture.y = gfx::ToFlooredInt(location.y()); | 602 gesture.y = gfx::ToFlooredInt(location.y()); |
603 gesture.globalX = gfx::ToFlooredInt(raw_location.x()); | 603 gesture.globalX = gfx::ToFlooredInt(raw_location.x()); |
604 gesture.globalY = gfx::ToFlooredInt(raw_location.y()); | 604 gesture.globalY = gfx::ToFlooredInt(raw_location.y()); |
605 gesture.modifiers = EventFlagsToWebEventModifiers(flags); | |
606 | 605 |
607 switch (details.device_type()) { | 606 switch (details.device_type()) { |
608 case GestureDeviceType::DEVICE_TOUCHSCREEN: | 607 case GestureDeviceType::DEVICE_TOUCHSCREEN: |
609 gesture.sourceDevice = blink::WebGestureDeviceTouchscreen; | 608 gesture.sourceDevice = blink::WebGestureDeviceTouchscreen; |
610 break; | 609 break; |
611 case GestureDeviceType::DEVICE_TOUCHPAD: | 610 case GestureDeviceType::DEVICE_TOUCHPAD: |
612 gesture.sourceDevice = blink::WebGestureDeviceTouchpad; | 611 gesture.sourceDevice = blink::WebGestureDeviceTouchpad; |
613 break; | 612 break; |
614 case GestureDeviceType::DEVICE_UNKNOWN: | 613 case GestureDeviceType::DEVICE_UNKNOWN: |
615 NOTREACHED() << "Unknown device type is not allowed"; | 614 NOTREACHED() << "Unknown device type is not allowed"; |
616 gesture.sourceDevice = blink::WebGestureDeviceUninitialized; | 615 gesture.sourceDevice = blink::WebGestureDeviceUninitialized; |
617 break; | 616 break; |
618 } | 617 } |
619 | 618 |
620 gesture.uniqueTouchEventId = unique_touch_event_id; | 619 gesture.uniqueTouchEventId = unique_touch_event_id; |
621 | 620 |
622 switch (details.type()) { | 621 switch (details.type()) { |
623 case ET_GESTURE_SHOW_PRESS: | 622 case ET_GESTURE_SHOW_PRESS: |
624 gesture.type = WebInputEvent::GestureShowPress; | 623 gesture.setType(WebInputEvent::GestureShowPress); |
625 gesture.data.showPress.width = details.bounding_box_f().width(); | 624 gesture.data.showPress.width = details.bounding_box_f().width(); |
626 gesture.data.showPress.height = details.bounding_box_f().height(); | 625 gesture.data.showPress.height = details.bounding_box_f().height(); |
627 break; | 626 break; |
628 case ET_GESTURE_DOUBLE_TAP: | 627 case ET_GESTURE_DOUBLE_TAP: |
629 gesture.type = WebInputEvent::GestureDoubleTap; | 628 gesture.setType(WebInputEvent::GestureDoubleTap); |
630 DCHECK_EQ(1, details.tap_count()); | 629 DCHECK_EQ(1, details.tap_count()); |
631 gesture.data.tap.tapCount = details.tap_count(); | 630 gesture.data.tap.tapCount = details.tap_count(); |
632 gesture.data.tap.width = details.bounding_box_f().width(); | 631 gesture.data.tap.width = details.bounding_box_f().width(); |
633 gesture.data.tap.height = details.bounding_box_f().height(); | 632 gesture.data.tap.height = details.bounding_box_f().height(); |
634 break; | 633 break; |
635 case ET_GESTURE_TAP: | 634 case ET_GESTURE_TAP: |
636 gesture.type = WebInputEvent::GestureTap; | 635 gesture.setType(WebInputEvent::GestureTap); |
637 DCHECK_GE(details.tap_count(), 1); | 636 DCHECK_GE(details.tap_count(), 1); |
638 gesture.data.tap.tapCount = details.tap_count(); | 637 gesture.data.tap.tapCount = details.tap_count(); |
639 gesture.data.tap.width = details.bounding_box_f().width(); | 638 gesture.data.tap.width = details.bounding_box_f().width(); |
640 gesture.data.tap.height = details.bounding_box_f().height(); | 639 gesture.data.tap.height = details.bounding_box_f().height(); |
641 break; | 640 break; |
642 case ET_GESTURE_TAP_UNCONFIRMED: | 641 case ET_GESTURE_TAP_UNCONFIRMED: |
643 gesture.type = WebInputEvent::GestureTapUnconfirmed; | 642 gesture.setType(WebInputEvent::GestureTapUnconfirmed); |
644 DCHECK_EQ(1, details.tap_count()); | 643 DCHECK_EQ(1, details.tap_count()); |
645 gesture.data.tap.tapCount = details.tap_count(); | 644 gesture.data.tap.tapCount = details.tap_count(); |
646 gesture.data.tap.width = details.bounding_box_f().width(); | 645 gesture.data.tap.width = details.bounding_box_f().width(); |
647 gesture.data.tap.height = details.bounding_box_f().height(); | 646 gesture.data.tap.height = details.bounding_box_f().height(); |
648 break; | 647 break; |
649 case ET_GESTURE_LONG_PRESS: | 648 case ET_GESTURE_LONG_PRESS: |
650 gesture.type = WebInputEvent::GestureLongPress; | 649 gesture.setType(WebInputEvent::GestureLongPress); |
651 gesture.data.longPress.width = details.bounding_box_f().width(); | 650 gesture.data.longPress.width = details.bounding_box_f().width(); |
652 gesture.data.longPress.height = details.bounding_box_f().height(); | 651 gesture.data.longPress.height = details.bounding_box_f().height(); |
653 break; | 652 break; |
654 case ET_GESTURE_LONG_TAP: | 653 case ET_GESTURE_LONG_TAP: |
655 gesture.type = WebInputEvent::GestureLongTap; | 654 gesture.setType(WebInputEvent::GestureLongTap); |
656 gesture.data.longPress.width = details.bounding_box_f().width(); | 655 gesture.data.longPress.width = details.bounding_box_f().width(); |
657 gesture.data.longPress.height = details.bounding_box_f().height(); | 656 gesture.data.longPress.height = details.bounding_box_f().height(); |
658 break; | 657 break; |
659 case ET_GESTURE_TWO_FINGER_TAP: | 658 case ET_GESTURE_TWO_FINGER_TAP: |
660 gesture.type = blink::WebInputEvent::GestureTwoFingerTap; | 659 gesture.setType(blink::WebInputEvent::GestureTwoFingerTap); |
661 gesture.data.twoFingerTap.firstFingerWidth = details.first_finger_width(); | 660 gesture.data.twoFingerTap.firstFingerWidth = details.first_finger_width(); |
662 gesture.data.twoFingerTap.firstFingerHeight = | 661 gesture.data.twoFingerTap.firstFingerHeight = |
663 details.first_finger_height(); | 662 details.first_finger_height(); |
664 break; | 663 break; |
665 case ET_GESTURE_SCROLL_BEGIN: | 664 case ET_GESTURE_SCROLL_BEGIN: |
666 gesture.type = WebInputEvent::GestureScrollBegin; | 665 gesture.setType(WebInputEvent::GestureScrollBegin); |
667 gesture.data.scrollBegin.pointerCount = details.touch_points(); | 666 gesture.data.scrollBegin.pointerCount = details.touch_points(); |
668 gesture.data.scrollBegin.deltaXHint = details.scroll_x_hint(); | 667 gesture.data.scrollBegin.deltaXHint = details.scroll_x_hint(); |
669 gesture.data.scrollBegin.deltaYHint = details.scroll_y_hint(); | 668 gesture.data.scrollBegin.deltaYHint = details.scroll_y_hint(); |
670 break; | 669 break; |
671 case ET_GESTURE_SCROLL_UPDATE: | 670 case ET_GESTURE_SCROLL_UPDATE: |
672 gesture.type = WebInputEvent::GestureScrollUpdate; | 671 gesture.setType(WebInputEvent::GestureScrollUpdate); |
673 gesture.data.scrollUpdate.deltaX = details.scroll_x(); | 672 gesture.data.scrollUpdate.deltaX = details.scroll_x(); |
674 gesture.data.scrollUpdate.deltaY = details.scroll_y(); | 673 gesture.data.scrollUpdate.deltaY = details.scroll_y(); |
675 gesture.data.scrollUpdate.previousUpdateInSequencePrevented = | 674 gesture.data.scrollUpdate.previousUpdateInSequencePrevented = |
676 details.previous_scroll_update_in_sequence_prevented(); | 675 details.previous_scroll_update_in_sequence_prevented(); |
677 break; | 676 break; |
678 case ET_GESTURE_SCROLL_END: | 677 case ET_GESTURE_SCROLL_END: |
679 gesture.type = WebInputEvent::GestureScrollEnd; | 678 gesture.setType(WebInputEvent::GestureScrollEnd); |
680 break; | 679 break; |
681 case ET_SCROLL_FLING_START: | 680 case ET_SCROLL_FLING_START: |
682 gesture.type = WebInputEvent::GestureFlingStart; | 681 gesture.setType(WebInputEvent::GestureFlingStart); |
683 gesture.data.flingStart.velocityX = details.velocity_x(); | 682 gesture.data.flingStart.velocityX = details.velocity_x(); |
684 gesture.data.flingStart.velocityY = details.velocity_y(); | 683 gesture.data.flingStart.velocityY = details.velocity_y(); |
685 break; | 684 break; |
686 case ET_SCROLL_FLING_CANCEL: | 685 case ET_SCROLL_FLING_CANCEL: |
687 gesture.type = WebInputEvent::GestureFlingCancel; | 686 gesture.setType(WebInputEvent::GestureFlingCancel); |
688 break; | 687 break; |
689 case ET_GESTURE_PINCH_BEGIN: | 688 case ET_GESTURE_PINCH_BEGIN: |
690 gesture.type = WebInputEvent::GesturePinchBegin; | 689 gesture.setType(WebInputEvent::GesturePinchBegin); |
691 break; | 690 break; |
692 case ET_GESTURE_PINCH_UPDATE: | 691 case ET_GESTURE_PINCH_UPDATE: |
693 gesture.type = WebInputEvent::GesturePinchUpdate; | 692 gesture.setType(WebInputEvent::GesturePinchUpdate); |
694 gesture.data.pinchUpdate.scale = details.scale(); | 693 gesture.data.pinchUpdate.scale = details.scale(); |
695 break; | 694 break; |
696 case ET_GESTURE_PINCH_END: | 695 case ET_GESTURE_PINCH_END: |
697 gesture.type = WebInputEvent::GesturePinchEnd; | 696 gesture.setType(WebInputEvent::GesturePinchEnd); |
698 break; | 697 break; |
699 case ET_GESTURE_TAP_CANCEL: | 698 case ET_GESTURE_TAP_CANCEL: |
700 gesture.type = WebInputEvent::GestureTapCancel; | 699 gesture.setType(WebInputEvent::GestureTapCancel); |
701 break; | 700 break; |
702 case ET_GESTURE_TAP_DOWN: | 701 case ET_GESTURE_TAP_DOWN: |
703 gesture.type = WebInputEvent::GestureTapDown; | 702 gesture.setType(WebInputEvent::GestureTapDown); |
704 gesture.data.tapDown.width = details.bounding_box_f().width(); | 703 gesture.data.tapDown.width = details.bounding_box_f().width(); |
705 gesture.data.tapDown.height = details.bounding_box_f().height(); | 704 gesture.data.tapDown.height = details.bounding_box_f().height(); |
706 break; | 705 break; |
707 case ET_GESTURE_BEGIN: | 706 case ET_GESTURE_BEGIN: |
708 case ET_GESTURE_END: | 707 case ET_GESTURE_END: |
709 case ET_GESTURE_SWIPE: | 708 case ET_GESTURE_SWIPE: |
710 // The caller is responsible for discarding these gestures appropriately. | 709 // The caller is responsible for discarding these gestures appropriately. |
711 gesture.type = WebInputEvent::Undefined; | 710 gesture.setType(WebInputEvent::Undefined); |
712 break; | 711 break; |
713 default: | 712 default: |
714 NOTREACHED() << "EventType provided wasn't a valid gesture event: " | 713 NOTREACHED() << "EventType provided wasn't a valid gesture event: " |
715 << details.type(); | 714 << details.type(); |
716 } | 715 } |
717 | 716 |
718 return gesture; | 717 return gesture; |
719 } | 718 } |
720 | 719 |
721 WebGestureEvent CreateWebGestureEventFromGestureEventData( | 720 WebGestureEvent CreateWebGestureEventFromGestureEventData( |
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
961 switch (type) { | 960 switch (type) { |
962 case blink::WebGestureEvent::GestureScrollUpdate: | 961 case blink::WebGestureEvent::GestureScrollUpdate: |
963 case blink::WebGestureEvent::GesturePinchUpdate: | 962 case blink::WebGestureEvent::GesturePinchUpdate: |
964 return true; | 963 return true; |
965 default: | 964 default: |
966 return false; | 965 return false; |
967 } | 966 } |
968 } | 967 } |
969 | 968 |
970 } // namespace ui | 969 } // namespace ui |
OLD | NEW |