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

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

Issue 2417783005: [Master/Overview CL] Make PageScaleFactor work for oopif subframe.
Patch Set: Rebase to master@{#429656}. Created 4 years, 1 month 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/renderer_host/render_widget_host_input_event_router.cc
diff --git a/content/browser/renderer_host/render_widget_host_input_event_router.cc b/content/browser/renderer_host/render_widget_host_input_event_router.cc
index 3603ae2d83f8e927f3952f95a37ae7d17b8a546e..056fd6474fe6050670a3523301f406626b47bf71 100644
--- a/content/browser/renderer_host/render_widget_host_input_event_router.cc
+++ b/content/browser/renderer_host/render_widget_host_input_event_router.cc
@@ -34,6 +34,12 @@ blink::WebGestureEvent DummyGestureScrollUpdate() {
return dummy_gesture_scroll_update;
}
+bool IsGesturePinchEvent(const blink::WebGestureEvent* event) {
+ return event->type == blink::WebInputEvent::GesturePinchBegin ||
+ event->type == blink::WebInputEvent::GesturePinchUpdate ||
+ event->type == blink::WebInputEvent::GesturePinchEnd;
+}
+
} // anonymous namespace
namespace content {
@@ -658,6 +664,19 @@ void RenderWidgetHostInputEventRouter::RouteTouchscreenGestureEvent(
if (in_touchscreen_gesture_pinch_) {
root_view->ProcessGestureEvent(*event, latency);
+ if (IsGesturePinchEvent(event)) {
+ // Broadcast the pinch events to all subframes so they can update their
+ // PageScales with the deltas in the events. We don't broadcast to
+ // RenderWidgetHostViewGuest as it has a separate mechanism for
+ // propagating page scale.
+ for (auto entry : owner_map_) {
+ if (entry.second != root_view &&
+ !entry.second->IsRenderWidgetHostViewGuest()) {
+ entry.second->ProcessGestureEvent(*event, latency);
+ }
+ }
+ }
+
if (event->type == blink::WebInputEvent::GesturePinchEnd) {
in_touchscreen_gesture_pinch_ = false;
// If the root view wasn't already receiving the gesture stream, then we

Powered by Google App Engine
This is Rietveld 408576698