18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright 2008, The Android Open Source Project
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 *  * 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 *  * 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 THE COPYRIGHT HOLDERS ``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 TouchEvent_h
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define TouchEvent_h
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
29f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch#if ENABLE(TOUCH_EVENTS)
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "MouseRelatedEvent.h"
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "TouchList.h"
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
36f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdochclass TouchEvent : public MouseRelatedEvent {
37f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdochpublic:
38a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    virtual ~TouchEvent();
39a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
40f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    static PassRefPtr<TouchEvent> create()
41f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    {
42f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch        return adoptRef(new TouchEvent);
43f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    }
44f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    static PassRefPtr<TouchEvent> create(TouchList* touches,
45f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch            TouchList* targetTouches, TouchList* changedTouches,
46f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch            const AtomicString& type, PassRefPtr<AbstractView> view,
47f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch            int screenX, int screenY, int pageX, int pageY,
48f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch            bool ctrlKey, bool altKey, bool shiftKey, bool metaKey)
49f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    {
50f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch        return adoptRef(new TouchEvent(touches, targetTouches, changedTouches,
51f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch                type, view, screenX, screenY, pageX, pageY,
52f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch                ctrlKey, altKey, shiftKey, metaKey));
53f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    }
54f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch
55f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    void initTouchEvent(TouchList* touches, TouchList* targetTouches,
56f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch            TouchList* changedTouches, const AtomicString& type,
57f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch            PassRefPtr<AbstractView> view, int screenX, int screenY,
58f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch            int clientX, int clientY,
59f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch            bool ctrlKey, bool altKey, bool shiftKey, bool metaKey);
60f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch
61f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    TouchList* touches() const { return m_touches.get(); }
62f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    TouchList* targetTouches() const { return m_targetTouches.get(); }
63f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    TouchList* changedTouches() const { return m_changedTouches.get(); }
64f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch
6591f41286e33b387859e4841711f3054bcf75c748John Reck#if PLATFORM(ANDROID)
6691f41286e33b387859e4841711f3054bcf75c748John Reck    virtual bool hitTouchHandler() const { return m_hitTouchHandler; }
6791f41286e33b387859e4841711f3054bcf75c748John Reck    virtual void setHitTouchHandler() { m_hitTouchHandler = true; }
6891f41286e33b387859e4841711f3054bcf75c748John Reck#endif
6991f41286e33b387859e4841711f3054bcf75c748John Reck
70f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdochprivate:
71a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    TouchEvent();
72f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    TouchEvent(TouchList* touches, TouchList* targetTouches,
73f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch            TouchList* changedTouches, const AtomicString& type,
74f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch            PassRefPtr<AbstractView>, int screenX, int screenY, int pageX,
75f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch            int pageY,
76f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch            bool ctrlKey, bool altKey, bool shiftKey, bool metaKey);
77f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch
78f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    virtual bool isTouchEvent() const { return true; }
79f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch
8091f41286e33b387859e4841711f3054bcf75c748John Reck#if PLATFORM(ANDROID)
8191f41286e33b387859e4841711f3054bcf75c748John Reck    bool m_hitTouchHandler;
8291f41286e33b387859e4841711f3054bcf75c748John Reck#endif
8391f41286e33b387859e4841711f3054bcf75c748John Reck
84f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    RefPtr<TouchList> m_touches;
85f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    RefPtr<TouchList> m_targetTouches;
86f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    RefPtr<TouchList> m_changedTouches;
87f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch};
888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore
908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // ENABLE(TOUCH_EVENTS)
928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // TouchEvent_h
94