diff options
Diffstat (limited to 'WebKit/chromium/public/WebInputEvent.h')
-rw-r--r-- | WebKit/chromium/public/WebInputEvent.h | 312 |
1 files changed, 0 insertions, 312 deletions
diff --git a/WebKit/chromium/public/WebInputEvent.h b/WebKit/chromium/public/WebInputEvent.h deleted file mode 100644 index 581e76c..0000000 --- a/WebKit/chromium/public/WebInputEvent.h +++ /dev/null @@ -1,312 +0,0 @@ -/* - * Copyright (C) 2009 Google Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef WebInputEvent_h -#define WebInputEvent_h - -#include "WebCommon.h" -#include "WebTouchPoint.h" - -#include <string.h> - -namespace WebKit { - -// The classes defined in this file are intended to be used with -// WebWidget's handleInputEvent method. These event types are cross- -// platform and correspond closely to WebCore's Platform*Event classes. -// -// WARNING! These classes must remain PODs (plain old data). They are -// intended to be "serializable" by copying their raw bytes, so they must -// not contain any non-bit-copyable member variables! - -// WebInputEvent -------------------------------------------------------------- - -class WebInputEvent { -public: - WebInputEvent(unsigned sizeParam = sizeof(WebInputEvent)) - : size(sizeParam) - , type(Undefined) - , modifiers(0) - , timeStampSeconds(0.0) { } - - // When we use an input method (or an input method editor), we receive - // two events for a keypress. The former event is a keydown, which - // provides a keycode, and the latter is a textinput, which provides - // a character processed by an input method. (The mapping from a - // keycode to a character code is not trivial for non-English - // keyboards.) - // To support input methods, Safari sends keydown events to WebKit for - // filtering. WebKit sends filtered keydown events back to Safari, - // which sends them to input methods. - // Unfortunately, it is hard to apply this design to Chrome because of - // our multiprocess architecture. An input method is running in a - // browser process. On the other hand, WebKit is running in a renderer - // process. So, this design results in increasing IPC messages. - // To support input methods without increasing IPC messages, Chrome - // handles keyboard events in a browser process and send asynchronous - // input events (to be translated to DOM events) to a renderer - // process. - // This design is mostly the same as the one of Windows and Mac Carbon. - // So, for what it's worth, our Linux and Mac front-ends emulate our - // Windows front-end. To emulate our Windows front-end, we can share - // our back-end code among Windows, Linux, and Mac. - // TODO(hbono): Issue 18064: remove the KeyDown type since it isn't - // used in Chrome any longer. - - enum Type { - Undefined = -1, - - // WebMouseEvent - MouseDown, - MouseUp, - MouseMove, - MouseEnter, - MouseLeave, - ContextMenu, - - // WebMouseWheelEvent - MouseWheel, - - // WebKeyboardEvent - RawKeyDown, - KeyDown, - KeyUp, - Char, - - // WebTouchEvent - TouchStart, - TouchMove, - TouchEnd, - TouchCancel, - }; - - enum Modifiers { - // modifiers for all events: - ShiftKey = 1 << 0, - ControlKey = 1 << 1, - AltKey = 1 << 2, - MetaKey = 1 << 3, - - // modifiers for keyboard events: - IsKeyPad = 1 << 4, - IsAutoRepeat = 1 << 5, - - // modifiers for mouse events: - LeftButtonDown = 1 << 6, - MiddleButtonDown = 1 << 7, - RightButtonDown = 1 << 8, - - // Toggle modifiers for all events. Danger: these are not reflected - // into WebCore, so round-tripping from WebInputEvent to a WebCore - // event and back will not preserve these flags. - CapsLockOn = 1 << 9, - NumLockOn = 1 << 10, - }; - - static const int InputModifiers = ShiftKey | ControlKey | AltKey | MetaKey; - - unsigned size; // The size of this structure, for serialization. - Type type; - int modifiers; - double timeStampSeconds; // Seconds since epoch. - - // Returns true if the WebInputEvent |type| is a mouse event. - static bool isMouseEventType(int type) - { - return type == MouseDown - || type == MouseUp - || type == MouseMove - || type == MouseEnter - || type == MouseLeave - || type == ContextMenu; - } - - // Returns true if the WebInputEvent |type| is a keyboard event. - static bool isKeyboardEventType(int type) - { - return type == RawKeyDown - || type == KeyDown - || type == KeyUp - || type == Char; - } - - // Returns true if the WebInputEvent |type| is a touch event. - static bool isTouchEventType(int type) - { - return type == TouchStart - || type == TouchMove - || type == TouchEnd - || type == TouchCancel; - } -}; - -// WebKeyboardEvent ----------------------------------------------------------- - -class WebKeyboardEvent : public WebInputEvent { -public: - // Caps on string lengths so we can make them static arrays and keep - // them PODs. - static const size_t textLengthCap = 4; - - // http://www.w3.org/TR/DOM-Level-3-Events/keyset.html lists the - // identifiers. The longest is 18 characters, so we round up to the - // next multiple of 4. - static const size_t keyIdentifierLengthCap = 20; - - // |windowsKeyCode| is the Windows key code associated with this key - // event. Sometimes it's direct from the event (i.e. on Windows), - // sometimes it's via a mapping function. If you want a list, see - // WebCore/platform/chromium/KeyboardCodes* . - int windowsKeyCode; - - // The actual key code genenerated by the platform. The DOM spec runs - // on Windows-equivalent codes (thus |windowsKeyCode| above) but it - // doesn't hurt to have this one around. - int nativeKeyCode; - - // |text| is the text generated by this keystroke. |unmodifiedText| is - // |text|, but unmodified by an concurrently-held modifiers (except - // shift). This is useful for working out shortcut keys. Linux and - // Windows guarantee one character per event. The Mac does not, but in - // reality that's all it ever gives. We're generous, and cap it a bit - // longer. - WebUChar text[textLengthCap]; - WebUChar unmodifiedText[textLengthCap]; - - // This is a string identifying the key pressed. - char keyIdentifier[keyIdentifierLengthCap]; - - // This identifies whether this event was tagged by the system as being - // a "system key" event (see - // http://msdn.microsoft.com/en-us/library/ms646286(VS.85).aspx for - // details). Other platforms don't have this concept, but it's just - // easier to leave it always false than ifdef. - // int is used instead of bool to ensure the size of this structure is - // strictly aligned to a factor of 4 bytes, otherwise memory check tools - // like valgrind may complain about uninitialized memory usage when - // transfering it over the wire. - int isSystemKey; - - WebKeyboardEvent(unsigned sizeParam = sizeof(WebKeyboardEvent)) - : WebInputEvent(sizeParam) - , windowsKeyCode(0) - , nativeKeyCode(0) - , isSystemKey(false) - { - memset(&text, 0, sizeof(text)); - memset(&unmodifiedText, 0, sizeof(unmodifiedText)); - memset(&keyIdentifier, 0, sizeof(keyIdentifier)); - } - - // Sets keyIdentifier based on the value of windowsKeyCode. This is - // handy for generating synthetic keyboard events. - WEBKIT_API void setKeyIdentifierFromWindowsKeyCode(); -}; - -// WebMouseEvent -------------------------------------------------------------- - -class WebMouseEvent : public WebInputEvent { -public: - // These values defined for WebCore::MouseButton - enum Button { - ButtonNone = -1, - ButtonLeft, - ButtonMiddle, - ButtonRight - }; - - Button button; - int x; - int y; - int windowX; - int windowY; - int globalX; - int globalY; - int clickCount; - - WebMouseEvent(unsigned sizeParam = sizeof(WebMouseEvent)) - : WebInputEvent(sizeParam) - , button(ButtonNone) - , x(0) - , y(0) - , windowX(0) - , windowY(0) - , globalX(0) - , globalY(0) - , clickCount(0) - { - } -}; - -// WebMouseWheelEvent --------------------------------------------------------- - -class WebMouseWheelEvent : public WebMouseEvent { -public: - float deltaX; - float deltaY; - float wheelTicksX; - float wheelTicksY; - - // int is used instead of bool to ensure the size of this structure is - // strictly aligned to a factor of 4 bytes, otherwise memory check tools - // like valgrind may complain about uninitialized memory usage when - // transfering it over the wire. - int scrollByPage; - - WebMouseWheelEvent(unsigned sizeParam = sizeof(WebMouseWheelEvent)) - : WebMouseEvent(sizeParam) - , deltaX(0.0f) - , deltaY(0.0f) - , wheelTicksX(0.0f) - , wheelTicksY(0.0f) - , scrollByPage(false) - { - } -}; - -// WebTouchEvent -------------------------------------------------------------- - -class WebTouchEvent : public WebInputEvent { -public: - static const int touchPointsLengthCap = 4; - - int touchPointsLength; - WebTouchPoint touchPoints[touchPointsLengthCap]; - - WebTouchEvent(unsigned sizeParam = sizeof(WebTouchEvent)) - : WebInputEvent(sizeParam) - , touchPointsLength(0) - { - } -}; - -} // namespace WebKit - -#endif |