2 * Copyright (C) 2012 Google Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
13 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 #include "core/dom/Element.h"
28 #include "core/events/GestureEvent.h"
29 #include "wtf/text/AtomicString.h"
33 PassRefPtrWillBeRawPtr<GestureEvent> GestureEvent::create(PassRefPtrWillBeRawPtr<AbstractView> view, const PlatformGestureEvent& event)
35 AtomicString eventType;
38 switch (event.type()) {
39 case PlatformEvent::GestureScrollBegin:
40 eventType = EventTypeNames::gesturescrollstart; break;
41 case PlatformEvent::GestureScrollEnd:
42 eventType = EventTypeNames::gesturescrollend; break;
43 case PlatformEvent::GestureScrollUpdate:
44 case PlatformEvent::GestureScrollUpdateWithoutPropagation:
45 // Only deltaX/Y are used when converting this
46 // back to a PlatformGestureEvent.
47 eventType = EventTypeNames::gesturescrollupdate;
48 deltaX = event.deltaX();
49 deltaY = event.deltaY();
51 case PlatformEvent::GestureTap:
52 eventType = EventTypeNames::gesturetap; break;
53 case PlatformEvent::GestureTapUnconfirmed:
54 eventType = EventTypeNames::gesturetapunconfirmed; break;
55 case PlatformEvent::GestureTapDown:
56 eventType = EventTypeNames::gesturetapdown; break;
57 case PlatformEvent::GestureShowPress:
58 eventType = EventTypeNames::gestureshowpress; break;
59 case PlatformEvent::GestureTwoFingerTap:
60 case PlatformEvent::GestureLongPress:
61 case PlatformEvent::GesturePinchBegin:
62 case PlatformEvent::GesturePinchEnd:
63 case PlatformEvent::GesturePinchUpdate:
64 case PlatformEvent::GestureTapDownCancel:
68 return adoptRefWillBeNoop(new GestureEvent(eventType, view, event.globalPosition().x(), event.globalPosition().y(), event.position().x(), event.position().y(), event.ctrlKey(), event.altKey(), event.shiftKey(), event.metaKey(), deltaX, deltaY));
71 const AtomicString& GestureEvent::interfaceName() const
73 // FIXME: when a GestureEvent.idl interface is defined, return the string "GestureEvent".
74 // Until that happens, do not advertise an interface that does not exist, since it will
75 // trip up the bindings integrity checks.
76 return UIEvent::interfaceName();
79 bool GestureEvent::isGestureEvent() const
84 GestureEvent::GestureEvent()
90 GestureEvent::GestureEvent(const AtomicString& type, PassRefPtrWillBeRawPtr<AbstractView> view, int screenX, int screenY, int clientX, int clientY, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, float deltaX, float deltaY)
91 : MouseRelatedEvent(type, true, true, view, 0, IntPoint(screenX, screenY), IntPoint(clientX, clientY), IntPoint(0, 0), ctrlKey, altKey, shiftKey, metaKey)
97 void GestureEvent::trace(Visitor* visitor)
99 MouseRelatedEvent::trace(visitor);
102 GestureEventDispatchMediator::GestureEventDispatchMediator(PassRefPtrWillBeRawPtr<GestureEvent> gestureEvent)
103 : EventDispatchMediator(gestureEvent)
107 GestureEvent* GestureEventDispatchMediator::event() const
109 return toGestureEvent(EventDispatchMediator::event());
112 bool GestureEventDispatchMediator::dispatchEvent(EventDispatcher* dispatcher) const
114 dispatcher->dispatch();
115 ASSERT(!event()->defaultPrevented());
116 return event()->defaultHandled() || event()->defaultPrevented();