Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(399)

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_android.cc

Issue 120513005: [Android] Perform eager gesture recognition on MotionEvents (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Code review and test cleanup Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698