15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2006, 2007, 2009, 2010, 2011 Apple Inc. All rights reserved.
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * are met:
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1. Redistributions of source code must retain the above copyright
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *    notice, this list of conditions and the following disclaimer.
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2. Redistributions in binary form must reproduce the above copyright
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *    notice, this list of conditions and the following disclaimer in the
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *    documentation and/or other materials provided with the distribution.
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2302772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef EventHandler_h
275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define EventHandler_h
285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/dom/TextEventInputType.h"
3053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/dom/UserGestureIndicator.h"
3153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/editing/TextGranularity.h"
3253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/page/DragActions.h"
3353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/page/FocusDirection.h"
3453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/platform/Cursor.h"
3553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/platform/PlatformMouseEvent.h"
3653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/platform/ScrollTypes.h"
3753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/platform/Timer.h"
3853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/platform/graphics/LayoutPoint.h"
3953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/rendering/HitTestRequest.h"
40591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "wtf/Forward.h"
41591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "wtf/HashMap.h"
42591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "wtf/RefPtr.h"
435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)namespace WebCore {
455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class Clipboard;
47926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)class Document;
48926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)class Element;
495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class Event;
505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class EventTarget;
515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class FloatPoint;
525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class FloatQuad;
53f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)class FullscreenElementStack;
545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class Frame;
555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class HTMLFrameSetElement;
565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class HitTestRequest;
575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class HitTestResult;
585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class KeyboardEvent;
595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class MouseEventWithHitTestResults;
605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class Node;
615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class OptionalCursor;
6253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)class PlatformGestureEvent;
635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class PlatformKeyboardEvent;
645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class PlatformTouchEvent;
655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class PlatformWheelEvent;
665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class RenderLayer;
675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class RenderObject;
685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class RenderWidget;
695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class SVGElementInstance;
705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class Scrollbar;
715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class TextEvent;
725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class TouchEvent;
735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class VisibleSelection;
745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class WheelEvent;
755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class Widget;
765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
77926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)struct DragState;
78926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)extern const int LinkDragHysteresis;
805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)extern const int ImageDragHysteresis;
815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)extern const int TextDragHysteresis;
825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)extern const int GeneralDragHysteresis;
835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)enum AppendTrailingWhitespace { ShouldAppendTrailingWhitespace, DontAppendTrailingWhitespace };
85926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)enum CheckDragHysteresis { ShouldCheckDragHysteresis, DontCheckDragHysteresis };
865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class EventHandler {
885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    WTF_MAKE_NONCOPYABLE(EventHandler);
895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public:
905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    explicit EventHandler(Frame*);
915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    ~EventHandler();
925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void clear();
945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void nodeWillBeRemoved(Node*);
955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void updateSelectionForMouseDrag();
975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    Node* mousePressNode() const;
995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void setMousePressNode(PassRefPtr<Node>);
1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
101e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch#if OS(WINDOWS)
1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void startPanScrolling(RenderObject*);
103926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#endif
1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1055267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    void stopAutoscrollTimer();
106926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    bool mouseDownWasInSubframe() const { return m_mouseDownWasInSubframe; }
1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void dispatchFakeMouseMoveEventSoon();
1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void dispatchFakeMouseMoveEventSoonInQuad(const FloatQuad&);
1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
111926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    HitTestResult hitTestResultAtPoint(const LayoutPoint&,
112591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch        HitTestRequest::HitTestRequestType hitType = HitTestRequest::ReadOnly | HitTestRequest::Active,
11353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)        const LayoutSize& padding = LayoutSize());
1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool mousePressed() const { return m_mousePressed; }
1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void setMousePressed(bool pressed) { m_mousePressed = pressed; }
1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void setCapturingMouseEventsNode(PassRefPtr<Node>); // A caller is responsible for resetting capturing node to 0.
1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool updateDragAndDrop(const PlatformMouseEvent&, Clipboard*);
1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void cancelDragAndDrop(const PlatformMouseEvent&, Clipboard*);
1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool performDragAndDrop(const PlatformMouseEvent&, Clipboard*);
1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void updateDragStateAfterEditDragIfNeeded(Element* rootEditableElement);
1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void scheduleHoverStateUpdate();
1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void setResizingFrameSet(HTMLFrameSetElement*);
1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void resizeLayerDestroyed();
1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
131926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    IntPoint lastKnownMousePosition() const;
132926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    Cursor currentMouseCursor() const { return m_currentMouseCursor; }
1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    static Frame* subframeForTargetNode(Node*);
1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    static Frame* subframeForHitTestResult(const MouseEventWithHitTestResults&);
1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool scrollOverflow(ScrollDirection, ScrollGranularity, Node* startingNode = 0);
1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool scrollRecursively(ScrollDirection, ScrollGranularity, Node* startingNode = 0);
1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool logicalScrollRecursively(ScrollLogicalDirection, ScrollGranularity, Node* startingNode = 0);
1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool mouseMoved(const PlatformMouseEvent&);
1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void lostMouseCapture();
1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool handleMousePressEvent(const PlatformMouseEvent&);
14649bab615b8da6265d736fdeeaa328a3ce5c7e155Torne (Richard Coles)    bool handleMouseMoveEvent(const PlatformMouseEvent&, HitTestResult* hoveredNode = 0, bool onlyUpdateScrollbars = false);
1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool handleMouseReleaseEvent(const PlatformMouseEvent&);
1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool handleWheelEvent(const PlatformWheelEvent&);
1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void defaultWheelEventHandler(Node*, WheelEvent*);
1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool handlePasteGlobalSelection(const PlatformMouseEvent&);
1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool handleGestureEvent(const PlatformGestureEvent&);
1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool handleGestureTap(const PlatformGestureEvent&);
1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool handleGestureLongPress(const PlatformGestureEvent&);
155926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    bool handleGestureLongTap(const PlatformGestureEvent&);
1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool handleGestureTwoFingerTap(const PlatformGestureEvent&);
1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool handleGestureScrollUpdate(const PlatformGestureEvent&);
158926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    bool handleGestureScrollBegin(const PlatformGestureEvent&);
15953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    bool handleGestureScrollEnd(const PlatformGestureEvent&);
160926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    void clearGestureScrollNodes();
161926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    bool isScrollbarHandlingGestures() const;
1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
163926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    bool shouldApplyTouchAdjustment(const PlatformGestureEvent&) const;
164926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool bestClickableNodeForTouchPoint(const IntPoint& touchCenter, const IntSize& touchRadius, IntPoint& targetPoint, Node*& targetNode);
1665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool bestContextMenuNodeForTouchPoint(const IntPoint& touchCenter, const IntSize& touchRadius, IntPoint& targetPoint, Node*& targetNode);
1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool bestZoomableAreaForTouchPoint(const IntPoint& touchCenter, const IntSize& touchRadius, IntRect& targetArea, Node*& targetNode);
1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool adjustGesturePosition(const PlatformGestureEvent&, IntPoint& adjustedPoint);
1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool sendContextMenuEvent(const PlatformMouseEvent&);
1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool sendContextMenuEventForKey();
1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool sendContextMenuEventForGesture(const PlatformGestureEvent&);
1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void setMouseDownMayStartAutoscroll() { m_mouseDownMayStartAutoscroll = true; }
1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    static unsigned accessKeyModifiers();
1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool handleAccessKey(const PlatformKeyboardEvent&);
1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool keyEvent(const PlatformKeyboardEvent&);
1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void defaultKeyboardEventHandler(KeyboardEvent*);
1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool handleTextInputEvent(const String& text, Event* underlyingEvent = 0, TextEventInputType = TextEventInputKeyboard);
1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void defaultTextInputEventHandler(TextEvent*);
1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void dragSourceEndedAt(const PlatformMouseEvent&, DragOperation);
1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void focusDocumentView();
1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void capsLockStateMayHaveChanged(); // Only called by FrameSelection
19053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void sendResizeEvent(); // Only called in FrameView
1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void sendScrollEvent(); // Ditto
1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool handleTouchEvent(const PlatformTouchEvent&);
1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool useHandCursor(Node*, bool isOverLink, bool shiftKey);
1975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)private:
1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    static DragState& dragState();
2005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    static const double TextDragDelay;
20102772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch
2025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PassRefPtr<Clipboard> createDraggingClipboard() const;
2035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool updateSelectionForMouseDownDispatchingSelectStart(Node*, const VisibleSelection&, TextGranularity);
2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void selectClosestWordFromHitTestResult(const HitTestResult&, AppendTrailingWhitespace);
2065267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    void selectClosestMisspellingFromHitTestResult(const HitTestResult&, AppendTrailingWhitespace);
2075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void selectClosestWordFromMouseEvent(const MouseEventWithHitTestResults&);
2085267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    void selectClosestMisspellingFromMouseEvent(const MouseEventWithHitTestResults&);
2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void selectClosestWordOrLinkFromMouseEvent(const MouseEventWithHitTestResults&);
2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool handleMousePressEvent(const MouseEventWithHitTestResults&);
2125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool handleMousePressEventSingleClick(const MouseEventWithHitTestResults&);
2135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool handleMousePressEventDoubleClick(const MouseEventWithHitTestResults&);
2145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool handleMousePressEventTripleClick(const MouseEventWithHitTestResults&);
2155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool handleMouseDraggedEvent(const MouseEventWithHitTestResults&);
2165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool handleMouseReleaseEvent(const MouseEventWithHitTestResults&);
2175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    OptionalCursor selectCursor(const MouseEventWithHitTestResults&, Scrollbar*);
2195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void hoverTimerFired(Timer<EventHandler>*);
2205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool logicalScrollOverflow(ScrollLogicalDirection, ScrollGranularity, Node* startingNode = 0);
22202772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch
2235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool shouldTurnVerticalTicksIntoHorizontal(const HitTestResult&, const PlatformWheelEvent&) const;
2245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool mouseDownMayStartSelect() const { return m_mouseDownMayStartSelect; }
2255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    static bool isKeyboardOptionTab(KeyboardEvent*);
2275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
228926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    void fakeMouseMoveEventTimerFired(Timer<EventHandler>*);
2295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void cancelFakeMouseMoveEvent();
23053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    bool isCursorVisible() const;
2315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
232926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    bool isInsideScrollbar(const IntPoint&) const;
233926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool dispatchSyntheticTouchEventIfEnabled(const PlatformMouseEvent&);
23553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    HitTestResult hitTestResultInFrame(Frame*, const LayoutPoint&, HitTestRequest::HitTestRequestType hitType = HitTestRequest::ReadOnly | HitTestRequest::Active | HitTestRequest::DisallowShadowContent);
2365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void invalidateClick();
2385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    Node* nodeUnderMouse() const;
24002772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch
2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void updateMouseEventTargetNode(Node*, const PlatformMouseEvent&, bool fireMouseOverOut);
2425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void fireMouseOverOut(bool fireMouseOver = true, bool fireMouseOut = true, bool updateLastNodeUnderMouse = true);
24302772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch
2445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    MouseEventWithHitTestResults prepareMouseEvent(const HitTestRequest&, const PlatformMouseEvent&);
2455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool dispatchMouseEvent(const AtomicString& eventType, Node* target, bool cancelable, int clickCount, const PlatformMouseEvent&, bool setUnder);
2475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool dispatchDragEvent(const AtomicString& eventType, Node* target, const PlatformMouseEvent&, Clipboard*);
2485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void freeClipboard();
2505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
251926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    bool handleDrag(const MouseEventWithHitTestResults&, CheckDragHysteresis);
252e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    bool tryStartDrag(const MouseEventWithHitTestResults&);
2535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool handleMouseUp(const MouseEventWithHitTestResults&);
2545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void clearDragState();
2555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool dispatchDragSrcEvent(const AtomicString& eventType, const PlatformMouseEvent&);
2575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool dragHysteresisExceeded(const FloatPoint&) const;
2595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool dragHysteresisExceeded(const IntPoint&) const;
2605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool passMousePressEventToSubframe(MouseEventWithHitTestResults&, Frame* subframe);
2625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool passMouseMoveEventToSubframe(MouseEventWithHitTestResults&, Frame* subframe, HitTestResult* hoveredNode = 0);
2635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool passMouseReleaseEventToSubframe(MouseEventWithHitTestResults&, Frame* subframe);
2645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool passSubframeEventToSubframe(MouseEventWithHitTestResults&, Frame* subframe, HitTestResult* hoveredNode = 0);
2665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool passMousePressEventToScrollbar(MouseEventWithHitTestResults&, Scrollbar*);
2685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool passWidgetMouseDownEventToWidget(const MouseEventWithHitTestResults&);
2705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool passWheelEventToWidget(const PlatformWheelEvent&, Widget*);
2725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void defaultSpaceEventHandler(KeyboardEvent*);
2745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void defaultBackspaceEventHandler(KeyboardEvent*);
2755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void defaultTabEventHandler(KeyboardEvent*);
2765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void defaultArrowEventHandler(FocusDirection, KeyboardEvent*);
2775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    DragSourceAction updateDragSourceActionsAllowed() const;
2795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void updateSelectionForMouseDrag(const HitTestResult&);
2815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void updateLastScrollbarUnderMouse(Scrollbar*, bool);
28302772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch
2845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void setFrameWasScrolledByUser();
2855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool capturesDragging() const { return m_capturesDragging; }
2875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
288f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)    bool isKeyEventAllowedInFullScreen(FullscreenElementStack*, const PlatformKeyboardEvent&) const;
2895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool handleGestureTapDown();
29181a5157921f1d2a7ff6aae115bfe3c139b38a5c8Torne (Richard Coles)
29281a5157921f1d2a7ff6aae115bfe3c139b38a5c8Torne (Richard Coles)    bool handleScrollGestureOnResizer(Node*, const PlatformGestureEvent&);
29381a5157921f1d2a7ff6aae115bfe3c139b38a5c8Torne (Richard Coles)
294926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    bool passGestureEventToWidget(const PlatformGestureEvent&, Widget*);
295926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    bool passGestureEventToWidgetIfPossible(const PlatformGestureEvent&, RenderObject*);
296926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    bool sendScrollEventToView(const PlatformGestureEvent&, const FloatSize&);
29753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    Frame* getSubFrameForGestureEvent(const IntPoint& touchAdjustedPoint, const PlatformGestureEvent&);
298926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
2995267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    bool panScrollInProgress() const;
300926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    void setLastKnownMousePosition(const PlatformMouseEvent&);
301926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
302e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    Frame* const m_frame;
3035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_mousePressed;
3055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_capturesDragging;
3065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    RefPtr<Node> m_mousePressNode;
3075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_mouseDownMayStartSelect;
3095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_mouseDownMayStartDrag;
3105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_dragMayStartSelectionInstead;
3115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_mouseDownWasSingleClickInSelection;
3125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    enum SelectionInitiationState { HaveNotStartedSelection, PlacedCaret, ExtendedSelection };
3135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    SelectionInitiationState m_selectionInitiationState;
3145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    LayoutPoint m_dragStartPos;
3165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_panScrollButtonPressed;
3185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    Timer<EventHandler> m_hoverTimer;
320926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
3215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_mouseDownMayStartAutoscroll;
3225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_mouseDownWasInSubframe;
3235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
324926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    Timer<EventHandler> m_fakeMouseMoveEventTimer;
3255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_svgPan;
3275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    RefPtr<SVGElementInstance> m_instanceUnderMouse;
3285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    RefPtr<SVGElementInstance> m_lastInstanceUnderMouse;
3295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    RenderLayer* m_resizeLayer;
3315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    RefPtr<Node> m_capturingMouseEventsNode;
3335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_eventHandlerWillResetCapturingMouseEventsNode;
33402772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch
3355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    RefPtr<Node> m_nodeUnderMouse;
3365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    RefPtr<Node> m_lastNodeUnderMouse;
3375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    RefPtr<Frame> m_lastMouseMoveEventSubframe;
3385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    RefPtr<Scrollbar> m_lastScrollbarUnderMouse;
339926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    Cursor m_currentMouseCursor;
3405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    int m_clickCount;
3425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    RefPtr<Node> m_clickNode;
3435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    RefPtr<Node> m_dragTarget;
3455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_shouldOnlyFireDragOverEvent;
34602772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch
3475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    RefPtr<HTMLFrameSetElement> m_frameSetBeingResized;
3485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    LayoutSize m_offsetFromResizeCorner; // In the coords of m_resizeLayer.
35002772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch
351926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    bool m_mousePositionIsUnknown;
352926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    IntPoint m_lastKnownMousePosition;
353926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    IntPoint m_lastKnownMouseGlobalPosition;
3545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    IntPoint m_mouseDownPos; // In our view's coords.
3555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    double m_mouseDownTimestamp;
3565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PlatformMouseEvent m_mouseDown;
357926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    RefPtr<UserGestureToken> m_lastMouseDownUserGestureToken;
3585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    RefPtr<Node> m_latchedWheelEventNode;
3605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_widgetIsLatched;
3615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    RefPtr<Node> m_previousWheelScrolledNode;
3635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    typedef HashMap<int, RefPtr<EventTarget> > TouchTargetMap;
3655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    TouchTargetMap m_originatingTouchPointTargets;
366926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    RefPtr<Document> m_originatingTouchPointDocument;
367926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    unsigned m_originatingTouchPointTargetKey;
3685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_touchPressed;
3695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    RefPtr<Node> m_scrollGestureHandlingNode;
371926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    bool m_lastHitTestResultOverWidget;
372926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    RefPtr<Node> m_previousGestureScrolledNode;
373926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    RefPtr<Scrollbar> m_scrollbarHandlingScrollGesture;
3745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
375926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    double m_maxMouseMovedDuration;
3765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PlatformEvent::Type m_baseEventType;
377926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    bool m_didStartDrag;
378926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
37953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    bool m_longTapShouldInvokeContextMenu;
3805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
3815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} // namespace WebCore
3835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif // EventHandler_h
385