18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 22fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * Copyright (C) 2006, 2007, 2009, 2010, 2011 Apple Inc. All rights reserved. 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef EventHandler_h 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define EventHandler_h 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "DragActions.h" 30dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include "FocusDirection.h" 31967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch#include "HitTestRequest.h" 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "PlatformMouseEvent.h" 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "ScrollTypes.h" 34ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch#include "TextEventInputType.h" 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Timer.h" 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/Forward.h> 372bde8e466a4451c7319e3a072d118917957d6554Steve Block#include <wtf/OwnPtr.h> 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/RefPtr.h> 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 405e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block#if PLATFORM(MAC) && !defined(__OBJC__) 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass NSView; 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 44cd97be1e939c83f2a837fa63c24d06231a0097d9Ben Murdoch#if ENABLE(TOUCH_EVENTS) 45885493cb204540cc0d918892ef5d4ba2b8285766Ben Murdoch#include <wtf/HashMap.h> 46885493cb204540cc0d918892ef5d4ba2b8285766Ben Murdoch#endif 47885493cb204540cc0d918892ef5d4ba2b8285766Ben Murdoch 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass Clipboard; 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass Cursor; 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass Event; 53885493cb204540cc0d918892ef5d4ba2b8285766Ben Murdochclass EventTarget; 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass FloatPoint; 55dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockclass FloatQuad; 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass Frame; 572fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockclass HTMLFrameSetElement; 588f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qianclass HitTestRequest; 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass HitTestResult; 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass KeyboardEvent; 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass MouseEventWithHitTestResults; 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass Node; 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass PlatformKeyboardEvent; 64f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdochclass PlatformTouchEvent; 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass PlatformWheelEvent; 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass RenderLayer; 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass RenderObject; 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass RenderWidget; 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass SVGElementInstance; 702fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockclass Scrollbar; 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass TextEvent; 72f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdochclass TouchEvent; 73dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockclass WheelEvent; 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass Widget; 752fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 762fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(GESTURE_EVENTS) 772fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockclass PlatformGestureEvent; 782fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif 792fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 802bde8e466a4451c7319e3a072d118917957d6554Steve Block#if ENABLE(GESTURE_RECOGNIZER) 812bde8e466a4451c7319e3a072d118917957d6554Steve Blockclass PlatformGestureRecognizer; 822bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif 832bde8e466a4451c7319e3a072d118917957d6554Steve Block 84231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(DRAG_SUPPORT) 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern const int LinkDragHysteresis; 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern const int ImageDragHysteresis; 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern const int TextDragHysteresis; 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern const int GeneralDragHysteresis; 89231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif // ENABLE(DRAG_SUPPORT) 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochenum HitTestScrollbars { ShouldHitTestScrollbars, DontHitTestScrollbars }; 920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 93ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochclass EventHandler { 94ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch WTF_MAKE_NONCOPYABLE(EventHandler); 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic: 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project EventHandler(Frame*); 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ~EventHandler(); 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void clear(); 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 101231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(DRAG_SUPPORT) 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void updateSelectionForMouseDrag(); 103231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Node* mousePressNode() const; 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setMousePressNode(PassRefPtr<Node>); 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 108d0825bca7fe65beaee391d30da42e937db621564Steve Block void startPanScrolling(RenderObject*); 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool panScrollInProgress() { return m_panScrollInProgress; } 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setPanScrollInProgress(bool inProgress) { m_panScrollInProgress = inProgress; } 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void stopAutoscrollTimer(bool rendererIsBeingDestroyed = false); 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RenderObject* autoscrollRenderer() const; 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void updateAutoscrollRenderer(); 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1162fc2651226baac27029e38c9d6ef883fa32084dbSteve Block void dispatchFakeMouseMoveEventSoon(); 117dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void dispatchFakeMouseMoveEventSoonInQuad(const FloatQuad&); 118dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 119db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block HitTestResult hitTestResultAtPoint(const IntPoint&, bool allowShadowContent, bool ignoreClipping = false, 120db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block HitTestScrollbars scrollbars = DontHitTestScrollbars, 121db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block HitTestRequest::HitTestRequestType hitType = HitTestRequest::ReadOnly | HitTestRequest::Active, 122db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block const IntSize& padding = IntSize()); 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool mousePressed() const { return m_mousePressed; } 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setMousePressed(bool pressed) { m_mousePressed = pressed; } 1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1275af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke void setCapturingMouseEventsNode(PassRefPtr<Node>); // A caller is responsible for resetting capturing node to 0. 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 129231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(DRAG_SUPPORT) 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool updateDragAndDrop(const PlatformMouseEvent&, Clipboard*); 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void cancelDragAndDrop(const PlatformMouseEvent&, Clipboard*); 1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool performDragAndDrop(const PlatformMouseEvent&, Clipboard*); 133231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void scheduleHoverStateUpdate(); 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setResizingFrameSet(HTMLFrameSetElement*); 1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void resizeLayerDestroyed(); 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project IntPoint currentMousePosition() const; 1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setIgnoreWheelEvents(bool); 1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 145231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block static Frame* subframeForTargetNode(Node*); 1462daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch static Frame* subframeForHitTestResult(const MouseEventWithHitTestResults&); 147231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 1485af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke bool scrollOverflow(ScrollDirection, ScrollGranularity, Node* startingNode = 0); 149f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch bool logicalScrollOverflow(ScrollLogicalDirection, ScrollGranularity, Node* startingNode = 0); 1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1515af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke bool scrollRecursively(ScrollDirection, ScrollGranularity, Node* startingNode = 0); 152f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch bool logicalScrollRecursively(ScrollLogicalDirection, ScrollGranularity, Node* startingNode = 0); 1530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 154231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(DRAG_SUPPORT) 1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool shouldDragAutoNode(Node*, const IntPoint&) const; // -webkit-user-drag == auto 156231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 157231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 158231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block bool shouldTurnVerticalTicksIntoHorizontal(const HitTestResult&) const; 1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool tabsToLinks(KeyboardEvent*) const; 16181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch bool tabsToAllFormControls(KeyboardEvent*) const; 1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool mouseDownMayStartSelect() const { return m_mouseDownMayStartSelect; } 1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool mouseMoved(const PlatformMouseEvent&); 1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 16721939df44de1705786c545cd1bf519d47250322dBen Murdoch void lostMouseCapture(); 16821939df44de1705786c545cd1bf519d47250322dBen Murdoch 1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool handleMousePressEvent(const PlatformMouseEvent&); 1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool handleMouseMoveEvent(const PlatformMouseEvent&, HitTestResult* hoveredNode = 0); 1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool handleMouseReleaseEvent(const PlatformMouseEvent&); 1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool handleWheelEvent(PlatformWheelEvent&); 173dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void defaultWheelEventHandler(Node*, WheelEvent*); 1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1752fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(GESTURE_EVENTS) 1762fc2651226baac27029e38c9d6ef883fa32084dbSteve Block bool handleGestureEvent(const PlatformGestureEvent&); 1772fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif 1782fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 179231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(CONTEXT_MENUS) 1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool sendContextMenuEvent(const PlatformMouseEvent&); 181ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block bool sendContextMenuEventForKey(); 182231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setMouseDownMayStartAutoscroll() { m_mouseDownMayStartAutoscroll = true; } 1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool needsKeyboardEventDisambiguationQuirks() const; 1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 188635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project static unsigned accessKeyModifiers(); 1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool handleAccessKey(const PlatformKeyboardEvent&); 1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool keyEvent(const PlatformKeyboardEvent&); 1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void defaultKeyboardEventHandler(KeyboardEvent*); 1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 193ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch bool handleTextInputEvent(const String& text, Event* underlyingEvent = 0, TextEventInputType = TextEventInputKeyboard); 1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void defaultTextInputEventHandler(TextEvent*); 1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 196231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(DRAG_SUPPORT) 1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool eventMayStartDrag(const PlatformMouseEvent&) const; 1988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void dragSourceEndedAt(const PlatformMouseEvent&, DragOperation); 200231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void focusDocumentView(); 2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void capsLockStateMayHaveChanged(); 2058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2068f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian void sendResizeEvent(); 2078f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian void sendScrollEvent(); 2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2095e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block#if PLATFORM(MAC) && defined(__OBJC__) 2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PassRefPtr<KeyboardEvent> currentKeyboardEvent() const; 2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2125f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void mouseDown(NSEvent *); 2135f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void mouseDragged(NSEvent *); 2145f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void mouseUp(NSEvent *); 2155f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void mouseMoved(NSEvent *); 2165f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian bool keyEvent(NSEvent *); 2175f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian bool wheelEvent(NSEvent *); 2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 219231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(CONTEXT_MENUS) 2205f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian bool sendContextMenuEvent(NSEvent *); 221231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 2225f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian bool eventMayStartDrag(NSEvent *); 2235f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 2245f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void sendFakeEventsAfterWidgetTracking(NSEvent *initiatingEvent); 2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setActivationEventNumber(int num) { m_activationEventNumber = num; } 2278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2285f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian static NSEvent *currentNSEvent(); 2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 231f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch#if ENABLE(TOUCH_EVENTS) 232f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch bool handleTouchEvent(const PlatformTouchEvent&); 2336fbaea61d241814b015fd7e022796e68d8ef3e8eBen Murdoch#if PLATFORM(ANDROID) 2346fbaea61d241814b015fd7e022796e68d8ef3e8eBen Murdoch void setCapturingTouchEventsNode(PassRefPtr<Node>); 2356fbaea61d241814b015fd7e022796e68d8ef3e8eBen Murdoch#endif 236f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch#endif 237f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch 23881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch static bool isKeyboardOptionTab(KeyboardEvent*); 23981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 2408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprivate: 241231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(DRAG_SUPPORT) 242643ca7872b450ea4efacab6188849e5aac2ba161Steve Block enum DragAndDropHandleType { 243643ca7872b450ea4efacab6188849e5aac2ba161Steve Block UpdateDragAndDrop, 244643ca7872b450ea4efacab6188849e5aac2ba161Steve Block CancelDragAndDrop, 245643ca7872b450ea4efacab6188849e5aac2ba161Steve Block PerformDragAndDrop 246643ca7872b450ea4efacab6188849e5aac2ba161Steve Block }; 247643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 248ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch struct EventHandlerDragState { 249ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch WTF_MAKE_NONCOPYABLE(EventHandlerDragState); WTF_MAKE_FAST_ALLOCATED; 250ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch public: 251ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch EventHandlerDragState() { } 2528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RefPtr<Node> m_dragSrc; // element that may be a drag source, for the current mouse gesture 2538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_dragSrcIsLink; 2548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_dragSrcIsImage; 2558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_dragSrcInSelection; 2568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_dragSrcMayBeDHTML; 2578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_dragSrcMayBeUA; // Are DHTML and/or the UserAgent allowed to drag out? 2588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_dragSrcIsDHTML; 2598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RefPtr<Clipboard> m_dragClipboard; // used on only the source side of dragging 2608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }; 2618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static EventHandlerDragState& dragState(); 2628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static const double TextDragDelay; 263643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 264643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool canHandleDragAndDropForTarget(DragAndDropHandleType, Node* target, const PlatformMouseEvent&, Clipboard*, bool* accepted = 0); 2658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PassRefPtr<Clipboard> createDraggingClipboard() const; 267231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif // ENABLE(DRAG_SUPPORT) 2682daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 2698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool eventActivatedView(const PlatformMouseEvent&) const; 2705f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void selectClosestWordFromMouseEvent(const MouseEventWithHitTestResults&); 2715f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void selectClosestWordOrLinkFromMouseEvent(const MouseEventWithHitTestResults&); 2728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool handleMouseDoubleClickEvent(const PlatformMouseEvent&); 2748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2752daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch static Node* targetNode(const MouseEventWithHitTestResults&); 2762daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch static Node* targetNode(const HitTestResult&); 2772daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 2788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool handleMousePressEvent(const MouseEventWithHitTestResults&); 2798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool handleMousePressEventSingleClick(const MouseEventWithHitTestResults&); 2808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool handleMousePressEventDoubleClick(const MouseEventWithHitTestResults&); 2818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool handleMousePressEventTripleClick(const MouseEventWithHitTestResults&); 282231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(DRAG_SUPPORT) 2838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool handleMouseDraggedEvent(const MouseEventWithHitTestResults&); 284231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 2858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool handleMouseReleaseEvent(const MouseEventWithHitTestResults&); 2868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void handleKeyboardSelectionMovement(KeyboardEvent*); 2888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Cursor selectCursor(const MouseEventWithHitTestResults&, Scrollbar*); 2908f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#if ENABLE(PAN_SCROLLING) 2910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void updatePanScrollState(); 2928f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#endif 2938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void hoverTimerFired(Timer<EventHandler>*); 2958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static bool canMouseDownStartSelect(Node*); 297231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(DRAG_SUPPORT) 2988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static bool canMouseDragExtendSelect(Node*); 299231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 3008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void handleAutoscroll(RenderObject*); 3028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void startAutoscrollTimer(); 3038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setAutoscrollRenderer(RenderObject*); 3048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void autoscrollTimerFired(Timer<EventHandler>*); 3058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 306dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void fakeMouseMoveEventTimerFired(Timer<EventHandler>*); 307dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void cancelFakeMouseMoveEvent(); 308dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 3098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void invalidateClick(); 3108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Node* nodeUnderMouse() const; 3128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void updateMouseEventTargetNode(Node*, const PlatformMouseEvent&, bool fireMouseOverOut); 3148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void fireMouseOverOut(bool fireMouseOver = true, bool fireMouseOut = true, bool updateLastNodeUnderMouse = true); 3158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project MouseEventWithHitTestResults prepareMouseEvent(const HitTestRequest&, const PlatformMouseEvent&); 3178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool dispatchMouseEvent(const AtomicString& eventType, Node* target, bool cancelable, int clickCount, const PlatformMouseEvent&, bool setUnder); 319231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(DRAG_SUPPORT) 3208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool dispatchDragEvent(const AtomicString& eventType, Node* target, const PlatformMouseEvent&, Clipboard*); 3218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void freeClipboard(); 3238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool handleDrag(const MouseEventWithHitTestResults&); 325231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 3268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool handleMouseUp(const MouseEventWithHitTestResults&); 327231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(DRAG_SUPPORT) 3288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void clearDragState(); 3298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool dispatchDragSrcEvent(const AtomicString& eventType, const PlatformMouseEvent&); 3318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool dragHysteresisExceeded(const FloatPoint&) const; 3338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool dragHysteresisExceeded(const IntPoint&) const; 334231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif // ENABLE(DRAG_SUPPORT) 3358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool passMousePressEventToSubframe(MouseEventWithHitTestResults&, Frame* subframe); 3378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool passMouseMoveEventToSubframe(MouseEventWithHitTestResults&, Frame* subframe, HitTestResult* hoveredNode = 0); 3388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool passMouseReleaseEventToSubframe(MouseEventWithHitTestResults&, Frame* subframe); 3398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool passSubframeEventToSubframe(MouseEventWithHitTestResults&, Frame* subframe, HitTestResult* hoveredNode = 0); 3418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool passMousePressEventToScrollbar(MouseEventWithHitTestResults&, Scrollbar*); 3438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool passWidgetMouseDownEventToWidget(const MouseEventWithHitTestResults&); 3458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool passWidgetMouseDownEventToWidget(RenderWidget*); 3468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool passMouseDownEventToWidget(Widget*); 3488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool passWheelEventToWidget(PlatformWheelEvent&, Widget*); 3498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 350635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project void defaultSpaceEventHandler(KeyboardEvent*); 3512daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void defaultBackspaceEventHandler(KeyboardEvent*); 3528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void defaultTabEventHandler(KeyboardEvent*); 353dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void defaultArrowEventHandler(FocusDirection, KeyboardEvent*); 3548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 355231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(DRAG_SUPPORT) 3568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void allowDHTMLDrag(bool& flagDHTML, bool& flagUA) const; 357231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 3588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // The following are called at the beginning of handleMouseUp and handleDrag. 3608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // If they return true it indicates that they have consumed the event. 3618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool eventLoopHandleMouseUp(const MouseEventWithHitTestResults&); 362231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(DRAG_SUPPORT) 3638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool eventLoopHandleMouseDragged(const MouseEventWithHitTestResults&); 364231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 3658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 366231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(DRAG_SUPPORT) 3672daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void updateSelectionForMouseDrag(const HitTestResult&); 368231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 3698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void updateLastScrollbarUnderMouse(Scrollbar*, bool); 371231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 372231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block void setFrameWasScrolledByUser(); 3730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 374dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block FocusDirection focusDirectionForKey(const AtomicString&) const; 375dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 3768f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian bool capturesDragging() const { return m_capturesDragging; } 3778f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 37821939df44de1705786c545cd1bf519d47250322dBen Murdoch#if PLATFORM(MAC) && defined(__OBJC__) 3795f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian NSView *mouseDownViewIfStillGood(); 3805f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 3815f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian PlatformMouseEvent currentPlatformMouseEvent() const; 3825f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#endif 3835f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 3848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Frame* m_frame; 3858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_mousePressed; 3878f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian bool m_capturesDragging; 3888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RefPtr<Node> m_mousePressNode; 3898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_mouseDownMayStartSelect; 391231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(DRAG_SUPPORT) 3928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_mouseDownMayStartDrag; 393231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 3948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_mouseDownWasSingleClickInSelection; 3958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_beganSelectingText; 3968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 397231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(DRAG_SUPPORT) 3988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project IntPoint m_dragStartPos; 399231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 4008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project IntPoint m_panScrollStartPos; 4028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_panScrollInProgress; 4038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch bool m_panScrollButtonPressed; 4050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch bool m_springLoadedPanScrollInProgress; 4060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Timer<EventHandler> m_hoverTimer; 4088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Timer<EventHandler> m_autoscrollTimer; 4108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RenderObject* m_autoscrollRenderer; 4118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_autoscrollInProgress; 4128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_mouseDownMayStartAutoscroll; 4138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_mouseDownWasInSubframe; 4145f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 415dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block Timer<EventHandler> m_fakeMouseMoveEventTimer; 416dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 4178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG) 4188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_svgPan; 4198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RefPtr<SVGElementInstance> m_instanceUnderMouse; 4208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RefPtr<SVGElementInstance> m_lastInstanceUnderMouse; 4218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 4228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RenderLayer* m_resizeLayer; 4248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RefPtr<Node> m_capturingMouseEventsNode; 4265af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke bool m_eventHandlerWillResetCapturingMouseEventsNode; 4278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RefPtr<Node> m_nodeUnderMouse; 4298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RefPtr<Node> m_lastNodeUnderMouse; 4308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RefPtr<Frame> m_lastMouseMoveEventSubframe; 4318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RefPtr<Scrollbar> m_lastScrollbarUnderMouse; 4328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int m_clickCount; 4348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RefPtr<Node> m_clickNode; 4358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 436231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(DRAG_SUPPORT) 4378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RefPtr<Node> m_dragTarget; 438643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool m_shouldOnlyFireDragOverEvent; 439231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 4408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RefPtr<HTMLFrameSetElement> m_frameSetBeingResized; 4428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 443635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project IntSize m_offsetFromResizeCorner; // in the coords of m_resizeLayer 4448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project IntPoint m_currentMousePosition; 4468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project IntPoint m_mouseDownPos; // in our view's coords 4478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project double m_mouseDownTimestamp; 4488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PlatformMouseEvent m_mouseDown; 4498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch bool m_useLatchedWheelEventNode; 4510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch RefPtr<Node> m_latchedWheelEventNode; 4520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch bool m_widgetIsLatched; 453231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 454231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block RefPtr<Node> m_previousWheelScrolledNode; 455231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 4565e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block#if PLATFORM(MAC) 4578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project NSView *m_mouseDownView; 4588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_sendingEventToSubview; 4598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int m_activationEventNumber; 4608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 461f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch#if ENABLE(TOUCH_EVENTS) 462885493cb204540cc0d918892ef5d4ba2b8285766Ben Murdoch typedef HashMap<int, RefPtr<EventTarget> > TouchTargetMap; 463885493cb204540cc0d918892ef5d4ba2b8285766Ben Murdoch TouchTargetMap m_originatingTouchPointTargets; 464967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch bool m_touchPressed; 4656fbaea61d241814b015fd7e022796e68d8ef3e8eBen Murdoch#if PLATFORM(ANDROID) 4666fbaea61d241814b015fd7e022796e68d8ef3e8eBen Murdoch RefPtr<Node> m_capturingTouchEventsNode; 4676fbaea61d241814b015fd7e022796e68d8ef3e8eBen Murdoch#endif 468f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch#endif 4692bde8e466a4451c7319e3a072d118917957d6554Steve Block#if ENABLE(GESTURE_RECOGNIZER) 4702bde8e466a4451c7319e3a072d118917957d6554Steve Block OwnPtr<PlatformGestureRecognizer> m_gestureRecognizer; 4712bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif 4728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 4738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore 4758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // EventHandler_h 477