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

Unified Diff: content/browser/renderer_host/render_widget_host_view_aura.cc

Issue 2052353002: Route ScrollEvents to correct process under OOPIF (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Test added Created 4 years, 6 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
« no previous file with comments | « no previous file | content/browser/site_per_process_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/renderer_host/render_widget_host_view_aura.cc
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc
index f830909d6f36ee157af79d58965960fe518adc34..c435c35f93962cdd156746e9056b894e372a7558 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -864,7 +864,9 @@ bool RenderWidgetHostViewAura::ShouldRouteEvent(const ui::Event* event) const {
// in a similar manner to RenderWidgetHostViewGuest.
bool result = host_->delegate() && host_->delegate()->GetInputEventRouter() &&
!disable_input_event_router_for_testing_;
- if (event->IsMouseEvent())
+ // ScrollEvents get transformed into MouseWheel events, and so are treated
+ // the same as mouse events for routing purposes.
+ if (event->IsMouseEvent() || event->type() == ui::ET_SCROLL)
result = result && SiteIsolationPolicy::AreCrossProcessFramesPossible();
return result;
}
@@ -2127,16 +2129,33 @@ void RenderWidgetHostViewAura::OnScrollEvent(ui::ScrollEvent* event) {
#endif
blink::WebGestureEvent gesture_event =
MakeWebGestureEventFlingCancel();
- host_->ForwardGestureEvent(gesture_event);
+ // Coordinates need to be transferred to the fling cancel gesture only
+ // for Surface-targeting to ensure that it is targeted to the correct
+ // RenderWidgetHost.
+ gesture_event.x = event->x();
+ gesture_event.y = event->y();
blink::WebMouseWheelEvent mouse_wheel_event =
MakeWebMouseWheelEvent(*event);
- host_->ForwardWheelEventWithLatencyInfo(mouse_wheel_event,
- *event->latency());
+ if (ShouldRouteEvent(event)) {
+ host_->delegate()->GetInputEventRouter()->RouteGestureEvent(
+ this, &gesture_event, ui::LatencyInfo());
+ host_->delegate()->GetInputEventRouter()->RouteMouseWheelEvent(
+ this, &mouse_wheel_event);
+ } else {
+ host_->ForwardGestureEvent(gesture_event);
+ host_->ForwardWheelEventWithLatencyInfo(mouse_wheel_event,
+ *event->latency());
+ }
RecordAction(base::UserMetricsAction("TrackpadScroll"));
} else if (event->type() == ui::ET_SCROLL_FLING_START ||
event->type() == ui::ET_SCROLL_FLING_CANCEL) {
blink::WebGestureEvent gesture_event = MakeWebGestureEvent(*event);
- host_->ForwardGestureEvent(gesture_event);
+ if (ShouldRouteEvent(event)) {
+ host_->delegate()->GetInputEventRouter()->RouteGestureEvent(
+ this, &gesture_event, ui::LatencyInfo());
+ } else {
+ host_->ForwardGestureEvent(gesture_event);
+ }
if (event->type() == ui::ET_SCROLL_FLING_START)
RecordAction(base::UserMetricsAction("TrackpadScrollFling"));
}
« no previous file with comments | « no previous file | content/browser/site_per_process_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698