| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
| 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
ights reserved. | 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
ights reserved. |
| 6 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 6 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
| 7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) | 7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) |
| 8 * Copyright (C) 2011 Google Inc. All rights reserved. | 8 * Copyright (C) 2011 Google Inc. All rights reserved. |
| 9 * | 9 * |
| 10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
| 11 * modify it under the terms of the GNU Library General Public | 11 * modify it under the terms of the GNU Library General Public |
| 12 * License as published by the Free Software Foundation; either | 12 * License as published by the Free Software Foundation; either |
| 13 * version 2 of the License, or (at your option) any later version. | 13 * version 2 of the License, or (at your option) any later version. |
| 14 * | 14 * |
| 15 * This library is distributed in the hope that it will be useful, | 15 * This library is distributed in the hope that it will be useful, |
| 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 18 * Library General Public License for more details. | 18 * Library General Public License for more details. |
| 19 * | 19 * |
| 20 * You should have received a copy of the GNU Library General Public License | 20 * You should have received a copy of the GNU Library General Public License |
| 21 * along with this library; see the file COPYING.LIB. If not, write to | 21 * along with this library; see the file COPYING.LIB. If not, write to |
| 22 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 22 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
| 23 * Boston, MA 02110-1301, USA. | 23 * Boston, MA 02110-1301, USA. |
| 24 */ | 24 */ |
| 25 | 25 |
| 26 #include "config.h" | 26 #include "config.h" |
| 27 #include "core/events/EventDispatcher.h" | 27 #include "core/events/EventDispatcher.h" |
| 28 | 28 |
| 29 #include "core/dom/ContainerNode.h" | 29 #include "core/dom/ContainerNode.h" |
| 30 #include "core/dom/NoEventDispatchAssertion.h" | |
| 31 #include "core/events/EventDispatchMediator.h" | 30 #include "core/events/EventDispatchMediator.h" |
| 32 #include "core/events/MouseEvent.h" | 31 #include "core/events/MouseEvent.h" |
| 33 #include "core/events/ScopedEventQueue.h" | 32 #include "core/events/ScopedEventQueue.h" |
| 34 #include "core/events/WindowEventContext.h" | 33 #include "core/events/WindowEventContext.h" |
| 35 #include "core/frame/FrameView.h" | 34 #include "core/frame/FrameView.h" |
| 36 #include "core/inspector/InspectorInstrumentation.h" | 35 #include "core/inspector/InspectorInstrumentation.h" |
| 37 #include "core/inspector/InspectorTraceEvents.h" | 36 #include "core/inspector/InspectorTraceEvents.h" |
| 37 #include "platform/EventDispatchForbiddenScope.h" |
| 38 #include "platform/TraceEvent.h" | 38 #include "platform/TraceEvent.h" |
| 39 #include "wtf/RefPtr.h" | 39 #include "wtf/RefPtr.h" |
| 40 | 40 |
| 41 namespace blink { | 41 namespace blink { |
| 42 | 42 |
| 43 bool EventDispatcher::dispatchEvent(Node* node, PassRefPtrWillBeRawPtr<EventDisp
atchMediator> mediator) | 43 bool EventDispatcher::dispatchEvent(Node* node, PassRefPtrWillBeRawPtr<EventDisp
atchMediator> mediator) |
| 44 { | 44 { |
| 45 TRACE_EVENT0("blink", "EventDispatcher::dispatchEvent"); | 45 TRACE_EVENT0("blink", "EventDispatcher::dispatchEvent"); |
| 46 ASSERT(!NoEventDispatchAssertion::isEventDispatchForbidden()); | 46 ASSERT(!EventDispatchForbiddenScope::isEventDispatchForbidden()); |
| 47 if (!mediator->event()) | 47 if (!mediator->event()) |
| 48 return true; | 48 return true; |
| 49 EventDispatcher dispatcher(node, mediator->event()); | 49 EventDispatcher dispatcher(node, mediator->event()); |
| 50 return mediator->dispatchEvent(&dispatcher); | 50 return mediator->dispatchEvent(&dispatcher); |
| 51 } | 51 } |
| 52 | 52 |
| 53 EventDispatcher::EventDispatcher(Node* node, PassRefPtrWillBeRawPtr<Event> event
) | 53 EventDispatcher::EventDispatcher(Node* node, PassRefPtrWillBeRawPtr<Event> event
) |
| 54 : m_node(node) | 54 : m_node(node) |
| 55 , m_event(event) | 55 , m_event(event) |
| 56 #if ENABLE(ASSERT) | 56 #if ENABLE(ASSERT) |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 bool EventDispatcher::dispatch() | 107 bool EventDispatcher::dispatch() |
| 108 { | 108 { |
| 109 TRACE_EVENT0("blink", "EventDispatcher::dispatch"); | 109 TRACE_EVENT0("blink", "EventDispatcher::dispatch"); |
| 110 | 110 |
| 111 #if ENABLE(ASSERT) | 111 #if ENABLE(ASSERT) |
| 112 ASSERT(!m_eventDispatched); | 112 ASSERT(!m_eventDispatched); |
| 113 m_eventDispatched = true; | 113 m_eventDispatched = true; |
| 114 #endif | 114 #endif |
| 115 | 115 |
| 116 m_event->setTarget(EventPath::eventTargetRespectingTargetRules(m_node.get())
); | 116 m_event->setTarget(EventPath::eventTargetRespectingTargetRules(m_node.get())
); |
| 117 ASSERT(!NoEventDispatchAssertion::isEventDispatchForbidden()); | 117 ASSERT(!EventDispatchForbiddenScope::isEventDispatchForbidden()); |
| 118 ASSERT(m_event->target()); | 118 ASSERT(m_event->target()); |
| 119 WindowEventContext windowEventContext(m_event.get(), m_node.get(), topNodeEv
entContext()); | 119 WindowEventContext windowEventContext(m_event.get(), m_node.get(), topNodeEv
entContext()); |
| 120 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "EventDispatch"
, "data", InspectorEventDispatchEvent::data(*m_event)); | 120 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "EventDispatch"
, "data", InspectorEventDispatchEvent::data(*m_event)); |
| 121 // FIXME(361045): remove InspectorInstrumentation calls once DevTools Timeli
ne migrates to tracing. | 121 // FIXME(361045): remove InspectorInstrumentation calls once DevTools Timeli
ne migrates to tracing. |
| 122 InspectorInstrumentationCookie cookie = InspectorInstrumentation::willDispat
chEvent(&m_node->document(), *m_event, windowEventContext.window(), m_node.get()
, m_event->eventPath()); | 122 InspectorInstrumentationCookie cookie = InspectorInstrumentation::willDispat
chEvent(&m_node->document(), *m_event, windowEventContext.window(), m_node.get()
, m_event->eventPath()); |
| 123 | 123 |
| 124 void* preDispatchEventHandlerResult; | 124 void* preDispatchEventHandlerResult; |
| 125 if (dispatchEventPreProcess(preDispatchEventHandlerResult) == ContinueDispat
ching) | 125 if (dispatchEventPreProcess(preDispatchEventHandlerResult) == ContinueDispat
ching) |
| 126 if (dispatchEventAtCapturing(windowEventContext) == ContinueDispatching) | 126 if (dispatchEventAtCapturing(windowEventContext) == ContinueDispatching) |
| 127 if (dispatchEventAtTarget() == ContinueDispatching) | 127 if (dispatchEventAtTarget() == ContinueDispatching) |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 227 } | 227 } |
| 228 } | 228 } |
| 229 } | 229 } |
| 230 | 230 |
| 231 const NodeEventContext* EventDispatcher::topNodeEventContext() | 231 const NodeEventContext* EventDispatcher::topNodeEventContext() |
| 232 { | 232 { |
| 233 return m_event->eventPath().isEmpty() ? 0 : &m_event->eventPath().last(); | 233 return m_event->eventPath().isEmpty() ? 0 : &m_event->eventPath().last(); |
| 234 } | 234 } |
| 235 | 235 |
| 236 } | 236 } |
| OLD | NEW |