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/render_widget.h" | 5 #include "content/renderer/render_widget.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/debug/trace_event.h" | 9 #include "base/debug/trace_event.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
90 using blink::WebPagePopup; | 90 using blink::WebPagePopup; |
91 using blink::WebPopupMenu; | 91 using blink::WebPopupMenu; |
92 using blink::WebPopupMenuInfo; | 92 using blink::WebPopupMenuInfo; |
93 using blink::WebPopupType; | 93 using blink::WebPopupType; |
94 using blink::WebRange; | 94 using blink::WebRange; |
95 using blink::WebRect; | 95 using blink::WebRect; |
96 using blink::WebScreenInfo; | 96 using blink::WebScreenInfo; |
97 using blink::WebSize; | 97 using blink::WebSize; |
98 using blink::WebTextDirection; | 98 using blink::WebTextDirection; |
99 using blink::WebTouchEvent; | 99 using blink::WebTouchEvent; |
| 100 using blink::WebTouchPoint; |
100 using blink::WebVector; | 101 using blink::WebVector; |
101 using blink::WebWidget; | 102 using blink::WebWidget; |
102 | 103 |
103 namespace { | 104 namespace { |
104 | 105 |
105 typedef std::map<std::string, ui::TextInputMode> TextInputModeMap; | 106 typedef std::map<std::string, ui::TextInputMode> TextInputModeMap; |
106 | 107 |
107 class TextInputModeMapSingleton { | 108 class TextInputModeMapSingleton { |
108 public: | 109 public: |
109 static TextInputModeMapSingleton* GetInstance() { | 110 static TextInputModeMapSingleton* GetInstance() { |
(...skipping 998 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1108 // it's not processed by webkit, then we need to suppress the upcoming Char | 1109 // it's not processed by webkit, then we need to suppress the upcoming Char |
1109 // events. | 1110 // events. |
1110 if (!processed && is_keyboard_shortcut) | 1111 if (!processed && is_keyboard_shortcut) |
1111 suppress_next_char_events_ = true; | 1112 suppress_next_char_events_ = true; |
1112 | 1113 |
1113 InputEventAckState ack_result = processed ? | 1114 InputEventAckState ack_result = processed ? |
1114 INPUT_EVENT_ACK_STATE_CONSUMED : INPUT_EVENT_ACK_STATE_NOT_CONSUMED; | 1115 INPUT_EVENT_ACK_STATE_CONSUMED : INPUT_EVENT_ACK_STATE_NOT_CONSUMED; |
1115 if (!processed && input_event->type == WebInputEvent::TouchStart) { | 1116 if (!processed && input_event->type == WebInputEvent::TouchStart) { |
1116 const WebTouchEvent& touch_event = | 1117 const WebTouchEvent& touch_event = |
1117 *static_cast<const WebTouchEvent*>(input_event); | 1118 *static_cast<const WebTouchEvent*>(input_event); |
1118 ack_result = HasTouchEventHandlersAt(touch_event.touches[0].position) ? | 1119 // Hit-test for all the pressed touch points. If there is a touch-handler |
1119 INPUT_EVENT_ACK_STATE_NOT_CONSUMED : | 1120 // for any of the touch points, then the renderer should continue to receive |
1120 INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS; | 1121 // touch events. |
| 1122 ack_result = INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS; |
| 1123 for (unsigned i = 0; i < touch_event.touchesLength; ++i) { |
| 1124 if (touch_event.touches[i].state == WebTouchPoint::StatePressed && |
| 1125 HasTouchEventHandlersAt(touch_event.touches[i].position)) { |
| 1126 ack_result = INPUT_EVENT_ACK_STATE_NOT_CONSUMED; |
| 1127 break; |
| 1128 } |
| 1129 } |
1121 } | 1130 } |
1122 | 1131 |
1123 IPC::Message* response = | 1132 IPC::Message* response = |
1124 new InputHostMsg_HandleInputEvent_ACK(routing_id_, | 1133 new InputHostMsg_HandleInputEvent_ACK(routing_id_, |
1125 input_event->type, | 1134 input_event->type, |
1126 ack_result, | 1135 ack_result, |
1127 latency_info); | 1136 latency_info); |
1128 bool event_type_can_be_rate_limited = | 1137 bool event_type_can_be_rate_limited = |
1129 input_event->type == WebInputEvent::MouseMove || | 1138 input_event->type == WebInputEvent::MouseMove || |
1130 input_event->type == WebInputEvent::MouseWheel || | 1139 input_event->type == WebInputEvent::MouseWheel || |
(...skipping 1683 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2814 GetURLForGraphicsContext3D(), | 2823 GetURLForGraphicsContext3D(), |
2815 gpu_channel_host.get(), | 2824 gpu_channel_host.get(), |
2816 use_echo_for_swap_ack, | 2825 use_echo_for_swap_ack, |
2817 attributes, | 2826 attributes, |
2818 false /* bind generates resources */, | 2827 false /* bind generates resources */, |
2819 limits)); | 2828 limits)); |
2820 return context.Pass(); | 2829 return context.Pass(); |
2821 } | 2830 } |
2822 | 2831 |
2823 } // namespace content | 2832 } // namespace content |
OLD | NEW |