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 #ifndef CONTENT_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_IMPL_H_ | 5 #ifndef CONTENT_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_IMPL_H_ |
6 #define CONTENT_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_IMPL_H_ | 6 #define CONTENT_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_IMPL_H_ |
7 | 7 |
8 #include <deque> | 8 #include <deque> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 28 matching lines...) Expand all Loading... |
39 | 39 |
40 namespace WebKit { | 40 namespace WebKit { |
41 class WebInputEvent; | 41 class WebInputEvent; |
42 class WebMouseEvent; | 42 class WebMouseEvent; |
43 struct WebCompositionUnderline; | 43 struct WebCompositionUnderline; |
44 struct WebScreenInfo; | 44 struct WebScreenInfo; |
45 } | 45 } |
46 | 46 |
47 namespace content { | 47 namespace content { |
48 class BackingStore; | 48 class BackingStore; |
| 49 class GestureEventFilter; |
49 class RenderWidgetHostDelegate; | 50 class RenderWidgetHostDelegate; |
50 class RenderWidgetHostViewPort; | 51 class RenderWidgetHostViewPort; |
51 class SmoothScrollGesture; | 52 class SmoothScrollGesture; |
52 class TapSuppressionController; | |
53 | 53 |
54 // This implements the RenderWidgetHost interface that is exposed to | 54 // This implements the RenderWidgetHost interface that is exposed to |
55 // embedders of content, and adds things only visible to content. | 55 // embedders of content, and adds things only visible to content. |
56 class CONTENT_EXPORT RenderWidgetHostImpl : virtual public RenderWidgetHost, | 56 class CONTENT_EXPORT RenderWidgetHostImpl : virtual public RenderWidgetHost, |
57 public IPC::Listener { | 57 public IPC::Listener { |
58 public: | 58 public: |
59 // routing_id can be MSG_ROUTING_NONE, in which case the next available | 59 // routing_id can be MSG_ROUTING_NONE, in which case the next available |
60 // routing id is taken from the RenderProcessHost. | 60 // routing id is taken from the RenderProcessHost. |
61 RenderWidgetHostImpl(RenderWidgetHostDelegate* delegate, | 61 RenderWidgetHostImpl(RenderWidgetHostDelegate* delegate, |
62 RenderProcessHost* process, | 62 RenderProcessHost* process, |
(...skipping 532 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
595 void ProcessTouchAck(WebKit::WebInputEvent::Type type, bool processed); | 595 void ProcessTouchAck(WebKit::WebInputEvent::Type type, bool processed); |
596 | 596 |
597 // Called when there is a new auto resize (using a post to avoid a stack | 597 // Called when there is a new auto resize (using a post to avoid a stack |
598 // which may get in recursive loops). | 598 // which may get in recursive loops). |
599 void DelayedAutoResized(); | 599 void DelayedAutoResized(); |
600 | 600 |
601 // Called periodically to advance the active scroll gesture after being | 601 // Called periodically to advance the active scroll gesture after being |
602 // initiated by OnMsgBeginSmoothScroll. | 602 // initiated by OnMsgBeginSmoothScroll. |
603 void TickActiveSmoothScrollGesture(); | 603 void TickActiveSmoothScrollGesture(); |
604 | 604 |
605 // Returns |true| if the given GestureFlingCancel should be discarded | |
606 // as unnecessary. | |
607 bool ShouldDiscardFlingCancelEvent( | |
608 const WebKit::WebGestureEvent& gesture_event); | |
609 | |
610 // Our delegate, which wants to know mainly about keyboard events. | 605 // Our delegate, which wants to know mainly about keyboard events. |
611 RenderWidgetHostDelegate* delegate_; | 606 RenderWidgetHostDelegate* delegate_; |
612 | 607 |
613 // Created during construction but initialized during Init*(). Therefore, it | 608 // Created during construction but initialized during Init*(). Therefore, it |
614 // is guaranteed never to be NULL, but its channel may be NULL if the | 609 // is guaranteed never to be NULL, but its channel may be NULL if the |
615 // renderer crashed, so you must always check that. | 610 // renderer crashed, so you must always check that. |
616 RenderProcessHost* process_; | 611 RenderProcessHost* process_; |
617 | 612 |
618 // The ID of the corresponding object in the Renderer Instance. | 613 // The ID of the corresponding object in the Renderer Instance. |
619 int routing_id_; | 614 int routing_id_; |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
679 | 674 |
680 // (Similar to |next_mouse_move_|.) The next mouse wheel events to send. | 675 // (Similar to |next_mouse_move_|.) The next mouse wheel events to send. |
681 // Unlike mouse moves, mouse wheel events received while one is pending are | 676 // Unlike mouse moves, mouse wheel events received while one is pending are |
682 // coalesced (by accumulating deltas) if they match the previous event in | 677 // coalesced (by accumulating deltas) if they match the previous event in |
683 // modifiers. On the Mac, in particular, mouse wheel events are received at a | 678 // modifiers. On the Mac, in particular, mouse wheel events are received at a |
684 // high rate; not waiting for the ack results in jankiness, and using the same | 679 // high rate; not waiting for the ack results in jankiness, and using the same |
685 // mechanism as for mouse moves (just dropping old events when multiple ones | 680 // mechanism as for mouse moves (just dropping old events when multiple ones |
686 // would be queued) results in very slow scrolling. | 681 // would be queued) results in very slow scrolling. |
687 WheelEventQueue coalesced_mouse_wheel_events_; | 682 WheelEventQueue coalesced_mouse_wheel_events_; |
688 | 683 |
689 // (Similar to |mouse_wheel_pending_|.). True if gesture event was sent and | |
690 // we are waiting for a corresponding ack. | |
691 bool gesture_event_pending_; | |
692 | |
693 typedef std::deque<WebKit::WebGestureEvent> GestureEventQueue; | |
694 | |
695 // (Similar to |coalesced_mouse_wheel_events_|.) GestureScrollUpdate events | |
696 // are coalesced by merging deltas in a similar fashion as wheel events. | |
697 GestureEventQueue coalesced_gesture_events_; | |
698 | |
699 // The time when an input event was sent to the RenderWidget. | 684 // The time when an input event was sent to the RenderWidget. |
700 base::TimeTicks input_event_start_time_; | 685 base::TimeTicks input_event_start_time_; |
701 | 686 |
702 // Keyboard event listeners. | 687 // Keyboard event listeners. |
703 std::list<KeyboardListener*> keyboard_listeners_; | 688 std::list<KeyboardListener*> keyboard_listeners_; |
704 | 689 |
705 // If true, then we should repaint when restoring even if we have a | 690 // If true, then we should repaint when restoring even if we have a |
706 // backingstore. This flag is set to true if we receive a paint message | 691 // backingstore. This flag is set to true if we receive a paint message |
707 // while is_hidden_ to true. Even though we tell the render widget to hide | 692 // while is_hidden_ to true. Even though we tell the render widget to hide |
708 // itself, a paint message could already be in flight at that point. | 693 // itself, a paint message could already be in flight at that point. |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
778 bool pending_mouse_lock_request_; | 763 bool pending_mouse_lock_request_; |
779 bool allow_privileged_mouse_lock_; | 764 bool allow_privileged_mouse_lock_; |
780 | 765 |
781 // Keeps track of whether the webpage has any touch event handler. If it does, | 766 // Keeps track of whether the webpage has any touch event handler. If it does, |
782 // then touch events are sent to the renderer. Otherwise, the touch events are | 767 // then touch events are sent to the renderer. Otherwise, the touch events are |
783 // not sent to the renderer. | 768 // not sent to the renderer. |
784 bool has_touch_handler_; | 769 bool has_touch_handler_; |
785 | 770 |
786 base::WeakPtrFactory<RenderWidgetHostImpl> weak_factory_; | 771 base::WeakPtrFactory<RenderWidgetHostImpl> weak_factory_; |
787 | 772 |
788 scoped_ptr<TapSuppressionController> tap_suppression_controller_; | 773 scoped_ptr<SmoothScrollGesture> active_smooth_scroll_gesture_; |
789 | 774 |
790 bool fling_in_progress_; | 775 scoped_ptr<GestureEventFilter> gesture_event_filter_; |
791 | |
792 scoped_ptr<SmoothScrollGesture> active_smooth_scroll_gesture_; | |
793 | 776 |
794 DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostImpl); | 777 DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostImpl); |
795 }; | 778 }; |
796 | 779 |
797 } // namespace content | 780 } // namespace content |
798 | 781 |
799 #endif // CONTENT_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_IMPL_H_ | 782 #endif // CONTENT_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_IMPL_H_ |
OLD | NEW |