no route to host Chromium网页输入事件捕捉和手势检测过程分析(19)

电脑杂谈  发布时间:2018-02-16 22:46:44  来源:网络整理

RenderWidgetHostImpl类的成员函数ForwardGestureEventWithLatencyInfo首先将参数gesture_event描写叙述的手势操作封装在一个GestureEventWithLatencyInfo对象中。

RenderWidgetHostImpl类的成员变量input_router_指向的是一个InputRouterImpl对象。这个InputRouterImpl负责将输入事件发送给Render进程。

因此,RenderWidgetHostImpl类的成员函数SendGestureEvent就通过调用这个InputRouterImpl对象的成员函数SendGestureEvent将上述封装了手势操作的GestureEventWithLatencyInfo对象发送给Render进程。

InputRouterImpl类的成员函数SendGestureEvent的实现例如以下所看到的:

void InputRouterImpl::SendGestureEvent(
    const GestureEventWithLatencyInfo& original_gesture_event) {
  ......

  GestureEventWithLatencyInfo gesture_event(original_gesture_event);

  ......

  SendGestureEventImmediately(gesture_event);
}
这个函数定义在文件external/chromium_org/content/browser/renderer_host/input/input_router_impl.cc中。

InputRouterImpl类的成员函数SendGestureEvent主要是调用另外一个成员函数SendGestureEventImmediately将参数original_gesture_event描写叙述的手势操作发送给Render进程,例如以下所看到的:

void InputRouterImpl::SendGestureEventImmediately(
    const GestureEventWithLatencyInfo& gesture_event) {
  ......

  FilterAndSendWebInputEvent(gesture_event.event, gesture_event.latency, false);
}
这个函数定义在文件external/chromium_org/content/browser/renderer_host/input/input_router_impl.cc中。

InputRouterImpl类的成员函数SendGestureEventImmediately又主要是调用另外一个成员函数FilterAndSendWebInputEvent将参数gesture_event描写叙述的手势操作发送给Render进程。例如以下所看到的:

void InputRouterImpl::FilterAndSendWebInputEvent(
    const WebInputEvent& input_event,
    const ui::LatencyInfo& latency_info,
    bool is_keyboard_shortcut) {
  ......

  OfferToHandlers(input_event, latency_info, is_keyboard_shortcut);
}
这个函数定义在文件external/chromium_org/content/browser/renderer_host/input/input_router_impl.cc中。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-81055-19.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 杨世豪
      杨世豪

      #给烊烊520#1128生日评论集体向520万刷起来#护千玺到远方#

    热点图片
    拼命载入中...