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/browser/renderer_host/render_widget_host_view_android.h" | 5 #include "content/browser/renderer_host/render_widget_host_view_android.h" |
6 | 6 |
7 #include <android/bitmap.h> | 7 #include <android/bitmap.h> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 1074 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1085 bool is_pinned_to_left, bool is_pinned_to_right) { | 1085 bool is_pinned_to_left, bool is_pinned_to_right) { |
1086 // intentionally empty, like RenderWidgetHostViewViews | 1086 // intentionally empty, like RenderWidgetHostViewViews |
1087 } | 1087 } |
1088 | 1088 |
1089 void RenderWidgetHostViewAndroid::UnhandledWheelEvent( | 1089 void RenderWidgetHostViewAndroid::UnhandledWheelEvent( |
1090 const blink::WebMouseWheelEvent& event) { | 1090 const blink::WebMouseWheelEvent& event) { |
1091 // intentionally empty, like RenderWidgetHostViewViews | 1091 // intentionally empty, like RenderWidgetHostViewViews |
1092 } | 1092 } |
1093 | 1093 |
1094 void RenderWidgetHostViewAndroid::GestureEventAck( | 1094 void RenderWidgetHostViewAndroid::GestureEventAck( |
1095 int gesture_event_type, | 1095 const blink::WebGestureEvent& event, |
1096 InputEventAckState ack_result) { | 1096 InputEventAckState ack_result) { |
1097 // Scroll events. | 1097 if (event.type == blink::WebInputEvent::GestureScrollBegin) { |
1098 if (gesture_event_type == blink::WebInputEvent::GestureScrollBegin) { | |
1099 content_view_core_->OnScrollBeginEventAck(); | 1098 content_view_core_->OnScrollBeginEventAck(); |
1100 } | 1099 } else if (event.type == blink::WebInputEvent::GestureScrollUpdate) { |
1101 if (gesture_event_type == blink::WebInputEvent::GestureScrollUpdate && | 1100 if (ack_result == INPUT_EVENT_ACK_STATE_CONSUMED) |
1102 ack_result == INPUT_EVENT_ACK_STATE_CONSUMED) { | 1101 content_view_core_->OnScrollUpdateGestureConsumed(); |
1103 content_view_core_->OnScrollUpdateGestureConsumed(); | 1102 } else if (event.type == blink::WebInputEvent::GestureScrollEnd) { |
1104 } | |
1105 if (gesture_event_type == blink::WebInputEvent::GestureScrollEnd) { | |
1106 content_view_core_->OnScrollEndEventAck(); | 1103 content_view_core_->OnScrollEndEventAck(); |
1107 } | 1104 } else if (event.type == blink::WebInputEvent::GestureFlingStart) { |
1108 | 1105 if (ack_result == INPUT_EVENT_ACK_STATE_NOT_CONSUMED || |
1109 // Fling events. | 1106 ack_result == INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS) { |
1110 if (gesture_event_type == blink::WebInputEvent::GestureFlingStart) { | 1107 const bool had_consumer = |
1111 content_view_core_->OnFlingStartEventAck(ack_result); | 1108 ack_result == INPUT_EVENT_ACK_STATE_NOT_CONSUMED; |
| 1109 content_view_core_->OnUnhandledFlingStartEventAck( |
| 1110 had_consumer, |
| 1111 event.data.flingStart.velocityX, |
| 1112 event.data.flingStart.velocityY); |
| 1113 } |
1112 } | 1114 } |
1113 } | 1115 } |
1114 | 1116 |
1115 InputEventAckState RenderWidgetHostViewAndroid::FilterInputEvent( | 1117 InputEventAckState RenderWidgetHostViewAndroid::FilterInputEvent( |
1116 const blink::WebInputEvent& input_event) { | 1118 const blink::WebInputEvent& input_event) { |
1117 if (!host_) | 1119 if (!host_) |
1118 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED; | 1120 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED; |
1119 | 1121 |
1120 if (input_event.type == blink::WebInputEvent::GestureTapDown || | 1122 if (input_event.type == blink::WebInputEvent::GestureTapDown || |
1121 input_event.type == blink::WebInputEvent::TouchStart) { | 1123 input_event.type == blink::WebInputEvent::TouchStart) { |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1225 if (host_) | 1227 if (host_) |
1226 host_->ForwardKeyboardEvent(event); | 1228 host_->ForwardKeyboardEvent(event); |
1227 } | 1229 } |
1228 | 1230 |
1229 void RenderWidgetHostViewAndroid::SendTouchEvent( | 1231 void RenderWidgetHostViewAndroid::SendTouchEvent( |
1230 const blink::WebTouchEvent& event) { | 1232 const blink::WebTouchEvent& event) { |
1231 if (host_) | 1233 if (host_) |
1232 host_->ForwardTouchEventWithLatencyInfo(event, CreateLatencyInfo(event)); | 1234 host_->ForwardTouchEventWithLatencyInfo(event, CreateLatencyInfo(event)); |
1233 } | 1235 } |
1234 | 1236 |
1235 | |
1236 void RenderWidgetHostViewAndroid::SendMouseEvent( | 1237 void RenderWidgetHostViewAndroid::SendMouseEvent( |
1237 const blink::WebMouseEvent& event) { | 1238 const blink::WebMouseEvent& event) { |
1238 if (host_) | 1239 if (host_) |
1239 host_->ForwardMouseEvent(event); | 1240 host_->ForwardMouseEvent(event); |
1240 } | 1241 } |
1241 | 1242 |
1242 void RenderWidgetHostViewAndroid::SendMouseWheelEvent( | 1243 void RenderWidgetHostViewAndroid::SendMouseWheelEvent( |
1243 const blink::WebMouseWheelEvent& event) { | 1244 const blink::WebMouseWheelEvent& event) { |
1244 if (host_) | 1245 if (host_) |
1245 host_->ForwardWheelEvent(event); | 1246 host_->ForwardWheelEvent(event); |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1351 obj = content_view_core_->GetJavaObject(); | 1352 obj = content_view_core_->GetJavaObject(); |
1352 GetBrowserAccessibilityManager()->ToBrowserAccessibilityManagerAndroid()-> | 1353 GetBrowserAccessibilityManager()->ToBrowserAccessibilityManagerAndroid()-> |
1353 SetContentViewCore(obj); | 1354 SetContentViewCore(obj); |
1354 } | 1355 } |
1355 | 1356 |
1356 if (are_layers_attached_) { | 1357 if (are_layers_attached_) { |
1357 AttachLayers(); | 1358 AttachLayers(); |
1358 if (content_view_core_ && !using_synchronous_compositor_) | 1359 if (content_view_core_ && !using_synchronous_compositor_) |
1359 content_view_core_->GetWindowAndroid()->AddObserver(this); | 1360 content_view_core_->GetWindowAndroid()->AddObserver(this); |
1360 } | 1361 } |
1361 | |
1362 // Ensure ContentsViewCore is aware of the current touch handling state, eg. | |
1363 // in case we've already been running JS for the page as part of preload. | |
1364 if (content_view_core_ && host_) | |
1365 content_view_core_->HasTouchEventHandlers(host_->has_touch_handler()); | |
1366 } | 1362 } |
1367 | 1363 |
1368 void RenderWidgetHostViewAndroid::RunAckCallbacks() { | 1364 void RenderWidgetHostViewAndroid::RunAckCallbacks() { |
1369 while (!ack_callbacks_.empty()) { | 1365 while (!ack_callbacks_.empty()) { |
1370 ack_callbacks_.front().Run(); | 1366 ack_callbacks_.front().Run(); |
1371 ack_callbacks_.pop(); | 1367 ack_callbacks_.pop(); |
1372 } | 1368 } |
1373 } | 1369 } |
1374 | 1370 |
1375 void RenderWidgetHostViewAndroid::HasTouchEventHandlers( | 1371 void RenderWidgetHostViewAndroid::HasTouchEventHandlers( |
1376 bool need_touch_events) { | 1372 bool need_touch_events) { |
1377 if (content_view_core_) | |
1378 content_view_core_->HasTouchEventHandlers(need_touch_events); | |
1379 } | 1373 } |
1380 | 1374 |
1381 void RenderWidgetHostViewAndroid::OnCompositingDidCommit() { | 1375 void RenderWidgetHostViewAndroid::OnCompositingDidCommit() { |
1382 RunAckCallbacks(); | 1376 RunAckCallbacks(); |
1383 } | 1377 } |
1384 | 1378 |
1385 void RenderWidgetHostViewAndroid::OnDetachCompositor() { | 1379 void RenderWidgetHostViewAndroid::OnDetachCompositor() { |
1386 DCHECK(content_view_core_); | 1380 DCHECK(content_view_core_); |
1387 DCHECK(!using_synchronous_compositor_); | 1381 DCHECK(!using_synchronous_compositor_); |
1388 RunAckCallbacks(); | 1382 RunAckCallbacks(); |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1504 // RenderWidgetHostView, public: | 1498 // RenderWidgetHostView, public: |
1505 | 1499 |
1506 // static | 1500 // static |
1507 RenderWidgetHostView* | 1501 RenderWidgetHostView* |
1508 RenderWidgetHostView::CreateViewForWidget(RenderWidgetHost* widget) { | 1502 RenderWidgetHostView::CreateViewForWidget(RenderWidgetHost* widget) { |
1509 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget); | 1503 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget); |
1510 return new RenderWidgetHostViewAndroid(rwhi, NULL); | 1504 return new RenderWidgetHostViewAndroid(rwhi, NULL); |
1511 } | 1505 } |
1512 | 1506 |
1513 } // namespace content | 1507 } // namespace content |
OLD | NEW |