1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CONTENT_BROWSER_RENDERER_HOST_UI_EVENTS_HELPER_H_ 6 #define CONTENT_BROWSER_RENDERER_HOST_UI_EVENTS_HELPER_H_ 7 8 #include "base/memory/scoped_vector.h" 9 #include "content/browser/renderer_host/event_with_latency_info.h" 10 #include "content/common/content_export.h" 11 12 namespace blink { 13 class WebGestureEvent; 14 class WebTouchEvent; 15 class WebTouchPoint; 16 } 17 18 namespace ui { 19 class GestureEvent; 20 class TouchEvent; 21 } 22 23 namespace content { 24 25 enum TouchEventCoordinateSystem { 26 SCREEN_COORDINATES, 27 LOCAL_COORDINATES 28 }; 29 30 // Creates a list of ui::TouchEvents out of a single WebTouchEvent. 31 // A WebTouchEvent can contain information about a number of WebTouchPoints, 32 // whereas a ui::TouchEvent contains information about a single touch-point. So 33 // it is possible to create more than one ui::TouchEvents out of a single 34 // WebTouchEvent. All the ui::TouchEvent in the list will carry the same 35 // LatencyInfo the WebTouchEvent carries. 36 // |coordinate_system| specifies which fields to use for the co-ordinates, 37 // WebTouchPoint.position or WebTouchPoint.screenPosition. Is's up to the 38 // caller to do any co-ordinate system mapping (typically to get them into 39 // the Aura EventDispatcher co-ordinate system). 40 CONTENT_EXPORT bool MakeUITouchEventsFromWebTouchEvents( 41 const TouchEventWithLatencyInfo& touch, 42 ScopedVector<ui::TouchEvent>* list, 43 TouchEventCoordinateSystem coordinate_system); 44 45 // Creates a WebGestureEvent from a ui::GestureEvent. Note that it does not 46 // populate the event coordinates (i.e. |x|, |y|, |globalX|, and |globalY|). So 47 // the caller must populate these fields. 48 blink::WebGestureEvent MakeWebGestureEventFromUIEvent( 49 const ui::GestureEvent& event); 50 51 int EventFlagsToWebEventModifiers(int flags); 52 53 // Updates the WebTouchEvent based on the TouchEvent. It returns the updated 54 // WebTouchPoint contained in the WebTouchEvent, or NULL if no point was 55 // updated. 56 blink::WebTouchPoint* UpdateWebTouchEventFromUIEvent( 57 const ui::TouchEvent& event, 58 blink::WebTouchEvent* web_event); 59 } 60 61 #endif // CONTENT_BROWSER_RENDERER_HOST_UI_EVENTS_HELPER_H_ 62