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

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: mustaq review comments addressed 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 const int mouse_button_modifiers = blink::WebInputEvent::LeftButtonDown |
152 root_view, gfx::Point(event->x, event->y), &transformed_point); 153 blink::WebInputEvent::MiddleButtonDown |
154 blink::WebInputEvent::RightButtonDown;
155 if (mouse_capture_target_.target &&
dtapuska 2016/09/13 20:15:14 Should you not be clearing the target when the vie
kenrb 2016/09/13 20:18:49 I definitely should. Thanks for catching that. Fi
156 event->type != blink::WebInputEvent::MouseDown &&
157 (event->type == blink::WebInputEvent::MouseUp ||
158 event->modifiers & mouse_button_modifiers)) {
159 target = mouse_capture_target_.target;
160 transformed_point = root_view->TransformPointToCoordSpaceForView(
161 gfx::Point(event->x, event->y), target);
162 if (event->type == blink::WebInputEvent::MouseUp)
163 mouse_capture_target_.target = nullptr;
164 } else {
165 target = FindEventTarget(root_view, gfx::Point(event->x, event->y),
166 &transformed_point);
167 }
168
169 if (event->type == blink::WebInputEvent::MouseDown)
170 mouse_capture_target_.target = target;
171
153 if (!target) 172 if (!target)
154 return; 173 return;
155 174
156 event->x = transformed_point.x(); 175 event->x = transformed_point.x();
157 event->y = transformed_point.y(); 176 event->y = transformed_point.y();
158 // TODO(wjmaclean): Initialize latency info correctly for OOPIFs. 177 // TODO(wjmaclean): Initialize latency info correctly for OOPIFs.
159 // https://crbug.com/613628 178 // https://crbug.com/613628
160 ui::LatencyInfo latency_info; 179 ui::LatencyInfo latency_info;
161 target->ProcessMouseEvent(*event, latency_info); 180 target->ProcessMouseEvent(*event, latency_info);
162 } 181 }
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 if (!touchpad_gesture_target_.target) 568 if (!touchpad_gesture_target_.target)
550 return; 569 return;
551 570
552 // TODO(mohsen): Add tests to check event location. 571 // TODO(mohsen): Add tests to check event location.
553 event->x += touchpad_gesture_target_.delta.x(); 572 event->x += touchpad_gesture_target_.delta.x();
554 event->y += touchpad_gesture_target_.delta.y(); 573 event->y += touchpad_gesture_target_.delta.y();
555 touchpad_gesture_target_.target->ProcessGestureEvent(*event, latency); 574 touchpad_gesture_target_.target->ProcessGestureEvent(*event, latency);
556 } 575 }
557 576
558 } // namespace content 577 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_widget_host_input_event_router.h ('k') | content/browser/site_per_process_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698