OLD | NEW |
---|---|
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 |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
190 } else { | 190 } else { |
191 target = FindEventTarget(root_view, gfx::Point(event->x, event->y), | 191 target = FindEventTarget(root_view, gfx::Point(event->x, event->y), |
192 &transformed_point); | 192 &transformed_point); |
193 } | 193 } |
194 | 194 |
195 // RenderWidgetHostViewGuest does not properly handle direct routing of mouse | 195 // RenderWidgetHostViewGuest does not properly handle direct routing of mouse |
196 // events, so they have to go by the double-hop forwarding path through | 196 // events, so they have to go by the double-hop forwarding path through |
197 // the embedding renderer and then BrowserPluginGuest. | 197 // the embedding renderer and then BrowserPluginGuest. |
198 if (target && target->IsRenderWidgetHostViewGuest()) { | 198 if (target && target->IsRenderWidgetHostViewGuest()) { |
199 ui::LatencyInfo latency_info; | 199 ui::LatencyInfo latency_info; |
200 root_view->ProcessMouseEvent(*event, latency_info); | 200 RenderWidgetHostViewBase* embedder = |
201 static_cast<RenderWidgetHostViewChildFrame*>(target) | |
Charlie Reis
2016/11/02 20:47:07
Can we just cast to RenderWidgetHostViewGuest here
EhsanK
2016/11/08 23:10:16
Yes but we are in renderer_host/. Should I add exc
| |
202 ->GetOwnerRenderWidgetHostView(); | |
203 if (embedder != root_view) { | |
204 // This happens when the view is embedded inside a cross-process frame. | |
205 gfx::Point embedder_point; | |
206 if (!root_view->TransformPointToCoordSpaceForView( | |
207 gfx::Point(event->x, event->y), embedder, &embedder_point)) { | |
208 return; | |
209 } | |
210 event->x = embedder_point.x(); | |
211 event->y = embedder_point.y(); | |
212 } | |
213 embedder->ProcessMouseEvent(*event, latency_info); | |
201 return; | 214 return; |
202 } | 215 } |
203 | 216 |
204 if (event->type == blink::WebInputEvent::MouseDown) | 217 if (event->type == blink::WebInputEvent::MouseDown) |
205 mouse_capture_target_.target = target; | 218 mouse_capture_target_.target = target; |
206 | 219 |
207 if (!target) | 220 if (!target) |
208 return; | 221 return; |
209 | 222 |
210 // SendMouseEnterOrLeaveEvents is called with the original event | 223 // SendMouseEnterOrLeaveEvents is called with the original event |
(...skipping 537 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
748 if (!touchpad_gesture_target_.target) | 761 if (!touchpad_gesture_target_.target) |
749 return; | 762 return; |
750 | 763 |
751 // TODO(mohsen): Add tests to check event location. | 764 // TODO(mohsen): Add tests to check event location. |
752 event->x += touchpad_gesture_target_.delta.x(); | 765 event->x += touchpad_gesture_target_.delta.x(); |
753 event->y += touchpad_gesture_target_.delta.y(); | 766 event->y += touchpad_gesture_target_.delta.y(); |
754 touchpad_gesture_target_.target->ProcessGestureEvent(*event, latency); | 767 touchpad_gesture_target_.target->ProcessGestureEvent(*event, latency); |
755 } | 768 } |
756 | 769 |
757 } // namespace content | 770 } // namespace content |
OLD | NEW |