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 "base/debug/dump_without_crashing.h" | 7 #include "base/debug/dump_without_crashing.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 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
115 } | 115 } |
116 | 116 |
117 // The hittest delegate is used to reject hittesting quads based on extra | 117 // The hittest delegate is used to reject hittesting quads based on extra |
118 // hittesting data send by the renderer. | 118 // hittesting data send by the renderer. |
119 HittestDelegate delegate(hittest_data_); | 119 HittestDelegate delegate(hittest_data_); |
120 | 120 |
121 // The conversion of point to transform_point is done over the course of the | 121 // The conversion of point to transform_point is done over the course of the |
122 // hit testing, and reflect transformations that would normally be applied in | 122 // hit testing, and reflect transformations that would normally be applied in |
123 // the renderer process if the event was being routed between frames within a | 123 // the renderer process if the event was being routed between frames within a |
124 // single process with only one RenderWidgetHost. | 124 // single process with only one RenderWidgetHost. |
125 uint32_t surface_id_namespace = | 125 uint32_t surface_client_id = |
126 root_view->SurfaceIdNamespaceAtPoint(&delegate, point, transformed_point); | 126 root_view->SurfaceClientIdAtPoint(&delegate, point, transformed_point); |
127 const SurfaceIdNamespaceOwnerMap::iterator iter = | 127 const SurfaceClientIdOwnerMap::iterator iter = |
128 owner_map_.find(surface_id_namespace); | 128 owner_map_.find(surface_client_id); |
129 // If the point hit a Surface whose namspace is no longer in the map, then | 129 // If the point hit a Surface whose namspace is no longer in the map, then |
130 // it likely means the RenderWidgetHostView has been destroyed but its | 130 // it likely means the RenderWidgetHostView has been destroyed but its |
131 // parent frame has not sent a new compositor frame since that happened. | 131 // parent frame has not sent a new compositor frame since that happened. |
132 if (iter == owner_map_.end()) | 132 if (iter == owner_map_.end()) |
133 return root_view; | 133 return root_view; |
134 | 134 |
135 return iter->second; | 135 return iter->second; |
136 } | 136 } |
137 | 137 |
138 void RenderWidgetHostInputEventRouter::RouteMouseEvent( | 138 void RenderWidgetHostInputEventRouter::RouteMouseEvent( |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
338 | 338 |
339 void RenderWidgetHostInputEventRouter::CancelScrollBubbling( | 339 void RenderWidgetHostInputEventRouter::CancelScrollBubbling( |
340 RenderWidgetHostViewBase* target_view) { | 340 RenderWidgetHostViewBase* target_view) { |
341 DCHECK(target_view); | 341 DCHECK(target_view); |
342 if (target_view == first_bubbling_scroll_target_.target) { | 342 if (target_view == first_bubbling_scroll_target_.target) { |
343 first_bubbling_scroll_target_.target = nullptr; | 343 first_bubbling_scroll_target_.target = nullptr; |
344 bubbling_gesture_scroll_target_.target = nullptr; | 344 bubbling_gesture_scroll_target_.target = nullptr; |
345 } | 345 } |
346 } | 346 } |
347 | 347 |
348 void RenderWidgetHostInputEventRouter::AddSurfaceIdNamespaceOwner( | 348 void RenderWidgetHostInputEventRouter::AddSurfaceClientIdOwner( |
349 uint32_t id, | 349 uint32_t id, |
350 RenderWidgetHostViewBase* owner) { | 350 RenderWidgetHostViewBase* owner) { |
351 DCHECK(owner_map_.find(id) == owner_map_.end()); | 351 DCHECK(owner_map_.find(id) == owner_map_.end()); |
352 // We want to be notified if the owner is destroyed so we can remove it from | 352 // We want to be notified if the owner is destroyed so we can remove it from |
353 // our map. | 353 // our map. |
354 owner->AddObserver(this); | 354 owner->AddObserver(this); |
355 owner_map_.insert(std::make_pair(id, owner)); | 355 owner_map_.insert(std::make_pair(id, owner)); |
356 } | 356 } |
357 | 357 |
358 void RenderWidgetHostInputEventRouter::RemoveSurfaceIdNamespaceOwner( | 358 void RenderWidgetHostInputEventRouter::RemoveSurfaceClientIdOwner(uint32_t id) { |
359 uint32_t id) { | |
360 auto it_to_remove = owner_map_.find(id); | 359 auto it_to_remove = owner_map_.find(id); |
361 if (it_to_remove != owner_map_.end()) { | 360 if (it_to_remove != owner_map_.end()) { |
362 it_to_remove->second->RemoveObserver(this); | 361 it_to_remove->second->RemoveObserver(this); |
363 owner_map_.erase(it_to_remove); | 362 owner_map_.erase(it_to_remove); |
364 } | 363 } |
365 | 364 |
366 for (auto it = hittest_data_.begin(); it != hittest_data_.end();) { | 365 for (auto it = hittest_data_.begin(); it != hittest_data_.end();) { |
367 if (it->first.id_namespace() == id) | 366 if (it->first.client_id() == id) |
368 it = hittest_data_.erase(it); | 367 it = hittest_data_.erase(it); |
369 else | 368 else |
370 ++it; | 369 ++it; |
371 } | 370 } |
372 } | 371 } |
373 | 372 |
374 void RenderWidgetHostInputEventRouter::OnHittestData( | 373 void RenderWidgetHostInputEventRouter::OnHittestData( |
375 const FrameHostMsg_HittestData_Params& params) { | 374 const FrameHostMsg_HittestData_Params& params) { |
376 if (owner_map_.find(params.surface_id.id_namespace()) == owner_map_.end()) { | 375 if (owner_map_.find(params.surface_id.client_id()) == owner_map_.end()) { |
377 return; | 376 return; |
378 } | 377 } |
379 HittestData data; | 378 HittestData data; |
380 data.ignored_for_hittest = params.ignored_for_hittest; | 379 data.ignored_for_hittest = params.ignored_for_hittest; |
381 hittest_data_[params.surface_id] = data; | 380 hittest_data_[params.surface_id] = data; |
382 } | 381 } |
383 | 382 |
384 void RenderWidgetHostInputEventRouter::RouteTouchscreenGestureEvent( | 383 void RenderWidgetHostInputEventRouter::RouteTouchscreenGestureEvent( |
385 RenderWidgetHostViewBase* root_view, | 384 RenderWidgetHostViewBase* root_view, |
386 blink::WebGestureEvent* event, | 385 blink::WebGestureEvent* event, |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
439 if (!touchpad_gesture_target_.target) | 438 if (!touchpad_gesture_target_.target) |
440 return; | 439 return; |
441 | 440 |
442 // TODO(mohsen): Add tests to check event location. | 441 // TODO(mohsen): Add tests to check event location. |
443 event->x += touchpad_gesture_target_.delta.x(); | 442 event->x += touchpad_gesture_target_.delta.x(); |
444 event->y += touchpad_gesture_target_.delta.y(); | 443 event->y += touchpad_gesture_target_.delta.y(); |
445 touchpad_gesture_target_.target->ProcessGestureEvent(*event, latency); | 444 touchpad_gesture_target_.target->ProcessGestureEvent(*event, latency); |
446 } | 445 } |
447 | 446 |
448 } // namespace content | 447 } // namespace content |
OLD | NEW |