Commit d62564d8 authored by Dave Tapuska's avatar Dave Tapuska Committed by Commit Bot

Collapse Scroll[Begin|Update|End] into a common handler.

Unify handling of gesture scroll events. Dismiss any outstanding
page popup on these events.

BUG=1097816

Change-Id: I39fd4d4dd10ada132d9d440c1b9d72c81389f60a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2551247
Commit-Queue: Dave Tapuska <dtapuska@chromium.org>
Reviewed-by: default avatardanakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#830621}
parent 0feb5f8c
...@@ -821,6 +821,21 @@ WebInputEventResult WebFrameWidgetBase::HandleGestureEvent( ...@@ -821,6 +821,21 @@ WebInputEventResult WebFrameWidgetBase::HandleGestureEvent(
event_result = WebInputEventResult::kHandledSystem; event_result = WebInputEventResult::kHandledSystem;
DidHandleGestureEvent(event); DidHandleGestureEvent(event);
return event_result; return event_result;
case WebInputEvent::Type::kGestureScrollBegin:
case WebInputEvent::Type::kGestureScrollEnd:
case WebInputEvent::Type::kGestureScrollUpdate:
// If we are getting any scroll toss close any page popup that is open.
web_view->CancelPagePopup();
// Scrolling-related gesture events invoke EventHandler recursively for
// each frame down the chain, doing a single-frame hit-test per frame.
// This matches handleWheelEvent. Perhaps we could simplify things by
// rewriting scroll handling to work inner frame out, and then unify with
// other gesture events.
event_result =
frame->GetEventHandler().HandleGestureScrollEvent(scaled_event);
DidHandleGestureEvent(event);
return event_result;
default: default:
break; break;
} }
......
...@@ -215,9 +215,6 @@ WebInputEventResult WebFrameWidgetImpl::HandleGestureEventScaled( ...@@ -215,9 +215,6 @@ WebInputEventResult WebFrameWidgetImpl::HandleGestureEventScaled(
const WebGestureEvent& scaled_event) { const WebGestureEvent& scaled_event) {
base::Optional<ContextMenuAllowedScope> maybe_context_menu_scope; base::Optional<ContextMenuAllowedScope> maybe_context_menu_scope;
switch (scaled_event.GetType()) { switch (scaled_event.GetType()) {
case WebInputEvent::Type::kGestureScrollBegin:
case WebInputEvent::Type::kGestureScrollEnd:
case WebInputEvent::Type::kGestureScrollUpdate:
case WebInputEvent::Type::kGestureTap: case WebInputEvent::Type::kGestureTap:
case WebInputEvent::Type::kGestureTapUnconfirmed: case WebInputEvent::Type::kGestureTapUnconfirmed:
case WebInputEvent::Type::kGestureTapDown: case WebInputEvent::Type::kGestureTapDown:
......
...@@ -78,25 +78,6 @@ WebInputEventResult WebViewFrameWidget::HandleGestureEventScaled( ...@@ -78,25 +78,6 @@ WebInputEventResult WebViewFrameWidget::HandleGestureEventScaled(
WebInputEventResult event_result = WebInputEventResult::kNotHandled; WebInputEventResult event_result = WebInputEventResult::kNotHandled;
// Special handling for double tap and scroll events as we don't want to
// hit test for them.
switch (scaled_event.GetType()) {
case WebInputEvent::Type::kGestureScrollBegin:
case WebInputEvent::Type::kGestureScrollEnd:
case WebInputEvent::Type::kGestureScrollUpdate:
// Scrolling-related gesture events invoke EventHandler recursively for
// each frame down the chain, doing a single-frame hit-test per frame.
// This matches handleWheelEvent. Perhaps we could simplify things by
// rewriting scroll handling to work inner frame out, and then unify with
// other gesture events.
return web_view->MainFrameImpl()
->GetFrame()
->GetEventHandler()
.HandleGestureScrollEvent(scaled_event);
default:
break;
}
// Hit test across all frames and do touch adjustment as necessary for the // Hit test across all frames and do touch adjustment as necessary for the
// event type. // event type.
GestureEventWithHitTestResults targeted_event = GestureEventWithHitTestResults targeted_event =
......
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