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

Side by Side Diff: content/browser/android/content_view_core_impl.cc

Issue 182383007: Make the ContentGestureProvider a ui::FilteredGestureProvider (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Lower similarity Created 6 years, 9 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 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 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 #include "content/public/browser/web_contents.h" 49 #include "content/public/browser/web_contents.h"
50 #include "content/public/common/content_client.h" 50 #include "content/public/common/content_client.h"
51 #include "content/public/common/content_switches.h" 51 #include "content/public/common/content_switches.h"
52 #include "content/public/common/menu_item.h" 52 #include "content/public/common/menu_item.h"
53 #include "content/public/common/page_transition_types.h" 53 #include "content/public/common/page_transition_types.h"
54 #include "jni/ContentViewCore_jni.h" 54 #include "jni/ContentViewCore_jni.h"
55 #include "third_party/WebKit/public/web/WebBindings.h" 55 #include "third_party/WebKit/public/web/WebBindings.h"
56 #include "third_party/WebKit/public/web/WebInputEvent.h" 56 #include "third_party/WebKit/public/web/WebInputEvent.h"
57 #include "ui/base/android/view_android.h" 57 #include "ui/base/android/view_android.h"
58 #include "ui/base/android/window_android.h" 58 #include "ui/base/android/window_android.h"
59 #include "ui/events/gesture_detection/gesture_config_helper.h"
59 #include "ui/gfx/android/java_bitmap.h" 60 #include "ui/gfx/android/java_bitmap.h"
60 #include "ui/gfx/screen.h" 61 #include "ui/gfx/screen.h"
61 #include "ui/gfx/size_conversions.h" 62 #include "ui/gfx/size_conversions.h"
62 #include "ui/gfx/size_f.h" 63 #include "ui/gfx/size_f.h"
63 #include "webkit/common/user_agent/user_agent_util.h" 64 #include "webkit/common/user_agent/user_agent_util.h"
64 65
65 using base::android::AttachCurrentThread; 66 using base::android::AttachCurrentThread;
66 using base::android::ConvertJavaStringToUTF16; 67 using base::android::ConvertJavaStringToUTF16;
67 using base::android::ConvertJavaStringToUTF8; 68 using base::android::ConvertJavaStringToUTF8;
68 using base::android::ConvertUTF16ToJavaString; 69 using base::android::ConvertUTF16ToJavaString;
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 return -1; 157 return -1;
157 }; 158 };
158 } 159 }
159 160
160 float GetPrimaryDisplayDeviceScaleFactor() { 161 float GetPrimaryDisplayDeviceScaleFactor() {
161 const gfx::Display& display = 162 const gfx::Display& display =
162 gfx::Screen::GetNativeScreen()->GetPrimaryDisplay(); 163 gfx::Screen::GetNativeScreen()->GetPrimaryDisplay();
163 return display.device_scale_factor(); 164 return display.device_scale_factor();
164 } 165 }
165 166
167 ui::GestureProvider::Config GetGestureProviderConfig() {
168 ui::GestureProvider::Config config = ui::DefaultGestureProviderConfig();
169 config.disable_click_delay =
170 CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableClickDelay);
171 return config;
172 }
173
166 } // namespace 174 } // namespace
167 175
168 // Enables a callback when the underlying WebContents is destroyed, to enable 176 // Enables a callback when the underlying WebContents is destroyed, to enable
169 // nulling the back-pointer. 177 // nulling the back-pointer.
170 class ContentViewCoreImpl::ContentViewUserData 178 class ContentViewCoreImpl::ContentViewUserData
171 : public base::SupportsUserData::Data { 179 : public base::SupportsUserData::Data {
172 public: 180 public:
173 explicit ContentViewUserData(ContentViewCoreImpl* content_view_core) 181 explicit ContentViewUserData(ContentViewCoreImpl* content_view_core)
174 : content_view_core_(content_view_core) { 182 : content_view_core_(content_view_core) {
175 } 183 }
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 java_ref_(env, obj), 230 java_ref_(env, obj),
223 web_contents_(static_cast<WebContentsImpl*>(web_contents)), 231 web_contents_(static_cast<WebContentsImpl*>(web_contents)),
224 root_layer_(cc::Layer::Create()), 232 root_layer_(cc::Layer::Create()),
225 dpi_scale_(GetPrimaryDisplayDeviceScaleFactor()), 233 dpi_scale_(GetPrimaryDisplayDeviceScaleFactor()),
226 vsync_interval_(base::TimeDelta::FromMicroseconds( 234 vsync_interval_(base::TimeDelta::FromMicroseconds(
227 kDefaultVSyncIntervalMicros)), 235 kDefaultVSyncIntervalMicros)),
228 expected_browser_composite_time_(base::TimeDelta::FromMicroseconds( 236 expected_browser_composite_time_(base::TimeDelta::FromMicroseconds(
229 kDefaultVSyncIntervalMicros * kDefaultBrowserCompositeVSyncFraction)), 237 kDefaultVSyncIntervalMicros * kDefaultBrowserCompositeVSyncFraction)),
230 view_android_(view_android), 238 view_android_(view_android),
231 window_android_(window_android), 239 window_android_(window_android),
232 gesture_provider_(this, 1.f / dpi_scale_), 240 gesture_provider_(GetGestureProviderConfig(), this),
233 device_orientation_(0), 241 device_orientation_(0),
234 geolocation_needs_pause_(false) { 242 geolocation_needs_pause_(false) {
235 CHECK(web_contents) << 243 CHECK(web_contents) <<
236 "A ContentViewCoreImpl should be created with a valid WebContents."; 244 "A ContentViewCoreImpl should be created with a valid WebContents.";
237 245
238 // Currently, the only use case we have for overriding a user agent involves 246 // Currently, the only use case we have for overriding a user agent involves
239 // spoofing a desktop Linux user agent for "Request desktop site". 247 // spoofing a desktop Linux user agent for "Request desktop site".
240 // Automatically set it for all WebContents so that it is available when a 248 // Automatically set it for all WebContents so that it is available when a
241 // NavigationEntry requires the user agent to be overridden. 249 // NavigationEntry requires the user agent to be overridden.
242 const char kLinuxInfoStr[] = "X11; Linux x86_64"; 250 const char kLinuxInfoStr[] = "X11; Linux x86_64";
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 break; 360 break;
353 } 361 }
354 } 362 }
355 } 363 }
356 364
357 void ContentViewCoreImpl::RenderViewReady() { 365 void ContentViewCoreImpl::RenderViewReady() {
358 if (device_orientation_ != 0) 366 if (device_orientation_ != 0)
359 SendOrientationChangeEventInternal(); 367 SendOrientationChangeEventInternal();
360 } 368 }
361 369
362 void ContentViewCoreImpl::OnGestureEvent(const blink::WebGestureEvent& event) { 370 void ContentViewCoreImpl::OnGestureEvent(const ui::GestureEventData& gesture) {
363 SendGestureEvent(event); 371 SendGestureEvent(
372 CreateWebGestureEventFromGestureEventData(gesture, 1.f / dpi_scale()));
364 } 373 }
365 374
366 RenderWidgetHostViewAndroid* 375 RenderWidgetHostViewAndroid*
367 ContentViewCoreImpl::GetRenderWidgetHostViewAndroid() { 376 ContentViewCoreImpl::GetRenderWidgetHostViewAndroid() {
368 RenderWidgetHostView* rwhv = NULL; 377 RenderWidgetHostView* rwhv = NULL;
369 if (web_contents_) { 378 if (web_contents_) {
370 rwhv = web_contents_->GetRenderWidgetHostView(); 379 rwhv = web_contents_->GetRenderWidgetHostView();
371 if (web_contents_->ShowingInterstitialPage()) { 380 if (web_contents_->ShowingInterstitialPage()) {
372 rwhv = static_cast<InterstitialPageImpl*>( 381 rwhv = static_cast<InterstitialPageImpl*>(
373 web_contents_->GetInterstitialPage())-> 382 web_contents_->GetInterstitialPage())->
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 env->SetIntArrayRegion(enabled_array.obj(), i, 1, &enabled); 556 env->SetIntArrayRegion(enabled_array.obj(), i, 1, &enabled);
548 } 557 }
549 ScopedJavaLocalRef<jobjectArray> items_array( 558 ScopedJavaLocalRef<jobjectArray> items_array(
550 base::android::ToJavaArrayOfStrings(env, labels)); 559 base::android::ToJavaArrayOfStrings(env, labels));
551 Java_ContentViewCore_showSelectPopup(env, j_obj.obj(), 560 Java_ContentViewCore_showSelectPopup(env, j_obj.obj(),
552 items_array.obj(), enabled_array.obj(), 561 items_array.obj(), enabled_array.obj(),
553 multiple, selected_array.obj()); 562 multiple, selected_array.obj());
554 } 563 }
555 564
556 void ContentViewCoreImpl::ConfirmTouchEvent(InputEventAckState ack_result) { 565 void ContentViewCoreImpl::ConfirmTouchEvent(InputEventAckState ack_result) {
557 gesture_provider_.OnTouchEventAck(ack_result); 566 const bool event_consumed = ack_result == INPUT_EVENT_ACK_STATE_CONSUMED;
567 gesture_provider_.OnTouchEventAck(event_consumed);
558 } 568 }
559 569
560 void ContentViewCoreImpl::OnGestureEventAck(const blink::WebGestureEvent& event, 570 void ContentViewCoreImpl::OnGestureEventAck(const blink::WebGestureEvent& event,
561 InputEventAckState ack_result) { 571 InputEventAckState ack_result) {
562 JNIEnv* env = AttachCurrentThread(); 572 JNIEnv* env = AttachCurrentThread();
563 ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env); 573 ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env);
564 if (j_obj.is_null()) 574 if (j_obj.is_null())
565 return; 575 return;
566 576
567 switch (event.type) { 577 switch (event.type) {
568 case WebInputEvent::GestureFlingStart: 578 case WebInputEvent::GestureFlingStart:
569 if (ack_result == INPUT_EVENT_ACK_STATE_CONSUMED) { 579 if (ack_result == INPUT_EVENT_ACK_STATE_CONSUMED) {
570 // The view expects the fling velocity in pixels/s. 580 // The view expects the fling velocity in pixels/s.
571 Java_ContentViewCore_onFlingStartEventConsumed(env, j_obj.obj(), 581 Java_ContentViewCore_onFlingStartEventConsumed(env, j_obj.obj(),
572 event.data.flingStart.velocityX * GetDpiScale(), 582 event.data.flingStart.velocityX * dpi_scale(),
573 event.data.flingStart.velocityY * GetDpiScale()); 583 event.data.flingStart.velocityY * dpi_scale());
574 } else { 584 } else {
575 // If a scroll ends with a fling, a SCROLL_END event is never sent. 585 // If a scroll ends with a fling, a SCROLL_END event is never sent.
576 // However, if that fling went unconsumed, we still need to let the 586 // However, if that fling went unconsumed, we still need to let the
577 // listeners know that scrolling has ended. 587 // listeners know that scrolling has ended.
578 Java_ContentViewCore_onScrollEndEventAck(env, j_obj.obj()); 588 Java_ContentViewCore_onScrollEndEventAck(env, j_obj.obj());
579 } 589 }
580 590
581 if (ack_result == INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS) { 591 if (ack_result == INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS) {
582 // The view expects the fling velocity in pixels/s. 592 // The view expects the fling velocity in pixels/s.
583 Java_ContentViewCore_onFlingStartEventHadNoConsumer(env, j_obj.obj(), 593 Java_ContentViewCore_onFlingStartEventHadNoConsumer(env, j_obj.obj(),
584 event.data.flingStart.velocityX * GetDpiScale(), 594 event.data.flingStart.velocityX * dpi_scale(),
585 event.data.flingStart.velocityY * GetDpiScale()); 595 event.data.flingStart.velocityY * dpi_scale());
586 } 596 }
587 break; 597 break;
588 case WebInputEvent::GestureFlingCancel: 598 case WebInputEvent::GestureFlingCancel:
589 Java_ContentViewCore_onFlingCancelEventAck(env, j_obj.obj()); 599 Java_ContentViewCore_onFlingCancelEventAck(env, j_obj.obj());
590 break; 600 break;
591 case WebInputEvent::GestureScrollBegin: 601 case WebInputEvent::GestureScrollBegin:
592 Java_ContentViewCore_onScrollBeginEventAck(env, j_obj.obj()); 602 Java_ContentViewCore_onScrollBeginEventAck(env, j_obj.obj());
593 break; 603 break;
594 case WebInputEvent::GestureScrollUpdate: 604 case WebInputEvent::GestureScrollUpdate:
595 if (ack_result == INPUT_EVENT_ACK_STATE_CONSUMED) 605 if (ack_result == INPUT_EVENT_ACK_STATE_CONSUMED)
(...skipping 27 matching lines...) Expand all
623 ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env); 633 ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env);
624 if (j_obj.is_null()) 634 if (j_obj.is_null())
625 return false; 635 return false;
626 636
627 const blink::WebGestureEvent& gesture = 637 const blink::WebGestureEvent& gesture =
628 static_cast<const blink::WebGestureEvent&>(event); 638 static_cast<const blink::WebGestureEvent&>(event);
629 int gesture_type = ToGestureEventType(event.type); 639 int gesture_type = ToGestureEventType(event.type);
630 return Java_ContentViewCore_filterTapOrPressEvent(env, 640 return Java_ContentViewCore_filterTapOrPressEvent(env,
631 j_obj.obj(), 641 j_obj.obj(),
632 gesture_type, 642 gesture_type,
633 gesture.x * GetDpiScale(), 643 gesture.x * dpi_scale(),
634 gesture.y * GetDpiScale()); 644 gesture.y * dpi_scale());
635 645
636 // TODO(jdduke): Also report double-tap UMA, crbug/347568. 646 // TODO(jdduke): Also report double-tap UMA, crbug/347568.
637 } 647 }
638 648
639 bool ContentViewCoreImpl::HasFocus() { 649 bool ContentViewCoreImpl::HasFocus() {
640 JNIEnv* env = AttachCurrentThread(); 650 JNIEnv* env = AttachCurrentThread();
641 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); 651 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
642 if (obj.is_null()) 652 if (obj.is_null())
643 return false; 653 return false;
644 return Java_ContentViewCore_hasFocus(env, obj.obj()); 654 return Java_ContentViewCore_hasFocus(env, obj.obj());
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
802 ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env); 812 ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env);
803 if (j_obj.is_null()) 813 if (j_obj.is_null())
804 return gfx::Size(); 814 return gfx::Size();
805 return gfx::Size( 815 return gfx::Size(
806 Java_ContentViewCore_getViewportSizeOffsetWidthPix(env, j_obj.obj()), 816 Java_ContentViewCore_getViewportSizeOffsetWidthPix(env, j_obj.obj()),
807 Java_ContentViewCore_getViewportSizeOffsetHeightPix(env, j_obj.obj())); 817 Java_ContentViewCore_getViewportSizeOffsetHeightPix(env, j_obj.obj()));
808 } 818 }
809 819
810 gfx::Size ContentViewCoreImpl::GetViewportSizeDip() const { 820 gfx::Size ContentViewCoreImpl::GetViewportSizeDip() const {
811 return gfx::ToCeiledSize( 821 return gfx::ToCeiledSize(
812 gfx::ScaleSize(GetViewportSizePix(), 1.0f / GetDpiScale())); 822 gfx::ScaleSize(GetViewportSizePix(), 1.0f / dpi_scale()));
813 } 823 }
814 824
815 gfx::Size ContentViewCoreImpl::GetViewportSizeOffsetDip() const { 825 gfx::Size ContentViewCoreImpl::GetViewportSizeOffsetDip() const {
816 return gfx::ToCeiledSize( 826 return gfx::ToCeiledSize(
817 gfx::ScaleSize(GetViewportSizeOffsetPix(), 1.0f / GetDpiScale())); 827 gfx::ScaleSize(GetViewportSizeOffsetPix(), 1.0f / dpi_scale()));
818 } 828 }
819 829
820 float ContentViewCoreImpl::GetOverdrawBottomHeightDip() const { 830 float ContentViewCoreImpl::GetOverdrawBottomHeightDip() const {
821 JNIEnv* env = AttachCurrentThread(); 831 JNIEnv* env = AttachCurrentThread();
822 ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env); 832 ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env);
823 if (j_obj.is_null()) 833 if (j_obj.is_null())
824 return 0.f; 834 return 0.f;
825 return Java_ContentViewCore_getOverdrawBottomHeightPix(env, j_obj.obj()) 835 return Java_ContentViewCore_getOverdrawBottomHeightPix(env, j_obj.obj())
826 / GetDpiScale(); 836 / dpi_scale();
827 } 837 }
828 838
829 void ContentViewCoreImpl::AttachLayer(scoped_refptr<cc::Layer> layer) { 839 void ContentViewCoreImpl::AttachLayer(scoped_refptr<cc::Layer> layer) {
830 root_layer_->AddChild(layer); 840 root_layer_->AddChild(layer);
831 } 841 }
832 842
833 void ContentViewCoreImpl::RemoveLayer(scoped_refptr<cc::Layer> layer) { 843 void ContentViewCoreImpl::RemoveLayer(scoped_refptr<cc::Layer> layer) {
834 layer->RemoveFromParent(); 844 layer->RemoveFromParent();
835 } 845 }
836 846
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
1005 gesture_provider_.GetCurrentDownEvent(); 1015 gesture_provider_.GetCurrentDownEvent();
1006 if (!current_down_event) 1016 if (!current_down_event)
1007 return; 1017 return;
1008 1018
1009 scoped_ptr<ui::MotionEvent> cancel_event = current_down_event->Cancel(); 1019 scoped_ptr<ui::MotionEvent> cancel_event = current_down_event->Cancel();
1010 DCHECK(cancel_event); 1020 DCHECK(cancel_event);
1011 if (!gesture_provider_.OnTouchEvent(*cancel_event)) 1021 if (!gesture_provider_.OnTouchEvent(*cancel_event))
1012 return; 1022 return;
1013 1023
1014 rwhv->SendTouchEvent( 1024 rwhv->SendTouchEvent(
1015 CreateWebTouchEventFromMotionEvent(*cancel_event, 1.f / GetDpiScale())); 1025 CreateWebTouchEventFromMotionEvent(*cancel_event, 1.f / dpi_scale()));
1016 } 1026 }
1017 1027
1018 jboolean ContentViewCoreImpl::OnTouchEvent(JNIEnv* env, 1028 jboolean ContentViewCoreImpl::OnTouchEvent(JNIEnv* env,
1019 jobject obj, 1029 jobject obj,
1020 jobject motion_event) { 1030 jobject motion_event) {
1021 RenderWidgetHostViewAndroid* rwhv = GetRenderWidgetHostViewAndroid(); 1031 RenderWidgetHostViewAndroid* rwhv = GetRenderWidgetHostViewAndroid();
1022 if (!rwhv) 1032 if (!rwhv)
1023 return false; 1033 return false;
1024 1034
1025 MotionEventAndroid event(env, motion_event, false); 1035 MotionEventAndroid event(env, motion_event, false);
1026 1036
1027 if (!gesture_provider_.OnTouchEvent(event)) 1037 if (!gesture_provider_.OnTouchEvent(event))
1028 return false; 1038 return false;
1029 1039
1030 rwhv->SendTouchEvent(WebTouchEventBuilder::Build(event, 1.f / GetDpiScale())); 1040 rwhv->SendTouchEvent(WebTouchEventBuilder::Build(event, 1.f / dpi_scale()));
1031 return true; 1041 return true;
1032 } 1042 }
1033 1043
1034 float ContentViewCoreImpl::GetDpiScale() const { 1044 float ContentViewCoreImpl::GetDpiScale() const {
1035 return dpi_scale_; 1045 return dpi_scale_;
1036 } 1046 }
1037 1047
1038 jboolean ContentViewCoreImpl::SendMouseMoveEvent(JNIEnv* env, 1048 jboolean ContentViewCoreImpl::SendMouseMoveEvent(JNIEnv* env,
1039 jobject obj, 1049 jobject obj,
1040 jlong time_ms, 1050 jlong time_ms,
1041 jfloat x, 1051 jfloat x,
1042 jfloat y) { 1052 jfloat y) {
1043 RenderWidgetHostViewAndroid* rwhv = GetRenderWidgetHostViewAndroid(); 1053 RenderWidgetHostViewAndroid* rwhv = GetRenderWidgetHostViewAndroid();
1044 if (!rwhv) 1054 if (!rwhv)
1045 return false; 1055 return false;
1046 1056
1047 blink::WebMouseEvent event = WebMouseEventBuilder::Build( 1057 blink::WebMouseEvent event = WebMouseEventBuilder::Build(
1048 WebInputEvent::MouseMove, 1058 WebInputEvent::MouseMove,
1049 blink::WebMouseEvent::ButtonNone, 1059 blink::WebMouseEvent::ButtonNone,
1050 time_ms / 1000.0, x / GetDpiScale(), y / GetDpiScale(), 0, 1); 1060 time_ms / 1000.0, x / dpi_scale(), y / dpi_scale(), 0, 1);
1051 1061
1052 rwhv->SendMouseEvent(event); 1062 rwhv->SendMouseEvent(event);
1053 return true; 1063 return true;
1054 } 1064 }
1055 1065
1056 jboolean ContentViewCoreImpl::SendMouseWheelEvent(JNIEnv* env, 1066 jboolean ContentViewCoreImpl::SendMouseWheelEvent(JNIEnv* env,
1057 jobject obj, 1067 jobject obj,
1058 jlong time_ms, 1068 jlong time_ms,
1059 jfloat x, 1069 jfloat x,
1060 jfloat y, 1070 jfloat y,
1061 jfloat vertical_axis) { 1071 jfloat vertical_axis) {
1062 RenderWidgetHostViewAndroid* rwhv = GetRenderWidgetHostViewAndroid(); 1072 RenderWidgetHostViewAndroid* rwhv = GetRenderWidgetHostViewAndroid();
1063 if (!rwhv) 1073 if (!rwhv)
1064 return false; 1074 return false;
1065 1075
1066 WebMouseWheelEventBuilder::Direction direction; 1076 WebMouseWheelEventBuilder::Direction direction;
1067 if (vertical_axis > 0) { 1077 if (vertical_axis > 0) {
1068 direction = WebMouseWheelEventBuilder::DIRECTION_UP; 1078 direction = WebMouseWheelEventBuilder::DIRECTION_UP;
1069 } else if (vertical_axis < 0) { 1079 } else if (vertical_axis < 0) {
1070 direction = WebMouseWheelEventBuilder::DIRECTION_DOWN; 1080 direction = WebMouseWheelEventBuilder::DIRECTION_DOWN;
1071 } else { 1081 } else {
1072 return false; 1082 return false;
1073 } 1083 }
1074 blink::WebMouseWheelEvent event = WebMouseWheelEventBuilder::Build( 1084 blink::WebMouseWheelEvent event = WebMouseWheelEventBuilder::Build(
1075 direction, time_ms / 1000.0, x / GetDpiScale(), y / GetDpiScale()); 1085 direction, time_ms / 1000.0, x / dpi_scale(), y / dpi_scale());
1076 1086
1077 rwhv->SendMouseWheelEvent(event); 1087 rwhv->SendMouseWheelEvent(event);
1078 return true; 1088 return true;
1079 } 1089 }
1080 1090
1081 WebGestureEvent ContentViewCoreImpl::MakeGestureEvent( 1091 WebGestureEvent ContentViewCoreImpl::MakeGestureEvent(
1082 WebInputEvent::Type type, int64 time_ms, float x, float y) const { 1092 WebInputEvent::Type type, int64 time_ms, float x, float y) const {
1083 return WebGestureEventBuilder::Build( 1093 return WebGestureEventBuilder::Build(
1084 type, time_ms / 1000.0, x / GetDpiScale(), y / GetDpiScale()); 1094 type, time_ms / 1000.0, x / dpi_scale(), y / dpi_scale());
1085 } 1095 }
1086 1096
1087 void ContentViewCoreImpl::SendGestureEvent( 1097 void ContentViewCoreImpl::SendGestureEvent(
1088 const blink::WebGestureEvent& event) { 1098 const blink::WebGestureEvent& event) {
1089 RenderWidgetHostViewAndroid* rwhv = GetRenderWidgetHostViewAndroid(); 1099 RenderWidgetHostViewAndroid* rwhv = GetRenderWidgetHostViewAndroid();
1090 if (rwhv) 1100 if (rwhv)
1091 rwhv->SendGestureEvent(event); 1101 rwhv->SendGestureEvent(event);
1092 } 1102 }
1093 1103
1094 void ContentViewCoreImpl::ScrollBegin(JNIEnv* env, 1104 void ContentViewCoreImpl::ScrollBegin(JNIEnv* env,
1095 jobject obj, 1105 jobject obj,
1096 jlong time_ms, 1106 jlong time_ms,
1097 jfloat x, 1107 jfloat x,
1098 jfloat y, 1108 jfloat y,
1099 jfloat hintx, 1109 jfloat hintx,
1100 jfloat hinty) { 1110 jfloat hinty) {
1101 WebGestureEvent event = MakeGestureEvent( 1111 WebGestureEvent event = MakeGestureEvent(
1102 WebInputEvent::GestureScrollBegin, time_ms, x, y); 1112 WebInputEvent::GestureScrollBegin, time_ms, x, y);
1103 event.data.scrollBegin.deltaXHint = hintx / GetDpiScale(); 1113 event.data.scrollBegin.deltaXHint = hintx / dpi_scale();
1104 event.data.scrollBegin.deltaYHint = hinty / GetDpiScale(); 1114 event.data.scrollBegin.deltaYHint = hinty / dpi_scale();
1105 1115
1106 SendGestureEvent(event); 1116 SendGestureEvent(event);
1107 } 1117 }
1108 1118
1109 void ContentViewCoreImpl::ScrollEnd(JNIEnv* env, jobject obj, jlong time_ms) { 1119 void ContentViewCoreImpl::ScrollEnd(JNIEnv* env, jobject obj, jlong time_ms) {
1110 WebGestureEvent event = MakeGestureEvent( 1120 WebGestureEvent event = MakeGestureEvent(
1111 WebInputEvent::GestureScrollEnd, time_ms, 0, 0); 1121 WebInputEvent::GestureScrollEnd, time_ms, 0, 0);
1112 SendGestureEvent(event); 1122 SendGestureEvent(event);
1113 } 1123 }
1114 1124
1115 void ContentViewCoreImpl::ScrollBy(JNIEnv* env, jobject obj, jlong time_ms, 1125 void ContentViewCoreImpl::ScrollBy(JNIEnv* env, jobject obj, jlong time_ms,
1116 jfloat x, jfloat y, jfloat dx, jfloat dy) { 1126 jfloat x, jfloat y, jfloat dx, jfloat dy) {
1117 WebGestureEvent event = MakeGestureEvent( 1127 WebGestureEvent event = MakeGestureEvent(
1118 WebInputEvent::GestureScrollUpdate, time_ms, x, y); 1128 WebInputEvent::GestureScrollUpdate, time_ms, x, y);
1119 event.data.scrollUpdate.deltaX = -dx / GetDpiScale(); 1129 event.data.scrollUpdate.deltaX = -dx / dpi_scale();
1120 event.data.scrollUpdate.deltaY = -dy / GetDpiScale(); 1130 event.data.scrollUpdate.deltaY = -dy / dpi_scale();
1121 1131
1122 SendGestureEvent(event); 1132 SendGestureEvent(event);
1123 } 1133 }
1124 1134
1125 void ContentViewCoreImpl::FlingStart(JNIEnv* env, jobject obj, jlong time_ms, 1135 void ContentViewCoreImpl::FlingStart(JNIEnv* env, jobject obj, jlong time_ms,
1126 jfloat x, jfloat y, jfloat vx, jfloat vy) { 1136 jfloat x, jfloat y, jfloat vx, jfloat vy) {
1127 WebGestureEvent event = MakeGestureEvent( 1137 WebGestureEvent event = MakeGestureEvent(
1128 WebInputEvent::GestureFlingStart, time_ms, x, y); 1138 WebInputEvent::GestureFlingStart, time_ms, x, y);
1129 event.data.flingStart.velocityX = vx / GetDpiScale(); 1139 event.data.flingStart.velocityX = vx / dpi_scale();
1130 event.data.flingStart.velocityY = vy / GetDpiScale(); 1140 event.data.flingStart.velocityY = vy / dpi_scale();
1131 1141
1132 SendGestureEvent(event); 1142 SendGestureEvent(event);
1133 } 1143 }
1134 1144
1135 void ContentViewCoreImpl::FlingCancel(JNIEnv* env, jobject obj, jlong time_ms) { 1145 void ContentViewCoreImpl::FlingCancel(JNIEnv* env, jobject obj, jlong time_ms) {
1136 WebGestureEvent event = MakeGestureEvent( 1146 WebGestureEvent event = MakeGestureEvent(
1137 WebInputEvent::GestureFlingCancel, time_ms, 0, 0); 1147 WebInputEvent::GestureFlingCancel, time_ms, 0, 0);
1138 SendGestureEvent(event); 1148 SendGestureEvent(event);
1139 } 1149 }
1140 1150
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1183 event.data.pinchUpdate.scale = delta; 1193 event.data.pinchUpdate.scale = delta;
1184 1194
1185 SendGestureEvent(event); 1195 SendGestureEvent(event);
1186 } 1196 }
1187 1197
1188 void ContentViewCoreImpl::SelectBetweenCoordinates(JNIEnv* env, jobject obj, 1198 void ContentViewCoreImpl::SelectBetweenCoordinates(JNIEnv* env, jobject obj,
1189 jfloat x1, jfloat y1, 1199 jfloat x1, jfloat y1,
1190 jfloat x2, jfloat y2) { 1200 jfloat x2, jfloat y2) {
1191 if (GetRenderWidgetHostViewAndroid()) { 1201 if (GetRenderWidgetHostViewAndroid()) {
1192 GetRenderWidgetHostViewAndroid()->SelectRange( 1202 GetRenderWidgetHostViewAndroid()->SelectRange(
1193 gfx::Point(x1 / GetDpiScale(), y1 / GetDpiScale()), 1203 gfx::Point(x1 / dpi_scale(), y1 / dpi_scale()),
1194 gfx::Point(x2 / GetDpiScale(), y2 / GetDpiScale())); 1204 gfx::Point(x2 / dpi_scale(), y2 / dpi_scale()));
1195 } 1205 }
1196 } 1206 }
1197 1207
1198 void ContentViewCoreImpl::MoveCaret(JNIEnv* env, jobject obj, 1208 void ContentViewCoreImpl::MoveCaret(JNIEnv* env, jobject obj,
1199 jfloat x, jfloat y) { 1209 jfloat x, jfloat y) {
1200 if (GetRenderWidgetHostViewAndroid()) { 1210 if (GetRenderWidgetHostViewAndroid()) {
1201 GetRenderWidgetHostViewAndroid()->MoveCaret( 1211 GetRenderWidgetHostViewAndroid()->MoveCaret(
1202 gfx::Point(x / GetDpiScale(), y / GetDpiScale())); 1212 gfx::Point(x / dpi_scale(), y / dpi_scale()));
1203 } 1213 }
1204 } 1214 }
1205 1215
1206 void ContentViewCoreImpl::ResetGestureDetectors(JNIEnv* env, jobject obj) { 1216 void ContentViewCoreImpl::ResetGestureDetectors(JNIEnv* env, jobject obj) {
1207 gesture_provider_.ResetGestureDetectors(); 1217 gesture_provider_.ResetGestureDetectors();
1208 } 1218 }
1209 1219
1210 void ContentViewCoreImpl::IgnoreRemainingTouchEvents(JNIEnv* env, jobject obj) { 1220 void ContentViewCoreImpl::IgnoreRemainingTouchEvents(JNIEnv* env, jobject obj) {
1211 CancelActiveTouchSequenceIfNecessary(); 1221 CancelActiveTouchSequenceIfNecessary();
1212 } 1222 }
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after
1686 sodh->OnOrientationChange(orientation); 1696 sodh->OnOrientationChange(orientation);
1687 } 1697 }
1688 1698
1689 void ContentViewCoreImpl::ExtractSmartClipData(JNIEnv* env, 1699 void ContentViewCoreImpl::ExtractSmartClipData(JNIEnv* env,
1690 jobject obj, 1700 jobject obj,
1691 jint x, 1701 jint x,
1692 jint y, 1702 jint y,
1693 jint width, 1703 jint width,
1694 jint height) { 1704 jint height) {
1695 gfx::Rect rect( 1705 gfx::Rect rect(
1696 static_cast<int>(x / GetDpiScale()), 1706 static_cast<int>(x / dpi_scale()),
1697 static_cast<int>(y / GetDpiScale()), 1707 static_cast<int>(y / dpi_scale()),
1698 static_cast<int>((width > 0 && width < GetDpiScale()) ? 1708 static_cast<int>((width > 0 && width < dpi_scale()) ?
1699 1 : (int)(width / GetDpiScale())), 1709 1 : (int)(width / dpi_scale())),
1700 static_cast<int>((height > 0 && height < GetDpiScale()) ? 1710 static_cast<int>((height > 0 && height < dpi_scale()) ?
1701 1 : (int)(height / GetDpiScale()))); 1711 1 : (int)(height / dpi_scale())));
1702 GetWebContents()->Send(new ViewMsg_ExtractSmartClipData( 1712 GetWebContents()->Send(new ViewMsg_ExtractSmartClipData(
1703 GetWebContents()->GetRoutingID(), rect)); 1713 GetWebContents()->GetRoutingID(), rect));
1704 } 1714 }
1705 1715
1706 void ContentViewCoreImpl::OnSmartClipDataExtracted( 1716 void ContentViewCoreImpl::OnSmartClipDataExtracted(
1707 const base::string16& result) { 1717 const base::string16& result) {
1708 JNIEnv* env = AttachCurrentThread(); 1718 JNIEnv* env = AttachCurrentThread();
1709 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); 1719 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
1710 if (obj.is_null()) 1720 if (obj.is_null())
1711 return; 1721 return;
(...skipping 21 matching lines...) Expand all
1733 reinterpret_cast<ui::ViewAndroid*>(view_android), 1743 reinterpret_cast<ui::ViewAndroid*>(view_android),
1734 reinterpret_cast<ui::WindowAndroid*>(window_android)); 1744 reinterpret_cast<ui::WindowAndroid*>(window_android));
1735 return reinterpret_cast<intptr_t>(view); 1745 return reinterpret_cast<intptr_t>(view);
1736 } 1746 }
1737 1747
1738 bool RegisterContentViewCore(JNIEnv* env) { 1748 bool RegisterContentViewCore(JNIEnv* env) {
1739 return RegisterNativesImpl(env); 1749 return RegisterNativesImpl(env);
1740 } 1750 }
1741 1751
1742 } // namespace content 1752 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/android/content_view_core_impl.h ('k') | content/browser/renderer_host/input/content_gesture_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698