Index: android_webview/renderer/aw_render_view_ext.cc |
diff --git a/android_webview/renderer/aw_render_view_ext.cc b/android_webview/renderer/aw_render_view_ext.cc |
index 41c212523e52497cab2c0931e20c20b7e0a410ea..7c5358484bba05439d06bef8d5e256dd084e8f1d 100644 |
--- a/android_webview/renderer/aw_render_view_ext.cc |
+++ b/android_webview/renderer/aw_render_view_ext.cc |
@@ -266,13 +266,23 @@ void AwRenderViewExt::FocusedNodeChanged(const blink::WebNode& node) { |
Send(new AwViewHostMsg_UpdateHitTestData(routing_id(), data)); |
} |
-void AwRenderViewExt::OnDoHitTest(int view_x, int view_y) { |
+void AwRenderViewExt::OnDoHitTest(int view_x, |
+ int view_y, |
+ float touch_major_0, |
+ float touch_major_1) { |
if (!render_view() || !render_view()->GetWebView()) |
return; |
+ // touch_major_1 refers to the touch area radius of the 2nd finger, if there |
+ // are 2 fingers touching |
+ // the screen. Some devices can report multiple movement traces at the same |
+ // time, but not all. |
+ // This follows what WebInputEventUtil::CreateWebTouchPoint is doing. |
+ int radius = 0.5f * std::max(touch_major_0, touch_major_1); |
boliu
2014/08/14 16:36:53
hmm, should we do max or min here...?
jdduke (slow)
2014/08/14 17:01:57
Sorry for the drive-by, but why put this max logic
hush (inactive)
2014/08/14 17:03:32
Sorry. I'm probably just doing a random thing here
boliu
2014/08/14 17:05:18
Use the first point here.
hush (inactive)
2014/08/14 17:25:22
Thanks Jared for the comments! By "following what
|
+ const blink::WebSize touch_area(radius, radius); |
const blink::WebHitTestResult result = |
render_view()->GetWebView()->hitTestResultAt( |
- blink::WebPoint(view_x, view_y)); |
+ blink::WebPoint(view_x, view_y), touch_area); |
AwHitTestData data; |
if (!result.urlElement().isNull()) { |