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)