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

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

Issue 2592243002: Perform direct routing of mouse events when the pointer is locked. (Closed)
Patch Set: transform event, add tests Created 3 years, 10 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 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
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 if (iter == owner_map_.end()) 166 if (iter == owner_map_.end())
167 return root_view; 167 return root_view;
168 168
169 return iter->second; 169 return iter->second;
170 } 170 }
171 171
172 void RenderWidgetHostInputEventRouter::RouteMouseEvent( 172 void RenderWidgetHostInputEventRouter::RouteMouseEvent(
173 RenderWidgetHostViewBase* root_view, 173 RenderWidgetHostViewBase* root_view,
174 blink::WebMouseEvent* event, 174 blink::WebMouseEvent* event,
175 const ui::LatencyInfo& latency) { 175 const ui::LatencyInfo& latency) {
176 RenderWidgetHostViewBase* target; 176 RenderWidgetHostViewBase* target;
Charlie Reis 2017/02/15 21:38:49 Given all the conditional assignments below, let's
lfg 2017/02/15 22:02:48 Done.
177 gfx::Point transformed_point; 177 gfx::Point transformed_point;
178
179 if (root_view->IsMouseLocked()) {
Charlie Reis 2017/02/15 21:38:49 It's probably worth putting a comment on this bloc
lfg 2017/02/15 22:02:48 Done.
180 target = RenderWidgetHostImpl::From(root_view->GetRenderWidgetHost())
181 ->delegate()
182 ->MouseLockWidget()
183 ->GetView();
184 if (!root_view->TransformPointToCoordSpaceForView(
185 gfx::Point(event->x, event->y), target, &transformed_point))
186 return;
187
188 event->x = transformed_point.x();
189 event->y = transformed_point.y();
190 target->ProcessMouseEvent(*event, latency);
191 return;
192 }
193
178 const int mouse_button_modifiers = blink::WebInputEvent::LeftButtonDown | 194 const int mouse_button_modifiers = blink::WebInputEvent::LeftButtonDown |
179 blink::WebInputEvent::MiddleButtonDown | 195 blink::WebInputEvent::MiddleButtonDown |
180 blink::WebInputEvent::RightButtonDown; 196 blink::WebInputEvent::RightButtonDown;
181 if (mouse_capture_target_.target && 197 if (mouse_capture_target_.target &&
182 event->type() != blink::WebInputEvent::MouseDown && 198 event->type() != blink::WebInputEvent::MouseDown &&
183 (event->type() == blink::WebInputEvent::MouseUp || 199 (event->type() == blink::WebInputEvent::MouseUp ||
184 event->modifiers() & mouse_button_modifiers)) { 200 event->modifiers() & mouse_button_modifiers)) {
185 target = mouse_capture_target_.target; 201 target = mouse_capture_target_.target;
186 if (!root_view->TransformPointToCoordSpaceForView( 202 if (!root_view->TransformPointToCoordSpaceForView(
187 gfx::Point(event->x, event->y), target, &transformed_point)) 203 gfx::Point(event->x, event->y), target, &transformed_point))
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 256
241 event->x = transformed_point.x(); 257 event->x = transformed_point.x();
242 event->y = transformed_point.y(); 258 event->y = transformed_point.y();
243 target->ProcessMouseEvent(*event, latency); 259 target->ProcessMouseEvent(*event, latency);
244 } 260 }
245 261
246 void RenderWidgetHostInputEventRouter::RouteMouseWheelEvent( 262 void RenderWidgetHostInputEventRouter::RouteMouseWheelEvent(
247 RenderWidgetHostViewBase* root_view, 263 RenderWidgetHostViewBase* root_view,
248 blink::WebMouseWheelEvent* event, 264 blink::WebMouseWheelEvent* event,
249 const ui::LatencyInfo& latency) { 265 const ui::LatencyInfo& latency) {
266 if (root_view->IsMouseLocked()) {
267 RenderWidgetHostImpl::From(root_view->GetRenderWidgetHost())
268 ->delegate()
269 ->MouseLockWidget()
270 ->GetView()
271 ->ProcessMouseEvent(*event, latency);
272 return;
273 }
274
250 gfx::Point transformed_point; 275 gfx::Point transformed_point;
251 RenderWidgetHostViewBase* target = FindEventTarget( 276 RenderWidgetHostViewBase* target = FindEventTarget(
252 root_view, gfx::Point(event->x, event->y), &transformed_point); 277 root_view, gfx::Point(event->x, event->y), &transformed_point);
253 if (!target) 278 if (!target)
254 return; 279 return;
255 280
256 event->x = transformed_point.x(); 281 event->x = transformed_point.x();
257 event->y = transformed_point.y(); 282 event->y = transformed_point.y();
258 target->ProcessMouseWheelEvent(*event, latency); 283 target->ProcessMouseWheelEvent(*event, latency);
259 } 284 }
(...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after
779 if (!touchpad_gesture_target_.target) 804 if (!touchpad_gesture_target_.target)
780 return; 805 return;
781 806
782 // TODO(mohsen): Add tests to check event location. 807 // TODO(mohsen): Add tests to check event location.
783 event->x += touchpad_gesture_target_.delta.x(); 808 event->x += touchpad_gesture_target_.delta.x();
784 event->y += touchpad_gesture_target_.delta.y(); 809 event->y += touchpad_gesture_target_.delta.y();
785 touchpad_gesture_target_.target->ProcessGestureEvent(*event, latency); 810 touchpad_gesture_target_.target->ProcessGestureEvent(*event, latency);
786 } 811 }
787 812
788 } // namespace content 813 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698