Commit 1e99661f authored by wjmaclean's avatar wjmaclean Committed by Commit bot

Dummy WebGestureEvent() sent to SendGestureScrollEvent() needs proper type.

At present, debug builds of Chrome can crash if your touch scrolling in
a cross-site iframe with --site-per-process enabled, and then you tap
in the parent frame. This happens when a 'dummy' WebGestureEvent is sent
to RenderWidgetHostInputEventRouter::SendGestureScrollEvent() without
defining its type. Since the function DCHECKs the type of the input
event, this causes a crash. This CL makes sure the event has an
appropriate type.

BUG=645208

Review-Url: https://codereview.chromium.org/2323093002
Cr-Commit-Position: refs/heads/master@{#417566}
parent 8b3bca18
...@@ -23,6 +23,12 @@ void TransformEventTouchPositions(blink::WebTouchEvent* event, ...@@ -23,6 +23,12 @@ void TransformEventTouchPositions(blink::WebTouchEvent* event,
} }
} }
blink::WebGestureEvent DummyGestureScrollUpdate() {
blink::WebGestureEvent dummy_gesture_scroll_update;
dummy_gesture_scroll_update.type = blink::WebInputEvent::GestureScrollUpdate;
return dummy_gesture_scroll_update;
}
} // anonymous namespace } // anonymous namespace
namespace content { namespace content {
...@@ -252,7 +258,7 @@ void RenderWidgetHostInputEventRouter::RouteTouchEvent( ...@@ -252,7 +258,7 @@ void RenderWidgetHostInputEventRouter::RouteTouchEvent(
if (touch_target_.target == bubbling_gesture_scroll_target_.target) { if (touch_target_.target == bubbling_gesture_scroll_target_.target) {
SendGestureScrollEnd(bubbling_gesture_scroll_target_.target, SendGestureScrollEnd(bubbling_gesture_scroll_target_.target,
blink::WebGestureEvent()); DummyGestureScrollUpdate());
CancelScrollBubbling(bubbling_gesture_scroll_target_.target); CancelScrollBubbling(bubbling_gesture_scroll_target_.target);
} }
} }
...@@ -497,7 +503,7 @@ void RenderWidgetHostInputEventRouter::RouteTouchscreenGestureEvent( ...@@ -497,7 +503,7 @@ void RenderWidgetHostInputEventRouter::RouteTouchscreenGestureEvent(
touchscreen_gesture_target_.target == touchscreen_gesture_target_.target ==
bubbling_gesture_scroll_target_.target) { bubbling_gesture_scroll_target_.target) {
SendGestureScrollEnd(bubbling_gesture_scroll_target_.target, SendGestureScrollEnd(bubbling_gesture_scroll_target_.target,
blink::WebGestureEvent()); DummyGestureScrollUpdate());
CancelScrollBubbling(bubbling_gesture_scroll_target_.target); CancelScrollBubbling(bubbling_gesture_scroll_target_.target);
} }
} }
...@@ -535,7 +541,7 @@ void RenderWidgetHostInputEventRouter::RouteTouchpadGestureEvent( ...@@ -535,7 +541,7 @@ void RenderWidgetHostInputEventRouter::RouteTouchpadGestureEvent(
touchpad_gesture_target_.target == touchpad_gesture_target_.target ==
bubbling_gesture_scroll_target_.target) { bubbling_gesture_scroll_target_.target) {
SendGestureScrollEnd(bubbling_gesture_scroll_target_.target, SendGestureScrollEnd(bubbling_gesture_scroll_target_.target,
blink::WebGestureEvent()); DummyGestureScrollUpdate());
CancelScrollBubbling(bubbling_gesture_scroll_target_.target); CancelScrollBubbling(bubbling_gesture_scroll_target_.target);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment