Home | History | Annotate | Download | only in renderer_host
      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