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