1d0825bca7fe65beaee391d30da42e937db621564Steve Block/*
2d0825bca7fe65beaee391d30da42e937db621564Steve Block * Copyright (C) 2010 Google Inc. All rights reserved.
3d0825bca7fe65beaee391d30da42e937db621564Steve Block *
4d0825bca7fe65beaee391d30da42e937db621564Steve Block * Redistribution and use in source and binary forms, with or without
5d0825bca7fe65beaee391d30da42e937db621564Steve Block * modification, are permitted provided that the following conditions are
6d0825bca7fe65beaee391d30da42e937db621564Steve Block * met:
7d0825bca7fe65beaee391d30da42e937db621564Steve Block *
8d0825bca7fe65beaee391d30da42e937db621564Steve Block *     * Redistributions of source code must retain the above copyright
9d0825bca7fe65beaee391d30da42e937db621564Steve Block * notice, this list of conditions and the following disclaimer.
10d0825bca7fe65beaee391d30da42e937db621564Steve Block *     * Redistributions in binary form must reproduce the above
11d0825bca7fe65beaee391d30da42e937db621564Steve Block * copyright notice, this list of conditions and the following disclaimer
12d0825bca7fe65beaee391d30da42e937db621564Steve Block * in the documentation and/or other materials provided with the
13d0825bca7fe65beaee391d30da42e937db621564Steve Block * distribution.
14d0825bca7fe65beaee391d30da42e937db621564Steve Block *     * Neither the name of Google Inc. nor the names of its
15d0825bca7fe65beaee391d30da42e937db621564Steve Block * contributors may be used to endorse or promote products derived from
16d0825bca7fe65beaee391d30da42e937db621564Steve Block * this software without specific prior written permission.
17d0825bca7fe65beaee391d30da42e937db621564Steve Block *
18d0825bca7fe65beaee391d30da42e937db621564Steve Block * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19d0825bca7fe65beaee391d30da42e937db621564Steve Block * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20d0825bca7fe65beaee391d30da42e937db621564Steve Block * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21d0825bca7fe65beaee391d30da42e937db621564Steve Block * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22d0825bca7fe65beaee391d30da42e937db621564Steve Block * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23d0825bca7fe65beaee391d30da42e937db621564Steve Block * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24d0825bca7fe65beaee391d30da42e937db621564Steve Block * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25d0825bca7fe65beaee391d30da42e937db621564Steve Block * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26d0825bca7fe65beaee391d30da42e937db621564Steve Block * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27d0825bca7fe65beaee391d30da42e937db621564Steve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28d0825bca7fe65beaee391d30da42e937db621564Steve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29d0825bca7fe65beaee391d30da42e937db621564Steve Block */
30d0825bca7fe65beaee391d30da42e937db621564Steve Block
31d0825bca7fe65beaee391d30da42e937db621564Steve Block#include "config.h"
32e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block#include "WebDOMEvent.h"
33d0825bca7fe65beaee391d30da42e937db621564Steve Block
34d0825bca7fe65beaee391d30da42e937db621564Steve Block#include "Event.h"
35d0825bca7fe65beaee391d30da42e937db621564Steve Block#include "Node.h"
36d0825bca7fe65beaee391d30da42e937db621564Steve Block#include <wtf/PassRefPtr.h>
37d0825bca7fe65beaee391d30da42e937db621564Steve Block
38d0825bca7fe65beaee391d30da42e937db621564Steve Blocknamespace WebKit {
39d0825bca7fe65beaee391d30da42e937db621564Steve Block
40e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockclass WebDOMEventPrivate : public WebCore::Event {
41d0825bca7fe65beaee391d30da42e937db621564Steve Block};
42d0825bca7fe65beaee391d30da42e937db621564Steve Block
43e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockvoid WebDOMEvent::reset()
44d0825bca7fe65beaee391d30da42e937db621564Steve Block{
45d0825bca7fe65beaee391d30da42e937db621564Steve Block    assign(0);
46d0825bca7fe65beaee391d30da42e937db621564Steve Block}
47d0825bca7fe65beaee391d30da42e937db621564Steve Block
48e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockvoid WebDOMEvent::assign(const WebDOMEvent& other)
49d0825bca7fe65beaee391d30da42e937db621564Steve Block{
50e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block    WebDOMEventPrivate* p = const_cast<WebDOMEventPrivate*>(other.m_private);
51d0825bca7fe65beaee391d30da42e937db621564Steve Block    if (p)
52d0825bca7fe65beaee391d30da42e937db621564Steve Block        p->ref();
53d0825bca7fe65beaee391d30da42e937db621564Steve Block    assign(p);
54d0825bca7fe65beaee391d30da42e937db621564Steve Block}
55d0825bca7fe65beaee391d30da42e937db621564Steve Block
56e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockvoid WebDOMEvent::assign(WebDOMEventPrivate* p)
57d0825bca7fe65beaee391d30da42e937db621564Steve Block{
58d0825bca7fe65beaee391d30da42e937db621564Steve Block    // p is already ref'd for us by the caller
59d0825bca7fe65beaee391d30da42e937db621564Steve Block    if (m_private)
60d0825bca7fe65beaee391d30da42e937db621564Steve Block        m_private->deref();
61d0825bca7fe65beaee391d30da42e937db621564Steve Block    m_private = p;
62d0825bca7fe65beaee391d30da42e937db621564Steve Block}
63d0825bca7fe65beaee391d30da42e937db621564Steve Block
64e8b154fd68f9b33be40a3590e58347f353835f5cSteve BlockWebDOMEvent::WebDOMEvent(const WTF::PassRefPtr<WebCore::Event>& event)
65e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block    : m_private(static_cast<WebDOMEventPrivate*>(event.releaseRef()))
66d0825bca7fe65beaee391d30da42e937db621564Steve Block{
67d0825bca7fe65beaee391d30da42e937db621564Steve Block}
68d0825bca7fe65beaee391d30da42e937db621564Steve Block
69e8b154fd68f9b33be40a3590e58347f353835f5cSteve BlockWebString WebDOMEvent::type() const
70d0825bca7fe65beaee391d30da42e937db621564Steve Block{
71d0825bca7fe65beaee391d30da42e937db621564Steve Block    ASSERT(m_private);
72d0825bca7fe65beaee391d30da42e937db621564Steve Block    return m_private->type();
73d0825bca7fe65beaee391d30da42e937db621564Steve Block}
74d0825bca7fe65beaee391d30da42e937db621564Steve Block
75e8b154fd68f9b33be40a3590e58347f353835f5cSteve BlockWebNode WebDOMEvent::target() const
76d0825bca7fe65beaee391d30da42e937db621564Steve Block{
77d0825bca7fe65beaee391d30da42e937db621564Steve Block    ASSERT(m_private);
78d0825bca7fe65beaee391d30da42e937db621564Steve Block    return WebNode(m_private->target()->toNode());
79d0825bca7fe65beaee391d30da42e937db621564Steve Block}
80d0825bca7fe65beaee391d30da42e937db621564Steve Block
81e8b154fd68f9b33be40a3590e58347f353835f5cSteve BlockWebNode WebDOMEvent::currentTarget() const
82d0825bca7fe65beaee391d30da42e937db621564Steve Block{
83d0825bca7fe65beaee391d30da42e937db621564Steve Block    ASSERT(m_private);
84d0825bca7fe65beaee391d30da42e937db621564Steve Block    return WebNode(m_private->currentTarget()->toNode());
85d0825bca7fe65beaee391d30da42e937db621564Steve Block}
86d0825bca7fe65beaee391d30da42e937db621564Steve Block
87e8b154fd68f9b33be40a3590e58347f353835f5cSteve BlockWebDOMEvent::PhaseType WebDOMEvent::eventPhase() const
88d0825bca7fe65beaee391d30da42e937db621564Steve Block{
89d0825bca7fe65beaee391d30da42e937db621564Steve Block    ASSERT(m_private);
90e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block    return static_cast<WebDOMEvent::PhaseType>(m_private->eventPhase());
91d0825bca7fe65beaee391d30da42e937db621564Steve Block}
92d0825bca7fe65beaee391d30da42e937db621564Steve Block
93e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockbool WebDOMEvent::bubbles() const
94d0825bca7fe65beaee391d30da42e937db621564Steve Block{
95d0825bca7fe65beaee391d30da42e937db621564Steve Block    ASSERT(m_private);
96d0825bca7fe65beaee391d30da42e937db621564Steve Block    return m_private->bubbles();
97d0825bca7fe65beaee391d30da42e937db621564Steve Block}
98d0825bca7fe65beaee391d30da42e937db621564Steve Block
99e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockbool WebDOMEvent::cancelable() const
100d0825bca7fe65beaee391d30da42e937db621564Steve Block{
101d0825bca7fe65beaee391d30da42e937db621564Steve Block    ASSERT(m_private);
102d0825bca7fe65beaee391d30da42e937db621564Steve Block    return m_private->cancelable();
103d0825bca7fe65beaee391d30da42e937db621564Steve Block}
104d0825bca7fe65beaee391d30da42e937db621564Steve Block
105e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockbool WebDOMEvent::isUIEvent() const
106d0825bca7fe65beaee391d30da42e937db621564Steve Block{
107d0825bca7fe65beaee391d30da42e937db621564Steve Block    ASSERT(m_private);
108d0825bca7fe65beaee391d30da42e937db621564Steve Block    return m_private->isUIEvent();
109d0825bca7fe65beaee391d30da42e937db621564Steve Block}
110d0825bca7fe65beaee391d30da42e937db621564Steve Block
111e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockbool WebDOMEvent::isMouseEvent() const
112d0825bca7fe65beaee391d30da42e937db621564Steve Block{
113d0825bca7fe65beaee391d30da42e937db621564Steve Block    ASSERT(m_private);
114d0825bca7fe65beaee391d30da42e937db621564Steve Block    return m_private->isMouseEvent();
115d0825bca7fe65beaee391d30da42e937db621564Steve Block}
116d0825bca7fe65beaee391d30da42e937db621564Steve Block
117e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockbool WebDOMEvent::isMutationEvent() const
118d0825bca7fe65beaee391d30da42e937db621564Steve Block{
119d0825bca7fe65beaee391d30da42e937db621564Steve Block    ASSERT(m_private);
120d0825bca7fe65beaee391d30da42e937db621564Steve Block    return m_private->isMutationEvent();
121d0825bca7fe65beaee391d30da42e937db621564Steve Block}
122d0825bca7fe65beaee391d30da42e937db621564Steve Block
123e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockbool WebDOMEvent::isKeyboardEvent() const
124d0825bca7fe65beaee391d30da42e937db621564Steve Block{
125d0825bca7fe65beaee391d30da42e937db621564Steve Block    ASSERT(m_private);
126d0825bca7fe65beaee391d30da42e937db621564Steve Block    return m_private->isKeyboardEvent();
127d0825bca7fe65beaee391d30da42e937db621564Steve Block}
128d0825bca7fe65beaee391d30da42e937db621564Steve Block
129e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockbool WebDOMEvent::isTextEvent() const
130d0825bca7fe65beaee391d30da42e937db621564Steve Block{
131d0825bca7fe65beaee391d30da42e937db621564Steve Block    ASSERT(m_private);
132d0825bca7fe65beaee391d30da42e937db621564Steve Block    return m_private->isTextEvent();
133d0825bca7fe65beaee391d30da42e937db621564Steve Block}
134d0825bca7fe65beaee391d30da42e937db621564Steve Block
135e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockbool WebDOMEvent::isCompositionEvent() const
136d0825bca7fe65beaee391d30da42e937db621564Steve Block{
137d0825bca7fe65beaee391d30da42e937db621564Steve Block    ASSERT(m_private);
138d0825bca7fe65beaee391d30da42e937db621564Steve Block    return m_private->isCompositionEvent();
139d0825bca7fe65beaee391d30da42e937db621564Steve Block}
140d0825bca7fe65beaee391d30da42e937db621564Steve Block
141e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockbool WebDOMEvent::isDragEvent() const
142d0825bca7fe65beaee391d30da42e937db621564Steve Block{
143d0825bca7fe65beaee391d30da42e937db621564Steve Block    ASSERT(m_private);
144d0825bca7fe65beaee391d30da42e937db621564Steve Block    return m_private->isDragEvent();
145d0825bca7fe65beaee391d30da42e937db621564Steve Block}
146d0825bca7fe65beaee391d30da42e937db621564Steve Block
147e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockbool WebDOMEvent::isClipboardEvent() const
148d0825bca7fe65beaee391d30da42e937db621564Steve Block{
149d0825bca7fe65beaee391d30da42e937db621564Steve Block    ASSERT(m_private);
150d0825bca7fe65beaee391d30da42e937db621564Steve Block    return m_private->isClipboardEvent();
151d0825bca7fe65beaee391d30da42e937db621564Steve Block}
152d0825bca7fe65beaee391d30da42e937db621564Steve Block
153e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockbool WebDOMEvent::isMessageEvent() const
154d0825bca7fe65beaee391d30da42e937db621564Steve Block{
155d0825bca7fe65beaee391d30da42e937db621564Steve Block    ASSERT(m_private);
156d0825bca7fe65beaee391d30da42e937db621564Steve Block    return m_private->isMessageEvent();
157d0825bca7fe65beaee391d30da42e937db621564Steve Block}
158d0825bca7fe65beaee391d30da42e937db621564Steve Block
159e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockbool WebDOMEvent::isWheelEvent() const
160d0825bca7fe65beaee391d30da42e937db621564Steve Block{
161d0825bca7fe65beaee391d30da42e937db621564Steve Block    ASSERT(m_private);
162d0825bca7fe65beaee391d30da42e937db621564Steve Block    return m_private->isWheelEvent();
163d0825bca7fe65beaee391d30da42e937db621564Steve Block}
164d0825bca7fe65beaee391d30da42e937db621564Steve Block
165e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockbool WebDOMEvent::isBeforeTextInsertedEvent() const
166d0825bca7fe65beaee391d30da42e937db621564Steve Block{
167d0825bca7fe65beaee391d30da42e937db621564Steve Block    ASSERT(m_private);
168d0825bca7fe65beaee391d30da42e937db621564Steve Block    return m_private->isBeforeTextInsertedEvent();
169d0825bca7fe65beaee391d30da42e937db621564Steve Block}
170d0825bca7fe65beaee391d30da42e937db621564Steve Block
171e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockbool WebDOMEvent::isOverflowEvent() const
172d0825bca7fe65beaee391d30da42e937db621564Steve Block{
173d0825bca7fe65beaee391d30da42e937db621564Steve Block    ASSERT(m_private);
174d0825bca7fe65beaee391d30da42e937db621564Steve Block    return m_private->isOverflowEvent();
175d0825bca7fe65beaee391d30da42e937db621564Steve Block}
176d0825bca7fe65beaee391d30da42e937db621564Steve Block
177e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockbool WebDOMEvent::isPageTransitionEvent() const
178d0825bca7fe65beaee391d30da42e937db621564Steve Block{
179d0825bca7fe65beaee391d30da42e937db621564Steve Block    ASSERT(m_private);
180d0825bca7fe65beaee391d30da42e937db621564Steve Block    return m_private->isPageTransitionEvent();
181d0825bca7fe65beaee391d30da42e937db621564Steve Block}
182d0825bca7fe65beaee391d30da42e937db621564Steve Block
183e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockbool WebDOMEvent::isPopStateEvent() const
184d0825bca7fe65beaee391d30da42e937db621564Steve Block{
185d0825bca7fe65beaee391d30da42e937db621564Steve Block    ASSERT(m_private);
186d0825bca7fe65beaee391d30da42e937db621564Steve Block    return m_private->isPopStateEvent();
187d0825bca7fe65beaee391d30da42e937db621564Steve Block}
188d0825bca7fe65beaee391d30da42e937db621564Steve Block
189e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockbool WebDOMEvent::isProgressEvent() const
190d0825bca7fe65beaee391d30da42e937db621564Steve Block{
191d0825bca7fe65beaee391d30da42e937db621564Steve Block    ASSERT(m_private);
192d0825bca7fe65beaee391d30da42e937db621564Steve Block    return m_private->isProgressEvent();
193d0825bca7fe65beaee391d30da42e937db621564Steve Block}
194d0825bca7fe65beaee391d30da42e937db621564Steve Block
195e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockbool WebDOMEvent::isXMLHttpRequestProgressEvent() const
196d0825bca7fe65beaee391d30da42e937db621564Steve Block{
197d0825bca7fe65beaee391d30da42e937db621564Steve Block    ASSERT(m_private);
198d0825bca7fe65beaee391d30da42e937db621564Steve Block    return m_private->isXMLHttpRequestProgressEvent();
199d0825bca7fe65beaee391d30da42e937db621564Steve Block}
200d0825bca7fe65beaee391d30da42e937db621564Steve Block
201e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockbool WebDOMEvent::isWebKitAnimationEvent() const
202d0825bca7fe65beaee391d30da42e937db621564Steve Block{
203d0825bca7fe65beaee391d30da42e937db621564Steve Block    ASSERT(m_private);
204d0825bca7fe65beaee391d30da42e937db621564Steve Block    return m_private->isWebKitAnimationEvent();
205d0825bca7fe65beaee391d30da42e937db621564Steve Block}
206d0825bca7fe65beaee391d30da42e937db621564Steve Block
207e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockbool WebDOMEvent::isWebKitTransitionEvent() const
208d0825bca7fe65beaee391d30da42e937db621564Steve Block{
209d0825bca7fe65beaee391d30da42e937db621564Steve Block    ASSERT(m_private);
210d0825bca7fe65beaee391d30da42e937db621564Steve Block    return m_private->isWebKitTransitionEvent();
211d0825bca7fe65beaee391d30da42e937db621564Steve Block}
212d0825bca7fe65beaee391d30da42e937db621564Steve Block
213e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockbool WebDOMEvent::isBeforeLoadEvent() const
214d0825bca7fe65beaee391d30da42e937db621564Steve Block{
215d0825bca7fe65beaee391d30da42e937db621564Steve Block    ASSERT(m_private);
216d0825bca7fe65beaee391d30da42e937db621564Steve Block    return m_private->isBeforeLoadEvent();
217d0825bca7fe65beaee391d30da42e937db621564Steve Block}
218d0825bca7fe65beaee391d30da42e937db621564Steve Block
219d0825bca7fe65beaee391d30da42e937db621564Steve Block} // namespace WebKit
220