18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2001 Peter Kelly (pmk@post.com)
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2001 Tobias Anton (anton@stud.fbi.fh-darmstadt.de)
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com)
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version.
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful,
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details.
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB.  If not, write to
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA.
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef Event_h
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define Event_h
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
27ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch#include "Clipboard.h"
286b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner#include "DOMTimeStamp.h"
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/RefCounted.h>
30f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#include <wtf/text/AtomicString.h>
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    class EventTarget;
352bde8e466a4451c7319e3a072d118917957d6554Steve Block    class EventDispatcher;
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    class Event : public RefCounted<Event> {
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    public:
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        enum PhaseType {
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            CAPTURING_PHASE     = 1,
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            AT_TARGET           = 2,
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            BUBBLING_PHASE      = 3
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        };
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        enum EventType {
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            MOUSEDOWN           = 1,
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            MOUSEUP             = 2,
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            MOUSEOVER           = 4,
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            MOUSEOUT            = 8,
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            MOUSEMOVE           = 16,
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            MOUSEDRAG           = 32,
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            CLICK               = 64,
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            DBLCLICK            = 128,
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            KEYDOWN             = 256,
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            KEYUP               = 512,
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            KEYPRESS            = 1024,
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            DRAGDROP            = 2048,
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            FOCUS               = 4096,
598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            BLUR                = 8192,
608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            SELECT              = 16384,
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            CHANGE              = 32768
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        };
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        static PassRefPtr<Event> create()
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        {
668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return adoptRef(new Event);
678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        static PassRefPtr<Event> create(const AtomicString& type, bool canBubble, bool cancelable)
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        {
708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return adoptRef(new Event(type, canBubble, cancelable));
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual ~Event();
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        void initEvent(const AtomicString& type, bool canBubble, bool cancelable);
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        const AtomicString& type() const { return m_type; }
77dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        EventTarget* target() const { return m_target.get(); }
798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        void setTarget(PassRefPtr<EventTarget>);
808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        EventTarget* currentTarget() const { return m_currentTarget; }
828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        void setCurrentTarget(EventTarget* currentTarget) { m_currentTarget = currentTarget; }
838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        unsigned short eventPhase() const { return m_eventPhase; }
858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        void setEventPhase(unsigned short eventPhase) { m_eventPhase = eventPhase; }
868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        bool bubbles() const { return m_canBubble; }
888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        bool cancelable() const { return m_cancelable; }
89635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        DOMTimeStamp timeStamp() const { return m_createTime; }
908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
91dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        void stopPropagation() { m_propagationStopped = true; }
92dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        void stopImmediatePropagation() { m_immediatePropagationStopped = true; }
93dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        // IE Extensions
958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        EventTarget* srcElement() const { return target(); } // MSIE extension - "the object that fired the event"
968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        bool returnValue() const { return !defaultPrevented(); }
988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        void setReturnValue(bool returnValue) { setDefaultPrevented(!returnValue); }
998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        Clipboard* clipboardData() const { return isClipboardEvent() ? clipboard() : 0; }
1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
102dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        virtual bool isCustomEvent() const;
1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool isUIEvent() const;
1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool isMouseEvent() const;
1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool isMutationEvent() const;
1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool isKeyboardEvent() const;
1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool isTextEvent() const;
108643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        virtual bool isCompositionEvent() const;
1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool isDragEvent() const; // a subset of mouse events
1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool isClipboardEvent() const;
1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool isMessageEvent() const;
1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool isWheelEvent() const;
1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool isBeforeTextInsertedEvent() const;
1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool isOverflowEvent() const;
115231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block        virtual bool isPageTransitionEvent() const;
116643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        virtual bool isPopStateEvent() const;
1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool isProgressEvent() const;
1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool isXMLHttpRequestProgressEvent() const;
1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool isWebKitAnimationEvent() const;
1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool isWebKitTransitionEvent() const;
121cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block        virtual bool isBeforeLoadEvent() const;
12268513a70bcd92384395513322f1b801e7bf9c729Steve Block        virtual bool isHashChangeEvent() const;
1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG)
1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool isSVGZoomEvent() const;
1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(DOM_STORAGE)
1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool isStorageEvent() const;
1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
1296c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#if ENABLE(INDEXED_DATABASE)
13081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        virtual bool isIDBVersionChangeEvent() const;
1316b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner#endif
1326b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner#if ENABLE(WEB_AUDIO)
1336b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner        virtual bool isAudioProcessingEvent() const;
1342daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        virtual bool isOfflineAudioCompletionEvent() const;
1356c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#endif
1360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        virtual bool isErrorEvent() const;
137f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch#if ENABLE(TOUCH_EVENTS)
138f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch        virtual bool isTouchEvent() const;
13991f41286e33b387859e4841711f3054bcf75c748John Reck#if PLATFORM(ANDROID)
14091f41286e33b387859e4841711f3054bcf75c748John Reck        virtual bool hitTouchHandler() const { return false; }
14191f41286e33b387859e4841711f3054bcf75c748John Reck        virtual void setHitTouchHandler() { }
14291f41286e33b387859e4841711f3054bcf75c748John Reck#endif
143f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch#endif
144e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block#if ENABLE(DEVICE_ORIENTATION)
145dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        virtual bool isDeviceMotionEvent() const;
146e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block        virtual bool isDeviceOrientationEvent() const;
147e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block#endif
1484576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#if ENABLE(INPUT_SPEECH)
1494576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang        virtual bool isSpeechInputEvent() const;
1504576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#endif
1515e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block        bool fromUserGesture();
152d19c83b203e72c34b78a731c61d73c77ad99794eSteve Block
153dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        bool propagationStopped() const { return m_propagationStopped || m_immediatePropagationStopped; }
154dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        bool immediatePropagationStopped() const { return m_immediatePropagationStopped; }
1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        bool defaultPrevented() const { return m_defaultPrevented; }
1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        void preventDefault() { if (m_cancelable) m_defaultPrevented = true; }
1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        void setDefaultPrevented(bool defaultPrevented) { m_defaultPrevented = defaultPrevented; }
1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        bool defaultHandled() const { return m_defaultHandled; }
1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        void setDefaultHandled() { m_defaultHandled = true; }
1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        bool cancelBubble() const { return m_cancelBubble; }
1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        void setCancelBubble(bool cancel) { m_cancelBubble = cancel; }
1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        Event* underlyingEvent() const { return m_underlyingEvent.get(); }
1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        void setUnderlyingEvent(PassRefPtr<Event>);
1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool storesResultAsString() const;
1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void storeResult(const String&);
1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual Clipboard* clipboard() const { return 0; }
1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1742bde8e466a4451c7319e3a072d118917957d6554Steve Block
1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    protected:
1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        Event();
1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        Event(const AtomicString& type, bool canBubble, bool cancelable);
1788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void receivedTarget();
1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        bool dispatched() const { return m_target; }
1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    private:
1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        AtomicString m_type;
1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        bool m_canBubble;
1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        bool m_cancelable;
1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        bool m_propagationStopped;
188dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        bool m_immediatePropagationStopped;
1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        bool m_defaultPrevented;
1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        bool m_defaultHandled;
1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        bool m_cancelBubble;
1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        unsigned short m_eventPhase;
1945f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian        EventTarget* m_currentTarget;
1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        RefPtr<EventTarget> m_target;
1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        DOMTimeStamp m_createTime;
1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        RefPtr<Event> m_underlyingEvent;
1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    };
2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2012daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass EventDispatchMediator {
2022daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochpublic:
2032daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    explicit EventDispatchMediator(PassRefPtr<Event>);
2042daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    virtual ~EventDispatchMediator();
2052daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
2062daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    virtual bool dispatchEvent(EventDispatcher*) const;
2072daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
2082daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochprotected:
2092daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    EventDispatchMediator();
2102daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
2112daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    Event* event() const;
2122daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void setEvent(PassRefPtr<Event>);
2132daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
2142daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochprivate:
2152daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    RefPtr<Event> m_event;
2162daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch};
2172daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
2182daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochinline EventDispatchMediator::EventDispatchMediator()
2192daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{
2202daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch}
2212daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
2222daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochinline Event* EventDispatchMediator::event() const
2232daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{
2242daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    return m_event.get();
2252daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch}
2262daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
2272daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochinline void EventDispatchMediator::setEvent(PassRefPtr<Event> event)
2282daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{
2292daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    m_event = event;
2302daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch}
2312daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore
2338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // Event_h
235