| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/frame_host/cross_process_frame_connector.h" | 5 #include "content/browser/frame_host/cross_process_frame_connector.h" |
| 6 | 6 |
| 7 #include "cc/surfaces/surface.h" | 7 #include "cc/surfaces/surface.h" |
| 8 #include "cc/surfaces/surface_hittest.h" | 8 #include "cc/surfaces/surface_hittest.h" |
| 9 #include "cc/surfaces/surface_manager.h" | 9 #include "cc/surfaces/surface_manager.h" |
| 10 #include "content/browser/compositor/surface_utils.h" | 10 #include "content/browser/compositor/surface_utils.h" |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 186 void CrossProcessFrameConnector::ForwardProcessAckedTouchEvent( | 186 void CrossProcessFrameConnector::ForwardProcessAckedTouchEvent( |
| 187 const TouchEventWithLatencyInfo& touch, | 187 const TouchEventWithLatencyInfo& touch, |
| 188 InputEventAckState ack_result) { | 188 InputEventAckState ack_result) { |
| 189 auto* main_view = GetRootRenderWidgetHostView(); | 189 auto* main_view = GetRootRenderWidgetHostView(); |
| 190 if (main_view) | 190 if (main_view) |
| 191 main_view->ProcessAckedTouchEvent(touch, ack_result); | 191 main_view->ProcessAckedTouchEvent(touch, ack_result); |
| 192 } | 192 } |
| 193 | 193 |
| 194 void CrossProcessFrameConnector::BubbleScrollEvent( | 194 void CrossProcessFrameConnector::BubbleScrollEvent( |
| 195 const blink::WebGestureEvent& event) { | 195 const blink::WebGestureEvent& event) { |
| 196 DCHECK(event.type == blink::WebInputEvent::GestureScrollUpdate || | 196 DCHECK(event.type() == blink::WebInputEvent::GestureScrollUpdate || |
| 197 event.type == blink::WebInputEvent::GestureScrollEnd); | 197 event.type() == blink::WebInputEvent::GestureScrollEnd); |
| 198 auto* parent_view = GetParentRenderWidgetHostView(); | 198 auto* parent_view = GetParentRenderWidgetHostView(); |
| 199 | 199 |
| 200 if (!parent_view) | 200 if (!parent_view) |
| 201 return; | 201 return; |
| 202 | 202 |
| 203 auto* event_router = | 203 auto* event_router = |
| 204 RenderWidgetHostImpl::From(parent_view->GetRenderWidgetHost()) | 204 RenderWidgetHostImpl::From(parent_view->GetRenderWidgetHost()) |
| 205 ->delegate() | 205 ->delegate() |
| 206 ->GetInputEventRouter(); | 206 ->GetInputEventRouter(); |
| 207 | 207 |
| 208 gfx::Vector2d offset_from_parent = child_frame_rect_.OffsetFromOrigin(); | 208 gfx::Vector2d offset_from_parent = child_frame_rect_.OffsetFromOrigin(); |
| 209 blink::WebGestureEvent resent_gesture_event(event); | 209 blink::WebGestureEvent resent_gesture_event(event); |
| 210 // TODO(kenrb, wjmaclean): Do we need to account for transforms here? | 210 // TODO(kenrb, wjmaclean): Do we need to account for transforms here? |
| 211 // See https://crbug.com/626020. | 211 // See https://crbug.com/626020. |
| 212 resent_gesture_event.x += offset_from_parent.x(); | 212 resent_gesture_event.x += offset_from_parent.x(); |
| 213 resent_gesture_event.y += offset_from_parent.y(); | 213 resent_gesture_event.y += offset_from_parent.y(); |
| 214 if (event.type == blink::WebInputEvent::GestureScrollUpdate) { | 214 if (event.type() == blink::WebInputEvent::GestureScrollUpdate) { |
| 215 event_router->BubbleScrollEvent(parent_view, resent_gesture_event); | 215 event_router->BubbleScrollEvent(parent_view, resent_gesture_event); |
| 216 is_scroll_bubbling_ = true; | 216 is_scroll_bubbling_ = true; |
| 217 } else if (event.type == blink::WebInputEvent::GestureScrollEnd && | 217 } else if (event.type() == blink::WebInputEvent::GestureScrollEnd && |
| 218 is_scroll_bubbling_) { | 218 is_scroll_bubbling_) { |
| 219 event_router->BubbleScrollEvent(parent_view, resent_gesture_event); | 219 event_router->BubbleScrollEvent(parent_view, resent_gesture_event); |
| 220 is_scroll_bubbling_ = false; | 220 is_scroll_bubbling_ = false; |
| 221 } | 221 } |
| 222 } | 222 } |
| 223 | 223 |
| 224 bool CrossProcessFrameConnector::HasFocus() { | 224 bool CrossProcessFrameConnector::HasFocus() { |
| 225 RenderWidgetHostViewBase* root_view = GetRootRenderWidgetHostView(); | 225 RenderWidgetHostViewBase* root_view = GetRootRenderWidgetHostView(); |
| 226 if (root_view) | 226 if (root_view) |
| 227 return root_view->HasFocus(); | 227 return root_view->HasFocus(); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 256 frame_proxy_in_parent_renderer_->frame_tree_node()->render_manager(); | 256 frame_proxy_in_parent_renderer_->frame_tree_node()->render_manager(); |
| 257 RenderWidgetHostImpl* parent_widget = | 257 RenderWidgetHostImpl* parent_widget = |
| 258 manager->ForInnerDelegate() | 258 manager->ForInnerDelegate() |
| 259 ? manager->GetOuterRenderWidgetHostForKeyboardInput() | 259 ? manager->GetOuterRenderWidgetHostForKeyboardInput() |
| 260 : frame_proxy_in_parent_renderer_->GetRenderViewHost()->GetWidget(); | 260 : frame_proxy_in_parent_renderer_->GetRenderViewHost()->GetWidget(); |
| 261 | 261 |
| 262 // TODO(wjmaclean): We should remove these forwarding functions, since they | 262 // TODO(wjmaclean): We should remove these forwarding functions, since they |
| 263 // are directly target using RenderWidgetHostInputEventRouter. But neither | 263 // are directly target using RenderWidgetHostInputEventRouter. But neither |
| 264 // pathway is currently handling gesture events, so that needs to be fixed | 264 // pathway is currently handling gesture events, so that needs to be fixed |
| 265 // in a subsequent CL. | 265 // in a subsequent CL. |
| 266 if (blink::WebInputEvent::isKeyboardEventType(event->type)) { | 266 if (blink::WebInputEvent::isKeyboardEventType(event->type())) { |
| 267 if (!parent_widget->GetLastKeyboardEvent()) | 267 if (!parent_widget->GetLastKeyboardEvent()) |
| 268 return; | 268 return; |
| 269 NativeWebKeyboardEvent keyboard_event( | 269 NativeWebKeyboardEvent keyboard_event( |
| 270 *parent_widget->GetLastKeyboardEvent()); | 270 *parent_widget->GetLastKeyboardEvent()); |
| 271 view_->ProcessKeyboardEvent(keyboard_event); | 271 view_->ProcessKeyboardEvent(keyboard_event); |
| 272 return; | 272 return; |
| 273 } | 273 } |
| 274 | 274 |
| 275 if (blink::WebInputEvent::isMouseEventType(event->type)) { | 275 if (blink::WebInputEvent::isMouseEventType(event->type())) { |
| 276 // TODO(wjmaclean): Initialize latency info correctly for OOPIFs. | 276 // TODO(wjmaclean): Initialize latency info correctly for OOPIFs. |
| 277 // https://crbug.com/613628 | 277 // https://crbug.com/613628 |
| 278 ui::LatencyInfo latency_info; | 278 ui::LatencyInfo latency_info; |
| 279 view_->ProcessMouseEvent(*static_cast<const blink::WebMouseEvent*>(event), | 279 view_->ProcessMouseEvent(*static_cast<const blink::WebMouseEvent*>(event), |
| 280 latency_info); | 280 latency_info); |
| 281 return; | 281 return; |
| 282 } | 282 } |
| 283 | 283 |
| 284 if (event->type == blink::WebInputEvent::MouseWheel) { | 284 if (event->type() == blink::WebInputEvent::MouseWheel) { |
| 285 // TODO(wjmaclean): Initialize latency info correctly for OOPIFs. | 285 // TODO(wjmaclean): Initialize latency info correctly for OOPIFs. |
| 286 // https://crbug.com/613628 | 286 // https://crbug.com/613628 |
| 287 ui::LatencyInfo latency_info; | 287 ui::LatencyInfo latency_info; |
| 288 view_->ProcessMouseWheelEvent( | 288 view_->ProcessMouseWheelEvent( |
| 289 *static_cast<const blink::WebMouseWheelEvent*>(event), latency_info); | 289 *static_cast<const blink::WebMouseWheelEvent*>(event), latency_info); |
| 290 return; | 290 return; |
| 291 } | 291 } |
| 292 } | 292 } |
| 293 | 293 |
| 294 void CrossProcessFrameConnector::OnFrameRectChanged( | 294 void CrossProcessFrameConnector::OnFrameRectChanged( |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 378 | 378 |
| 379 if (parent) { | 379 if (parent) { |
| 380 return static_cast<RenderWidgetHostViewBase*>( | 380 return static_cast<RenderWidgetHostViewBase*>( |
| 381 parent->current_frame_host()->GetView()); | 381 parent->current_frame_host()->GetView()); |
| 382 } | 382 } |
| 383 | 383 |
| 384 return nullptr; | 384 return nullptr; |
| 385 } | 385 } |
| 386 | 386 |
| 387 } // namespace content | 387 } // namespace content |
| OLD | NEW |