最近研究了一下Chromium在android平台下的事件响应,总结一下。
事件分为:MouseEvent, MouseWheelEvent,KeyboardEvent,GestureEvent,TouchEvent。
从app层传到WebCore,经历以下几个阶段:
(1) app层将用户输入事件封装为WebInputEvent,传递给WebKit。例如点击事件的调用过程:WebViewCore.nativeSingleTap->WebViewCoreImpl::SingleTap。在WebViewCoreImpl::SingleTap中将app事件封装为WebGestureEvent。
WebGestureEvent为WebKit概念,继承自WebInputEvent。
(2) WebKit将WebInputEvent封装为PlatformEvent。
(3) EventHandler将PlatformEvent分发给处于焦点中的Node。
(4) Node将PlatformEvent封装成Event,交给EventDispatcher处理。
(5) 由EventDispatcher决定最终将Event交给谁处理。