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

Side by Side Diff: content/browser/renderer_host/render_widget_host_input_event_router.cc

Issue 2417693002: Allow MimeHandlerViewGuest be embedded inside OOPIFs (Closed)
Patch Set: Rebased 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/renderer_host/render_widget_host_input_event_router.h" 5 #include "content/browser/renderer_host/render_widget_host_input_event_router.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/metrics/histogram_macros.h" 9 #include "base/metrics/histogram_macros.h"
10 10
11 #include "cc/quads/surface_draw_quad.h" 11 #include "cc/quads/surface_draw_quad.h"
12 #include "cc/surfaces/surface_id_allocator.h" 12 #include "cc/surfaces/surface_id_allocator.h"
13 #include "cc/surfaces/surface_manager.h" 13 #include "cc/surfaces/surface_manager.h"
14 #include "content/browser/frame_host/render_widget_host_view_child_frame.h" 14 #include "content/browser/frame_host/render_widget_host_view_child_frame.h"
15 #include "content/browser/frame_host/render_widget_host_view_guest.h"
15 #include "content/browser/renderer_host/render_widget_host_impl.h" 16 #include "content/browser/renderer_host/render_widget_host_impl.h"
16 #include "content/browser/renderer_host/render_widget_host_view_base.h" 17 #include "content/browser/renderer_host/render_widget_host_view_base.h"
17 #include "content/common/frame_messages.h" 18 #include "content/common/frame_messages.h"
18 #include "third_party/WebKit/public/web/WebInputEvent.h" 19 #include "third_party/WebKit/public/web/WebInputEvent.h"
19 #include "ui/events/blink/web_input_event_traits.h" 20 #include "ui/events/blink/web_input_event_traits.h"
20 21
21 namespace { 22 namespace {
22 23
23 void TransformEventTouchPositions(blink::WebTouchEvent* event, 24 void TransformEventTouchPositions(blink::WebTouchEvent* event,
24 const gfx::Vector2d& delta) { 25 const gfx::Vector2d& delta) {
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 } else { 191 } else {
191 target = FindEventTarget(root_view, gfx::Point(event->x, event->y), 192 target = FindEventTarget(root_view, gfx::Point(event->x, event->y),
192 &transformed_point); 193 &transformed_point);
193 } 194 }
194 195
195 // RenderWidgetHostViewGuest does not properly handle direct routing of mouse 196 // RenderWidgetHostViewGuest does not properly handle direct routing of mouse
196 // events, so they have to go by the double-hop forwarding path through 197 // events, so they have to go by the double-hop forwarding path through
197 // the embedding renderer and then BrowserPluginGuest. 198 // the embedding renderer and then BrowserPluginGuest.
198 if (target && target->IsRenderWidgetHostViewGuest()) { 199 if (target && target->IsRenderWidgetHostViewGuest()) {
199 ui::LatencyInfo latency_info; 200 ui::LatencyInfo latency_info;
200 root_view->ProcessMouseEvent(*event, latency_info); 201 RenderWidgetHostViewBase* embedder =
202 static_cast<RenderWidgetHostViewGuest*>(target)
203 ->GetOwnerRenderWidgetHostView();
204 if (embedder != root_view) {
205 // This happens when the view is embedded inside a cross-process frame.
206 gfx::Point embedder_point;
207 if (!root_view->TransformPointToCoordSpaceForView(
208 gfx::Point(event->x, event->y), embedder, &embedder_point)) {
209 return;
210 }
211 event->x = embedder_point.x();
212 event->y = embedder_point.y();
213 }
214 embedder->ProcessMouseEvent(*event, latency_info);
201 return; 215 return;
202 } 216 }
203 217
204 if (event->type == blink::WebInputEvent::MouseDown) 218 if (event->type == blink::WebInputEvent::MouseDown)
205 mouse_capture_target_.target = target; 219 mouse_capture_target_.target = target;
206 220
207 if (!target) 221 if (!target)
208 return; 222 return;
209 223
210 // SendMouseEnterOrLeaveEvents is called with the original event 224 // SendMouseEnterOrLeaveEvents is called with the original event
(...skipping 537 matching lines...) Expand 10 before | Expand all | Expand 10 after
748 if (!touchpad_gesture_target_.target) 762 if (!touchpad_gesture_target_.target)
749 return; 763 return;
750 764
751 // TODO(mohsen): Add tests to check event location. 765 // TODO(mohsen): Add tests to check event location.
752 event->x += touchpad_gesture_target_.delta.x(); 766 event->x += touchpad_gesture_target_.delta.x();
753 event->y += touchpad_gesture_target_.delta.y(); 767 event->y += touchpad_gesture_target_.delta.y();
754 touchpad_gesture_target_.target->ProcessGestureEvent(*event, latency); 768 touchpad_gesture_target_.target->ProcessGestureEvent(*event, latency);
755 } 769 }
756 770
757 } // namespace content 771 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698