Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "base/bind_helpers.h" | 5 #include "base/bind_helpers.h" |
| 6 #include "base/command_line.h" | 6 #include "base/command_line.h" |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
| 9 #include "cc/surfaces/surface.h" | 9 #include "cc/surfaces/surface.h" |
| 10 #include "cc/surfaces/surface_factory.h" | 10 #include "cc/surfaces/surface_factory.h" |
| (...skipping 611 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 622 ForwardGestureEventToRenderer(*g_it); | 622 ForwardGestureEventToRenderer(*g_it); |
| 623 } | 623 } |
| 624 } | 624 } |
| 625 | 625 |
| 626 RenderWidgetHostViewBase* | 626 RenderWidgetHostViewBase* |
| 627 RenderWidgetHostViewGuest::GetOwnerRenderWidgetHostView() const { | 627 RenderWidgetHostViewGuest::GetOwnerRenderWidgetHostView() const { |
| 628 return static_cast<RenderWidgetHostViewBase*>( | 628 return static_cast<RenderWidgetHostViewBase*>( |
| 629 guest_->GetOwnerRenderWidgetHostView()); | 629 guest_->GetOwnerRenderWidgetHostView()); |
| 630 } | 630 } |
| 631 | 631 |
| 632 void RenderWidgetHostViewGuest::WheelEventAck( | |
| 633 const blink::WebMouseWheelEvent& event, | |
| 634 InputEventAckState ack_result) { | |
| 635 if (ack_result == INPUT_EVENT_ACK_STATE_NOT_CONSUMED) | |
| 636 guest_->ResendEventToEmbedder(event); | |
| 637 } | |
| 638 | |
| 639 void RenderWidgetHostViewGuest::GestureEventAck( | |
| 640 const blink::WebGestureEvent& event, | |
| 641 InputEventAckState ack_result) { | |
| 642 bool not_consumed = INPUT_EVENT_ACK_STATE_NOT_CONSUMED == ack_result; | |
| 643 // GestureScrollBegin/End are always consumed by the guest, so we only | |
| 644 // forward GestureScrollUpdate. | |
| 645 if (event.type == blink::WebInputEvent::GestureScrollUpdate && not_consumed) | |
| 646 guest_->ResendEventToEmbedder(event); | |
| 647 } | |
| 648 | |
| 632 void RenderWidgetHostViewGuest::OnHandleInputEvent( | 649 void RenderWidgetHostViewGuest::OnHandleInputEvent( |
| 633 RenderWidgetHostImpl* embedder, | 650 RenderWidgetHostImpl* embedder, |
| 634 int browser_plugin_instance_id, | 651 int browser_plugin_instance_id, |
| 635 const gfx::Rect& guest_window_rect, | 652 const gfx::Rect& guest_window_rect, |
| 636 const blink::WebInputEvent* event) { | 653 const blink::WebInputEvent* event) { |
| 637 if (blink::WebInputEvent::isMouseEventType(event->type)) { | 654 if (blink::WebInputEvent::isMouseEventType(event->type)) { |
| 638 // The mouse events for BrowserPlugin are modified by all | 655 // The mouse events for BrowserPlugin are modified by all |
| 639 // the CSS transforms applied on the <object> and embedder. As a result of | 656 // the CSS transforms applied on the <object> and embedder. As a result of |
| 640 // this, the coordinates passed on to the guest renderer are potentially | 657 // this, the coordinates passed on to the guest renderer are potentially |
| 641 // incorrect to determine the position of the context menu(they are not the | 658 // incorrect to determine the position of the context menu(they are not the |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 676 embedder->GetView()->Focus(); | 693 embedder->GetView()->Focus(); |
| 677 } | 694 } |
| 678 | 695 |
| 679 host_->ForwardTouchEventWithLatencyInfo( | 696 host_->ForwardTouchEventWithLatencyInfo( |
| 680 *static_cast<const blink::WebTouchEvent*>(event), | 697 *static_cast<const blink::WebTouchEvent*>(event), |
| 681 ui::LatencyInfo()); | 698 ui::LatencyInfo()); |
| 682 return; | 699 return; |
| 683 } | 700 } |
| 684 | 701 |
| 685 if (blink::WebInputEvent::isGestureEventType(event->type)) { | 702 if (blink::WebInputEvent::isGestureEventType(event->type)) { |
| 686 host_->ForwardGestureEvent( | 703 const blink::WebGestureEvent& gesture_event = |
| 687 *static_cast<const blink::WebGestureEvent*>(event)); | 704 *static_cast<const blink::WebGestureEvent*>(event); |
| 705 | |
| 706 // We don't forward innertial GestureScrollUpdates to the guest anymore | |
|
Charlie Reis
2015/09/18 04:30:36
nit: inertial
wjmaclean
2015/09/18 15:30:57
Done.
| |
| 707 // since it now receives GestureFlingStart and will have its own fling | |
| 708 // curve generating GestureScrollUpdate events for it. | |
| 709 // TODO(wjmaclean): Should we try to avoid creating a fling curve in the | |
| 710 // embedder renderer in this case? BrowserPlugin can return 'true' for | |
| 711 // handleInputEvent() on a GestureFlingStart, and we could use this as | |
| 712 // a signal to let the guest handle the fling, though we'd need to be | |
| 713 // sure other plugins would behave appropriately (i.e. return 'false'). | |
| 714 if (gesture_event.type == blink::WebInputEvent::GestureScrollUpdate && | |
| 715 gesture_event.data.scrollUpdate.inertial) { | |
| 716 return; | |
| 717 } | |
| 718 host_->ForwardGestureEvent(gesture_event); | |
| 688 return; | 719 return; |
| 689 } | 720 } |
| 690 } | 721 } |
| 691 | 722 |
| 692 } // namespace content | 723 } // namespace content |
| OLD | NEW |