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

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

Issue 2339503002: Allow OOPIFs to capture mouse input while mouse button is held down (Closed)
Patch Set: Created 4 years, 3 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 "base/metrics/histogram_macros.h" 7 #include "base/metrics/histogram_macros.h"
8 #include "cc/quads/surface_draw_quad.h" 8 #include "cc/quads/surface_draw_quad.h"
9 #include "cc/surfaces/surface_id_allocator.h" 9 #include "cc/surfaces/surface_id_allocator.h"
10 #include "cc/surfaces/surface_manager.h" 10 #include "cc/surfaces/surface_manager.h"
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 // parent frame has not sent a new compositor frame since that happened. 140 // parent frame has not sent a new compositor frame since that happened.
141 if (iter == owner_map_.end()) 141 if (iter == owner_map_.end())
142 return root_view; 142 return root_view;
143 143
144 return iter->second; 144 return iter->second;
145 } 145 }
146 146
147 void RenderWidgetHostInputEventRouter::RouteMouseEvent( 147 void RenderWidgetHostInputEventRouter::RouteMouseEvent(
148 RenderWidgetHostViewBase* root_view, 148 RenderWidgetHostViewBase* root_view,
149 blink::WebMouseEvent* event) { 149 blink::WebMouseEvent* event) {
150 RenderWidgetHostViewBase* target;
150 gfx::Point transformed_point; 151 gfx::Point transformed_point;
151 RenderWidgetHostViewBase* target = FindEventTarget( 152 if (mouse_capture_target_.target &&
152 root_view, gfx::Point(event->x, event->y), &transformed_point); 153 event->type != blink::WebInputEvent::MouseDown) {
mustaq 2016/09/13 16:57:15 Please also check that event modifier has at least
kenrb 2016/09/13 20:01:52 Done.
154 target = mouse_capture_target_.target;
155 transformed_point = root_view->TransformPointToCoordSpaceForView(
156 gfx::Point(event->x, event->y), target);
157 } else {
158 target = FindEventTarget(root_view, gfx::Point(event->x, event->y),
159 &transformed_point);
160 }
161
162 if (event->type == blink::WebInputEvent::MouseUp)
163 mouse_capture_target_.target = nullptr;
mustaq 2016/09/13 16:57:15 Or perhaps add the check (mentioned above) here an
kenrb 2016/09/13 20:01:53 I have fixed this according to my current understa
164 else if (event->type == blink::WebInputEvent::MouseDown)
165 mouse_capture_target_.target = target;
166
153 if (!target) 167 if (!target)
154 return; 168 return;
155 169
156 event->x = transformed_point.x(); 170 event->x = transformed_point.x();
157 event->y = transformed_point.y(); 171 event->y = transformed_point.y();
158 // TODO(wjmaclean): Initialize latency info correctly for OOPIFs. 172 // TODO(wjmaclean): Initialize latency info correctly for OOPIFs.
159 // https://crbug.com/613628 173 // https://crbug.com/613628
160 ui::LatencyInfo latency_info; 174 ui::LatencyInfo latency_info;
161 target->ProcessMouseEvent(*event, latency_info); 175 target->ProcessMouseEvent(*event, latency_info);
162 } 176 }
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 if (!touchpad_gesture_target_.target) 563 if (!touchpad_gesture_target_.target)
550 return; 564 return;
551 565
552 // TODO(mohsen): Add tests to check event location. 566 // TODO(mohsen): Add tests to check event location.
553 event->x += touchpad_gesture_target_.delta.x(); 567 event->x += touchpad_gesture_target_.delta.x();
554 event->y += touchpad_gesture_target_.delta.y(); 568 event->y += touchpad_gesture_target_.delta.y();
555 touchpad_gesture_target_.target->ProcessGestureEvent(*event, latency); 569 touchpad_gesture_target_.target->ProcessGestureEvent(*event, latency);
556 } 570 }
557 571
558 } // namespace content 572 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698