OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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/android/content_view_core_impl.h" | 5 #include "content/browser/android/content_view_core_impl.h" |
6 | 6 |
7 #include "base/android/jni_android.h" | 7 #include "base/android/jni_android.h" |
8 #include "base/android/jni_array.h" | 8 #include "base/android/jni_array.h" |
9 #include "base/android/jni_string.h" | 9 #include "base/android/jni_string.h" |
10 #include "base/android/scoped_java_ref.h" | 10 #include "base/android/scoped_java_ref.h" |
(...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
545 j_obj.obj(), | 545 j_obj.obj(), |
546 ack_result == INPUT_EVENT_ACK_STATE_CONSUMED, | 546 ack_result == INPUT_EVENT_ACK_STATE_CONSUMED, |
547 event.x * dpi_scale(), | 547 event.x * dpi_scale(), |
548 event.y * dpi_scale()); | 548 event.y * dpi_scale()); |
549 break; | 549 break; |
550 default: | 550 default: |
551 break; | 551 break; |
552 } | 552 } |
553 } | 553 } |
554 | 554 |
555 bool ContentViewCoreImpl::FilterInputEvent(const blink::WebInputEvent& event) { | 555 InputEventAckState ContentViewCoreImpl::FilterInputEvent( |
| 556 const blink::WebInputEvent& event) { |
556 if (event.type != WebInputEvent::GestureTap && | 557 if (event.type != WebInputEvent::GestureTap && |
557 event.type != WebInputEvent::GestureDoubleTap && | 558 event.type != WebInputEvent::GestureDoubleTap && |
558 event.type != WebInputEvent::GestureLongTap && | 559 event.type != WebInputEvent::GestureLongTap && |
559 event.type != WebInputEvent::GestureLongPress && | 560 event.type != WebInputEvent::GestureLongPress && |
560 event.type != WebInputEvent::GestureFlingCancel) | 561 event.type != WebInputEvent::GestureFlingCancel) { |
561 return false; | 562 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED; |
| 563 } |
562 | 564 |
563 JNIEnv* env = AttachCurrentThread(); | 565 JNIEnv* env = AttachCurrentThread(); |
564 ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env); | 566 ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env); |
565 if (j_obj.is_null()) | 567 if (j_obj.is_null()) |
566 return false; | 568 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED; |
567 | 569 |
568 if (event.type == WebInputEvent::GestureFlingCancel) { | 570 if (event.type == WebInputEvent::GestureFlingCancel) { |
569 // If no fling is active, either in the compositor or externally-driven, | 571 // If no fling is active, either in the compositor or externally-driven, |
570 // there's no need to explicitly cancel the fling. | 572 // there's no need to explicitly cancel the fling. |
571 bool may_need_fling_cancel = | 573 bool may_need_fling_cancel = |
572 Java_ContentViewCore_isScrollInProgress(env, j_obj.obj()); | 574 Java_ContentViewCore_isScrollInProgress(env, j_obj.obj()); |
573 return !may_need_fling_cancel; | 575 return may_need_fling_cancel ? INPUT_EVENT_ACK_STATE_NOT_CONSUMED |
| 576 : INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS; |
574 } | 577 } |
575 | 578 |
576 const blink::WebGestureEvent& gesture = | 579 const blink::WebGestureEvent& gesture = |
577 static_cast<const blink::WebGestureEvent&>(event); | 580 static_cast<const blink::WebGestureEvent&>(event); |
578 int gesture_type = ToGestureEventType(event.type); | 581 int gesture_type = ToGestureEventType(event.type); |
579 return Java_ContentViewCore_filterTapOrPressEvent(env, | 582 if (Java_ContentViewCore_filterTapOrPressEvent(env, |
580 j_obj.obj(), | 583 j_obj.obj(), |
581 gesture_type, | 584 gesture_type, |
582 gesture.x * dpi_scale(), | 585 gesture.x * dpi_scale(), |
583 gesture.y * dpi_scale()); | 586 gesture.y * dpi_scale())) { |
| 587 return INPUT_EVENT_ACK_STATE_CONSUMED; |
| 588 } |
584 | 589 |
| 590 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED; |
585 // TODO(jdduke): Also report double-tap UMA, crbug/347568. | 591 // TODO(jdduke): Also report double-tap UMA, crbug/347568. |
586 } | 592 } |
587 | 593 |
588 bool ContentViewCoreImpl::HasFocus() { | 594 bool ContentViewCoreImpl::HasFocus() { |
589 JNIEnv* env = AttachCurrentThread(); | 595 JNIEnv* env = AttachCurrentThread(); |
590 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); | 596 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); |
591 if (obj.is_null()) | 597 if (obj.is_null()) |
592 return false; | 598 return false; |
593 return Java_ContentViewCore_hasFocus(env, obj.obj()); | 599 return Java_ContentViewCore_hasFocus(env, obj.obj()); |
594 } | 600 } |
(...skipping 830 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1425 return NULL; | 1431 return NULL; |
1426 | 1432 |
1427 return view->GetJavaObject().Release(); | 1433 return view->GetJavaObject().Release(); |
1428 } | 1434 } |
1429 | 1435 |
1430 bool RegisterContentViewCore(JNIEnv* env) { | 1436 bool RegisterContentViewCore(JNIEnv* env) { |
1431 return RegisterNativesImpl(env); | 1437 return RegisterNativesImpl(env); |
1432 } | 1438 } |
1433 | 1439 |
1434 } // namespace content | 1440 } // namespace content |
OLD | NEW |