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

Unified 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, 10 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/android/content_view_core_impl.cc
diff --git a/content/browser/android/content_view_core_impl.cc b/content/browser/android/content_view_core_impl.cc
index b2a5b045a93231bd460af02043af871e7adece1c..315f8767bfd67cd991c39a0c9c7e9bc952a7a71b 100644
--- a/content/browser/android/content_view_core_impl.cc
+++ b/content/browser/android/content_view_core_impl.cc
@@ -56,6 +56,7 @@
#include "third_party/WebKit/public/web/WebInputEvent.h"
#include "ui/base/android/view_android.h"
#include "ui/base/android/window_android.h"
+#include "ui/events/gesture_detection/gesture_config_helper.h"
#include "ui/gfx/android/java_bitmap.h"
#include "ui/gfx/screen.h"
#include "ui/gfx/size_conversions.h"
@@ -163,6 +164,13 @@ float GetPrimaryDisplayDeviceScaleFactor() {
return display.device_scale_factor();
}
+ui::GestureProvider::Config GetGestureProviderConfig() {
+ ui::GestureProvider::Config config = ui::DefaultGestureProviderConfig();
+ config.disable_click_delay =
+ CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableClickDelay);
+ return config;
+}
+
} // namespace
// Enables a callback when the underlying WebContents is destroyed, to enable
@@ -229,7 +237,7 @@ ContentViewCoreImpl::ContentViewCoreImpl(JNIEnv* env,
kDefaultVSyncIntervalMicros * kDefaultBrowserCompositeVSyncFraction)),
view_android_(view_android),
window_android_(window_android),
- gesture_provider_(this, 1.f / dpi_scale_),
+ gesture_provider_(GetGestureProviderConfig(), this),
device_orientation_(0),
geolocation_needs_pause_(false) {
CHECK(web_contents) <<
@@ -359,8 +367,9 @@ void ContentViewCoreImpl::RenderViewReady() {
SendOrientationChangeEventInternal();
}
-void ContentViewCoreImpl::OnGestureEvent(const blink::WebGestureEvent& event) {
- SendGestureEvent(event);
+void ContentViewCoreImpl::OnGestureEvent(const ui::GestureEventData& gesture) {
+ SendGestureEvent(
+ CreateWebGestureEventFromGestureEventData(gesture, 1.f / dpi_scale()));
}
RenderWidgetHostViewAndroid*
@@ -554,7 +563,8 @@ void ContentViewCoreImpl::ShowSelectPopupMenu(
}
void ContentViewCoreImpl::ConfirmTouchEvent(InputEventAckState ack_result) {
- gesture_provider_.OnTouchEventAck(ack_result);
+ const bool event_consumed = ack_result == INPUT_EVENT_ACK_STATE_CONSUMED;
+ gesture_provider_.OnTouchEventAck(event_consumed);
}
void ContentViewCoreImpl::OnGestureEventAck(const blink::WebGestureEvent& event,
@@ -569,8 +579,8 @@ void ContentViewCoreImpl::OnGestureEventAck(const blink::WebGestureEvent& event,
if (ack_result == INPUT_EVENT_ACK_STATE_CONSUMED) {
// The view expects the fling velocity in pixels/s.
Java_ContentViewCore_onFlingStartEventConsumed(env, j_obj.obj(),
- event.data.flingStart.velocityX * GetDpiScale(),
- event.data.flingStart.velocityY * GetDpiScale());
+ event.data.flingStart.velocityX * dpi_scale(),
+ event.data.flingStart.velocityY * dpi_scale());
} else {
// If a scroll ends with a fling, a SCROLL_END event is never sent.
// However, if that fling went unconsumed, we still need to let the
@@ -581,8 +591,8 @@ void ContentViewCoreImpl::OnGestureEventAck(const blink::WebGestureEvent& event,
if (ack_result == INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS) {
// The view expects the fling velocity in pixels/s.
Java_ContentViewCore_onFlingStartEventHadNoConsumer(env, j_obj.obj(),
- event.data.flingStart.velocityX * GetDpiScale(),
- event.data.flingStart.velocityY * GetDpiScale());
+ event.data.flingStart.velocityX * dpi_scale(),
+ event.data.flingStart.velocityY * dpi_scale());
}
break;
case WebInputEvent::GestureFlingCancel:
@@ -630,8 +640,8 @@ bool ContentViewCoreImpl::FilterInputEvent(const blink::WebInputEvent& event) {
return Java_ContentViewCore_filterTapOrPressEvent(env,
j_obj.obj(),
gesture_type,
- gesture.x * GetDpiScale(),
- gesture.y * GetDpiScale());
+ gesture.x * dpi_scale(),
+ gesture.y * dpi_scale());
// TODO(jdduke): Also report double-tap UMA, crbug/347568.
}
@@ -809,12 +819,12 @@ gfx::Size ContentViewCoreImpl::GetViewportSizeOffsetPix() const {
gfx::Size ContentViewCoreImpl::GetViewportSizeDip() const {
return gfx::ToCeiledSize(
- gfx::ScaleSize(GetViewportSizePix(), 1.0f / GetDpiScale()));
+ gfx::ScaleSize(GetViewportSizePix(), 1.0f / dpi_scale()));
}
gfx::Size ContentViewCoreImpl::GetViewportSizeOffsetDip() const {
return gfx::ToCeiledSize(
- gfx::ScaleSize(GetViewportSizeOffsetPix(), 1.0f / GetDpiScale()));
+ gfx::ScaleSize(GetViewportSizeOffsetPix(), 1.0f / dpi_scale()));
}
float ContentViewCoreImpl::GetOverdrawBottomHeightDip() const {
@@ -823,7 +833,7 @@ float ContentViewCoreImpl::GetOverdrawBottomHeightDip() const {
if (j_obj.is_null())
return 0.f;
return Java_ContentViewCore_getOverdrawBottomHeightPix(env, j_obj.obj())
- / GetDpiScale();
+ / dpi_scale();
}
void ContentViewCoreImpl::AttachLayer(scoped_refptr<cc::Layer> layer) {
@@ -1012,7 +1022,7 @@ void ContentViewCoreImpl::CancelActiveTouchSequenceIfNecessary() {
return;
rwhv->SendTouchEvent(
- CreateWebTouchEventFromMotionEvent(*cancel_event, 1.f / GetDpiScale()));
+ CreateWebTouchEventFromMotionEvent(*cancel_event, 1.f / dpi_scale()));
}
jboolean ContentViewCoreImpl::OnTouchEvent(JNIEnv* env,
@@ -1027,7 +1037,7 @@ jboolean ContentViewCoreImpl::OnTouchEvent(JNIEnv* env,
if (!gesture_provider_.OnTouchEvent(event))
return false;
- rwhv->SendTouchEvent(WebTouchEventBuilder::Build(event, 1.f / GetDpiScale()));
+ rwhv->SendTouchEvent(WebTouchEventBuilder::Build(event, 1.f / dpi_scale()));
return true;
}
@@ -1047,7 +1057,7 @@ jboolean ContentViewCoreImpl::SendMouseMoveEvent(JNIEnv* env,
blink::WebMouseEvent event = WebMouseEventBuilder::Build(
WebInputEvent::MouseMove,
blink::WebMouseEvent::ButtonNone,
- time_ms / 1000.0, x / GetDpiScale(), y / GetDpiScale(), 0, 1);
+ time_ms / 1000.0, x / dpi_scale(), y / dpi_scale(), 0, 1);
rwhv->SendMouseEvent(event);
return true;
@@ -1072,7 +1082,7 @@ jboolean ContentViewCoreImpl::SendMouseWheelEvent(JNIEnv* env,
return false;
}
blink::WebMouseWheelEvent event = WebMouseWheelEventBuilder::Build(
- direction, time_ms / 1000.0, x / GetDpiScale(), y / GetDpiScale());
+ direction, time_ms / 1000.0, x / dpi_scale(), y / dpi_scale());
rwhv->SendMouseWheelEvent(event);
return true;
@@ -1081,7 +1091,7 @@ jboolean ContentViewCoreImpl::SendMouseWheelEvent(JNIEnv* env,
WebGestureEvent ContentViewCoreImpl::MakeGestureEvent(
WebInputEvent::Type type, int64 time_ms, float x, float y) const {
return WebGestureEventBuilder::Build(
- type, time_ms / 1000.0, x / GetDpiScale(), y / GetDpiScale());
+ type, time_ms / 1000.0, x / dpi_scale(), y / dpi_scale());
}
void ContentViewCoreImpl::SendGestureEvent(
@@ -1100,8 +1110,8 @@ void ContentViewCoreImpl::ScrollBegin(JNIEnv* env,
jfloat hinty) {
WebGestureEvent event = MakeGestureEvent(
WebInputEvent::GestureScrollBegin, time_ms, x, y);
- event.data.scrollBegin.deltaXHint = hintx / GetDpiScale();
- event.data.scrollBegin.deltaYHint = hinty / GetDpiScale();
+ event.data.scrollBegin.deltaXHint = hintx / dpi_scale();
+ event.data.scrollBegin.deltaYHint = hinty / dpi_scale();
SendGestureEvent(event);
}
@@ -1116,8 +1126,8 @@ void ContentViewCoreImpl::ScrollBy(JNIEnv* env, jobject obj, jlong time_ms,
jfloat x, jfloat y, jfloat dx, jfloat dy) {
WebGestureEvent event = MakeGestureEvent(
WebInputEvent::GestureScrollUpdate, time_ms, x, y);
- event.data.scrollUpdate.deltaX = -dx / GetDpiScale();
- event.data.scrollUpdate.deltaY = -dy / GetDpiScale();
+ event.data.scrollUpdate.deltaX = -dx / dpi_scale();
+ event.data.scrollUpdate.deltaY = -dy / dpi_scale();
SendGestureEvent(event);
}
@@ -1126,8 +1136,8 @@ void ContentViewCoreImpl::FlingStart(JNIEnv* env, jobject obj, jlong time_ms,
jfloat x, jfloat y, jfloat vx, jfloat vy) {
WebGestureEvent event = MakeGestureEvent(
WebInputEvent::GestureFlingStart, time_ms, x, y);
- event.data.flingStart.velocityX = vx / GetDpiScale();
- event.data.flingStart.velocityY = vy / GetDpiScale();
+ event.data.flingStart.velocityX = vx / dpi_scale();
+ event.data.flingStart.velocityY = vy / dpi_scale();
SendGestureEvent(event);
}
@@ -1190,8 +1200,8 @@ void ContentViewCoreImpl::SelectBetweenCoordinates(JNIEnv* env, jobject obj,
jfloat x2, jfloat y2) {
if (GetRenderWidgetHostViewAndroid()) {
GetRenderWidgetHostViewAndroid()->SelectRange(
- gfx::Point(x1 / GetDpiScale(), y1 / GetDpiScale()),
- gfx::Point(x2 / GetDpiScale(), y2 / GetDpiScale()));
+ gfx::Point(x1 / dpi_scale(), y1 / dpi_scale()),
+ gfx::Point(x2 / dpi_scale(), y2 / dpi_scale()));
}
}
@@ -1199,7 +1209,7 @@ void ContentViewCoreImpl::MoveCaret(JNIEnv* env, jobject obj,
jfloat x, jfloat y) {
if (GetRenderWidgetHostViewAndroid()) {
GetRenderWidgetHostViewAndroid()->MoveCaret(
- gfx::Point(x / GetDpiScale(), y / GetDpiScale()));
+ gfx::Point(x / dpi_scale(), y / dpi_scale()));
}
}
@@ -1693,12 +1703,12 @@ void ContentViewCoreImpl::ExtractSmartClipData(JNIEnv* env,
jint width,
jint height) {
gfx::Rect rect(
- static_cast<int>(x / GetDpiScale()),
- static_cast<int>(y / GetDpiScale()),
- static_cast<int>((width > 0 && width < GetDpiScale()) ?
- 1 : (int)(width / GetDpiScale())),
- static_cast<int>((height > 0 && height < GetDpiScale()) ?
- 1 : (int)(height / GetDpiScale())));
+ static_cast<int>(x / dpi_scale()),
+ static_cast<int>(y / dpi_scale()),
+ static_cast<int>((width > 0 && width < dpi_scale()) ?
+ 1 : (int)(width / dpi_scale())),
+ static_cast<int>((height > 0 && height < dpi_scale()) ?
+ 1 : (int)(height / dpi_scale())));
GetWebContents()->Send(new ViewMsg_ExtractSmartClipData(
GetWebContents()->GetRoutingID(), rect));
}
« 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