1/* 2 * Copyright (C) 2009 Google Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are 6 * met: 7 * 8 * * Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * * Redistributions in binary form must reproduce the above 11 * copyright notice, this list of conditions and the following disclaimer 12 * in the documentation and/or other materials provided with the 13 * distribution. 14 * * Neither the name of Google Inc. nor the names of its 15 * contributors may be used to endorse or promote products derived from 16 * this software without specific prior written permission. 17 * 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 */ 30 31#ifndef WebInputEventConversion_h 32#define WebInputEventConversion_h 33 34#include "platform/PlatformGestureEvent.h" 35#include "platform/PlatformKeyboardEvent.h" 36#include "platform/PlatformMouseEvent.h" 37#include "platform/PlatformTouchEvent.h" 38#include "platform/PlatformWheelEvent.h" 39#include "public/web/WebInputEvent.h" 40 41namespace blink { 42 43class GestureEvent; 44class KeyboardEvent; 45class MouseEvent; 46class RenderObject; 47class ScrollView; 48class TouchEvent; 49class WebMouseEvent; 50class WebMouseWheelEvent; 51class WebKeyboardEvent; 52class WebTouchEvent; 53class WebGestureEvent; 54class WheelEvent; 55class Widget; 56 57// These classes are used to convert from WebInputEvent subclasses to 58// corresponding WebCore events. 59 60class PlatformMouseEventBuilder : public PlatformMouseEvent { 61public: 62 PlatformMouseEventBuilder(Widget*, const WebMouseEvent&); 63}; 64 65class PlatformWheelEventBuilder : public PlatformWheelEvent { 66public: 67 PlatformWheelEventBuilder(Widget*, const WebMouseWheelEvent&); 68}; 69 70class PlatformGestureEventBuilder : public PlatformGestureEvent { 71public: 72 PlatformGestureEventBuilder(Widget*, const WebGestureEvent&); 73}; 74 75class PlatformKeyboardEventBuilder : public PlatformKeyboardEvent { 76public: 77 PlatformKeyboardEventBuilder(const WebKeyboardEvent&); 78 void setKeyType(Type); 79 bool isCharacterKey() const; 80}; 81 82// Converts a WebTouchPoint to a PlatformTouchPoint. 83class PlatformTouchPointBuilder : public PlatformTouchPoint { 84public: 85 PlatformTouchPointBuilder(Widget*, const WebTouchPoint&); 86}; 87 88// Converts a WebTouchEvent to a PlatformTouchEvent. 89class PlatformTouchEventBuilder : public PlatformTouchEvent { 90public: 91 PlatformTouchEventBuilder(Widget*, const WebTouchEvent&); 92}; 93 94class WebMouseEventBuilder : public WebMouseEvent { 95public: 96 // Converts a MouseEvent to a corresponding WebMouseEvent. 97 // NOTE: This is only implemented for mousemove, mouseover, mouseout, 98 // mousedown and mouseup. If the event mapping fails, the event type will 99 // be set to Undefined. 100 WebMouseEventBuilder(const Widget*, const RenderObject*, const MouseEvent&); 101 WebMouseEventBuilder(const Widget*, const RenderObject*, const TouchEvent&); 102 103 // Converts a PlatformMouseEvent to a corresponding WebMouseEvent. 104 // NOTE: This is only implemented for mousepressed, mousereleased, and 105 // mousemoved. If the event mapping fails, the event type will be set to 106 // Undefined. 107 WebMouseEventBuilder(const Widget*, const PlatformMouseEvent&); 108}; 109 110// Converts a WheelEvent to a corresponding WebMouseWheelEvent. 111// If the event mapping fails, the event type will be set to Undefined. 112class WebMouseWheelEventBuilder : public WebMouseWheelEvent { 113public: 114 WebMouseWheelEventBuilder(const Widget*, const RenderObject*, const WheelEvent&); 115}; 116 117// Converts a KeyboardEvent or PlatformKeyboardEvent to a 118// corresponding WebKeyboardEvent. 119// NOTE: For KeyboardEvent, this is only implemented for keydown, 120// keyup, and keypress. If the event mapping fails, the event type will be set 121// to Undefined. 122class WebKeyboardEventBuilder : public WebKeyboardEvent { 123public: 124 WebKeyboardEventBuilder(const KeyboardEvent&); 125 WebKeyboardEventBuilder(const PlatformKeyboardEvent&); 126}; 127 128// Converts a TouchEvent to a corresponding WebTouchEvent. 129// NOTE: WebTouchEvents have a cap on the number of WebTouchPoints. Any points 130// exceeding that cap will be dropped. 131class WebTouchEventBuilder : public WebTouchEvent { 132public: 133 WebTouchEventBuilder(const Widget*, const RenderObject*, const TouchEvent&); 134}; 135 136// Converts GestureEvent to a corresponding WebGestureEvent. 137// NOTE: If event mapping fails, the type will be set to Undefined. 138class WebGestureEventBuilder : public WebGestureEvent { 139public: 140 WebGestureEventBuilder(const Widget*, const RenderObject*, const GestureEvent&); 141}; 142 143} // namespace blink 144 145#endif 146