| 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 166 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  177 void CrossProcessFrameConnector::ForwardProcessAckedTouchEvent( |  177 void CrossProcessFrameConnector::ForwardProcessAckedTouchEvent( | 
|  178     const TouchEventWithLatencyInfo& touch, |  178     const TouchEventWithLatencyInfo& touch, | 
|  179     InputEventAckState ack_result) { |  179     InputEventAckState ack_result) { | 
|  180   auto* main_view = GetRootRenderWidgetHostView(); |  180   auto* main_view = GetRootRenderWidgetHostView(); | 
|  181   if (main_view) |  181   if (main_view) | 
|  182     main_view->ProcessAckedTouchEvent(touch, ack_result); |  182     main_view->ProcessAckedTouchEvent(touch, ack_result); | 
|  183 } |  183 } | 
|  184  |  184  | 
|  185 void CrossProcessFrameConnector::BubbleScrollEvent( |  185 void CrossProcessFrameConnector::BubbleScrollEvent( | 
|  186     const blink::WebGestureEvent& event) { |  186     const blink::WebGestureEvent& event) { | 
|  187   DCHECK(event.type == blink::WebInputEvent::GestureScrollUpdate || |  187   DCHECK(event.type() == blink::WebInputEvent::GestureScrollUpdate || | 
|  188          event.type == blink::WebInputEvent::GestureScrollEnd); |  188          event.type() == blink::WebInputEvent::GestureScrollEnd); | 
|  189   auto* parent_view = GetParentRenderWidgetHostView(); |  189   auto* parent_view = GetParentRenderWidgetHostView(); | 
|  190  |  190  | 
|  191   if (!parent_view) |  191   if (!parent_view) | 
|  192     return; |  192     return; | 
|  193  |  193  | 
|  194   auto* event_router = |  194   auto* event_router = | 
|  195       RenderWidgetHostImpl::From(parent_view->GetRenderWidgetHost()) |  195       RenderWidgetHostImpl::From(parent_view->GetRenderWidgetHost()) | 
|  196           ->delegate() |  196           ->delegate() | 
|  197           ->GetInputEventRouter(); |  197           ->GetInputEventRouter(); | 
|  198  |  198  | 
|  199   gfx::Vector2d offset_from_parent = child_frame_rect_.OffsetFromOrigin(); |  199   gfx::Vector2d offset_from_parent = child_frame_rect_.OffsetFromOrigin(); | 
|  200   blink::WebGestureEvent resent_gesture_event(event); |  200   blink::WebGestureEvent resent_gesture_event(event); | 
|  201   // TODO(kenrb, wjmaclean): Do we need to account for transforms here? |  201   // TODO(kenrb, wjmaclean): Do we need to account for transforms here? | 
|  202   // See https://crbug.com/626020. |  202   // See https://crbug.com/626020. | 
|  203   resent_gesture_event.x += offset_from_parent.x(); |  203   resent_gesture_event.x += offset_from_parent.x(); | 
|  204   resent_gesture_event.y += offset_from_parent.y(); |  204   resent_gesture_event.y += offset_from_parent.y(); | 
|  205   if (event.type == blink::WebInputEvent::GestureScrollUpdate) { |  205   if (event.type() == blink::WebInputEvent::GestureScrollUpdate) { | 
|  206     event_router->BubbleScrollEvent(parent_view, resent_gesture_event); |  206     event_router->BubbleScrollEvent(parent_view, resent_gesture_event); | 
|  207     is_scroll_bubbling_ = true; |  207     is_scroll_bubbling_ = true; | 
|  208   } else if (event.type == blink::WebInputEvent::GestureScrollEnd && |  208   } else if (event.type() == blink::WebInputEvent::GestureScrollEnd && | 
|  209              is_scroll_bubbling_) { |  209              is_scroll_bubbling_) { | 
|  210     event_router->BubbleScrollEvent(parent_view, resent_gesture_event); |  210     event_router->BubbleScrollEvent(parent_view, resent_gesture_event); | 
|  211     is_scroll_bubbling_ = false; |  211     is_scroll_bubbling_ = false; | 
|  212   } |  212   } | 
|  213 } |  213 } | 
|  214  |  214  | 
|  215 bool CrossProcessFrameConnector::HasFocus() { |  215 bool CrossProcessFrameConnector::HasFocus() { | 
|  216   RenderWidgetHostViewBase* root_view = GetRootRenderWidgetHostView(); |  216   RenderWidgetHostViewBase* root_view = GetRootRenderWidgetHostView(); | 
|  217   if (root_view) |  217   if (root_view) | 
|  218     return root_view->HasFocus(); |  218     return root_view->HasFocus(); | 
| (...skipping 28 matching lines...) Expand all  Loading... | 
|  247       frame_proxy_in_parent_renderer_->frame_tree_node()->render_manager(); |  247       frame_proxy_in_parent_renderer_->frame_tree_node()->render_manager(); | 
|  248   RenderWidgetHostImpl* parent_widget = |  248   RenderWidgetHostImpl* parent_widget = | 
|  249       manager->ForInnerDelegate() |  249       manager->ForInnerDelegate() | 
|  250           ? manager->GetOuterRenderWidgetHostForKeyboardInput() |  250           ? manager->GetOuterRenderWidgetHostForKeyboardInput() | 
|  251           : frame_proxy_in_parent_renderer_->GetRenderViewHost()->GetWidget(); |  251           : frame_proxy_in_parent_renderer_->GetRenderViewHost()->GetWidget(); | 
|  252  |  252  | 
|  253   // TODO(wjmaclean): We should remove these forwarding functions, since they |  253   // TODO(wjmaclean): We should remove these forwarding functions, since they | 
|  254   // are directly target using RenderWidgetHostInputEventRouter. But neither |  254   // are directly target using RenderWidgetHostInputEventRouter. But neither | 
|  255   // pathway is currently handling gesture events, so that needs to be fixed |  255   // pathway is currently handling gesture events, so that needs to be fixed | 
|  256   // in a subsequent CL. |  256   // in a subsequent CL. | 
|  257   if (blink::WebInputEvent::isKeyboardEventType(event->type)) { |  257   if (blink::WebInputEvent::isKeyboardEventType(event->type())) { | 
|  258     if (!parent_widget->GetLastKeyboardEvent()) |  258     if (!parent_widget->GetLastKeyboardEvent()) | 
|  259       return; |  259       return; | 
|  260     NativeWebKeyboardEvent keyboard_event( |  260     NativeWebKeyboardEvent keyboard_event( | 
|  261         *parent_widget->GetLastKeyboardEvent()); |  261         *parent_widget->GetLastKeyboardEvent()); | 
|  262     view_->ProcessKeyboardEvent(keyboard_event); |  262     view_->ProcessKeyboardEvent(keyboard_event); | 
|  263     return; |  263     return; | 
|  264   } |  264   } | 
|  265  |  265  | 
|  266   if (blink::WebInputEvent::isMouseEventType(event->type)) { |  266   if (blink::WebInputEvent::isMouseEventType(event->type())) { | 
|  267     // TODO(wjmaclean): Initialize latency info correctly for OOPIFs. |  267     // TODO(wjmaclean): Initialize latency info correctly for OOPIFs. | 
|  268     // https://crbug.com/613628 |  268     // https://crbug.com/613628 | 
|  269     ui::LatencyInfo latency_info; |  269     ui::LatencyInfo latency_info; | 
|  270     view_->ProcessMouseEvent(*static_cast<const blink::WebMouseEvent*>(event), |  270     view_->ProcessMouseEvent(*static_cast<const blink::WebMouseEvent*>(event), | 
|  271                               latency_info); |  271                               latency_info); | 
|  272     return; |  272     return; | 
|  273   } |  273   } | 
|  274  |  274  | 
|  275   if (event->type == blink::WebInputEvent::MouseWheel) { |  275   if (event->type() == blink::WebInputEvent::MouseWheel) { | 
|  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_->ProcessMouseWheelEvent( |  279     view_->ProcessMouseWheelEvent( | 
|  280         *static_cast<const blink::WebMouseWheelEvent*>(event), latency_info); |  280         *static_cast<const blink::WebMouseWheelEvent*>(event), latency_info); | 
|  281     return; |  281     return; | 
|  282   } |  282   } | 
|  283 } |  283 } | 
|  284  |  284  | 
|  285 void CrossProcessFrameConnector::OnFrameRectChanged( |  285 void CrossProcessFrameConnector::OnFrameRectChanged( | 
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  369  |  369  | 
|  370   if (parent) { |  370   if (parent) { | 
|  371     return static_cast<RenderWidgetHostViewBase*>( |  371     return static_cast<RenderWidgetHostViewBase*>( | 
|  372         parent->current_frame_host()->GetView()); |  372         parent->current_frame_host()->GetView()); | 
|  373   } |  373   } | 
|  374  |  374  | 
|  375   return nullptr; |  375   return nullptr; | 
|  376 } |  376 } | 
|  377  |  377  | 
|  378 }  // namespace content |  378 }  // namespace content | 
| OLD | NEW |