15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright (C) 2010 Google Inc. All rights reserved. 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Redistribution and use in source and binary forms, with or without 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * modification, are permitted provided that the following conditions are 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * met: 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * * Redistributions of source code must retain the above copyright 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * notice, this list of conditions and the following disclaimer. 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * * Redistributions in binary form must reproduce the above 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * in the documentation and/or other materials provided with the 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * distribution. 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * * Neither the name of Google Inc. nor the names of its 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * contributors may be used to endorse or promote products derived from 16ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch * this software without specific prior written permission. 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "config.h" 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "public/web/WebDOMEvent.h" 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "core/EventNames.h" 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "core/dom/Node.h" 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "core/events/Event.h" 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "wtf/PassRefPtr.h" 3846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace blink { 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebDOMEvent::reset() 4203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles){ 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch assign(nullptr); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebDOMEvent::assign(const WebDOMEvent& other) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) m_private = other.m_private; 497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void WebDOMEvent::assign(const PassRefPtrWillBeRawPtr<Event>& event) 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles){ 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) m_private = event; 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 55f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciWebDOMEvent::WebDOMEvent(const PassRefPtrWillBeRawPtr<Event>& event) 573551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) : m_private(event) 586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles){ 596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)WebDOMEvent::operator PassRefPtrWillBeRawPtr<Event>() const 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return m_private.get(); 646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WebString WebDOMEvent::type() const 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT(m_private.get()); 69cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return m_private->type(); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 726e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)WebNode WebDOMEvent::target() const 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles){ 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT(m_private.get()); 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return WebNode(m_private->target()->toNode()); 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WebNode WebDOMEvent::currentTarget() const 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT(m_private.get()); 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return WebNode(m_private->currentTarget()->toNode()); 825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 837dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WebDOMEvent::PhaseType WebDOMEvent::eventPhase() const 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT(m_private.get()); 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return static_cast<WebDOMEvent::PhaseType>(m_private->eventPhase()); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WebDOMEvent::bubbles() const 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT(m_private.get()); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return m_private->bubbles(); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool WebDOMEvent::cancelable() const 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles){ 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT(m_private.get()); 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return m_private->cancelable(); 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool WebDOMEvent::isUIEvent() const 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles){ 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT(m_private.get()); 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return m_private->isUIEvent(); 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool WebDOMEvent::isMouseEvent() const 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles){ 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT(m_private.get()); 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return m_private->isMouseEvent(); 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool WebDOMEvent::isKeyboardEvent() const 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles){ 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT(m_private.get()); 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return m_private->isKeyboardEvent(); 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool WebDOMEvent::isMutationEvent() const 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles){ 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT(m_private.get()); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return m_private->hasInterface(EventNames::MutationEvent); 124cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 125cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WebDOMEvent::isTextEvent() const 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT(m_private.get()); 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return m_private->hasInterface(EventNames::TextEvent); 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)bool WebDOMEvent::isCompositionEvent() const 1336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles){ 1346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ASSERT(m_private.get()); 1356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return m_private->hasInterface(EventNames::CompositionEvent); 1365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool WebDOMEvent::isDragEvent() const 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT(m_private.get()); 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return m_private->isDragEvent(); 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool WebDOMEvent::isClipboardEvent() const 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles){ 1465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT(m_private.get()); 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return m_private->isClipboardEvent(); 1485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WebDOMEvent::isMessageEvent() const 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles){ 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT(m_private.get()); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return m_private->hasInterface(EventNames::MessageEvent); 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WebDOMEvent::isWheelEvent() const 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT(m_private.get()); 1597dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return m_private->hasInterface(EventNames::WheelEvent); 1607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 1617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 1627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochbool WebDOMEvent::isBeforeTextInsertedEvent() const 1637dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch{ 1647dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch ASSERT(m_private.get()); 1657dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return m_private->isBeforeTextInsertedEvent(); 1667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 1677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 1687dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochbool WebDOMEvent::isOverflowEvent() const 1697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch{ 1707dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch ASSERT(m_private.get()); 1717dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return m_private->hasInterface(EventNames::OverflowEvent); 1725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool WebDOMEvent::isPageTransitionEvent() const 1755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles){ 1765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT(m_private.get()); 1775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return m_private->hasInterface(EventNames::PageTransitionEvent); 1785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool WebDOMEvent::isPopStateEvent() const 1815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles){ 1825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT(m_private.get()); 1835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return m_private->hasInterface(EventNames::PopStateEvent); 1845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool WebDOMEvent::isProgressEvent() const 1875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles){ 1885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT(m_private.get()); 1895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return m_private->hasInterface(EventNames::ProgressEvent); 1905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool WebDOMEvent::isXMLHttpRequestProgressEvent() const 1937dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch{ 1947dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch ASSERT(m_private.get()); 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return m_private->hasInterface(EventNames::XMLHttpRequestProgressEvent); 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace blink 1995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)