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 | 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All |
6 * rights reserved. | 6 * rights reserved. |
7 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 7 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. | 8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. |
9 * (http://www.torchmobile.com/) | 9 * (http://www.torchmobile.com/) |
10 * Copyright (C) 2011 Google Inc. All rights reserved. | 10 * Copyright (C) 2011 Google Inc. All rights reserved. |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 // Trigger bubbling event handlers, starting at the bottom and working our way | 211 // Trigger bubbling event handlers, starting at the bottom and working our way |
212 // up. | 212 // up. |
213 size_t size = m_event->eventPath().size(); | 213 size_t size = m_event->eventPath().size(); |
214 for (size_t i = 1; i < size; ++i) { | 214 for (size_t i = 1; i < size; ++i) { |
215 const NodeEventContext& eventContext = m_event->eventPath()[i]; | 215 const NodeEventContext& eventContext = m_event->eventPath()[i]; |
216 if (eventContext.currentTargetSameAsTarget()) { | 216 if (eventContext.currentTargetSameAsTarget()) { |
217 m_event->setEventPhase(Event::kAtTarget); | 217 m_event->setEventPhase(Event::kAtTarget); |
218 } else if (m_event->bubbles() && !m_event->cancelBubble()) { | 218 } else if (m_event->bubbles() && !m_event->cancelBubble()) { |
219 m_event->setEventPhase(Event::kBubblingPhase); | 219 m_event->setEventPhase(Event::kBubblingPhase); |
220 } else { | 220 } else { |
221 if (m_event->bubbles() && m_event->cancelBubble() && | |
222 eventContext.node() && | |
223 eventContext.node()->hasEventListeners(m_event->type())) | |
224 UseCounter::count(eventContext.node()->document(), | |
225 UseCounter::EventCancelBubbleAffected); | |
226 continue; | 221 continue; |
227 } | 222 } |
228 eventContext.handleLocalEvents(*m_event); | 223 eventContext.handleLocalEvents(*m_event); |
229 if (m_event->propagationStopped()) | 224 if (m_event->propagationStopped()) |
230 return; | 225 return; |
231 } | 226 } |
232 if (m_event->bubbles() && !m_event->cancelBubble()) { | 227 if (m_event->bubbles() && !m_event->cancelBubble()) { |
233 m_event->setEventPhase(Event::kBubblingPhase); | 228 m_event->setEventPhase(Event::kBubblingPhase); |
234 m_event->eventPath().windowEventContext().handleLocalEvents(*m_event); | 229 m_event->eventPath().windowEventContext().handleLocalEvents(*m_event); |
235 } else if (m_event->bubbles() && | |
236 m_event->eventPath().windowEventContext().window() && | |
237 m_event->eventPath() | |
238 .windowEventContext() | |
239 .window() | |
240 ->hasEventListeners(m_event->type())) { | |
241 UseCounter::count(m_event->eventPath() | |
242 .windowEventContext() | |
243 .window() | |
244 ->getExecutionContext(), | |
245 UseCounter::EventCancelBubbleAffected); | |
246 } | 230 } |
247 } | 231 } |
248 | 232 |
249 inline void EventDispatcher::dispatchEventPostProcess( | 233 inline void EventDispatcher::dispatchEventPostProcess( |
250 EventDispatchHandlingState* preDispatchEventHandlerResult) { | 234 EventDispatchHandlingState* preDispatchEventHandlerResult) { |
251 m_event->setTarget(EventPath::eventTargetRespectingTargetRules(*m_node)); | 235 m_event->setTarget(EventPath::eventTargetRespectingTargetRules(*m_node)); |
252 // https://dom.spec.whatwg.org/#concept-event-dispatch | 236 // https://dom.spec.whatwg.org/#concept-event-dispatch |
253 // 14. Unset event’s dispatch flag, stop propagation flag, and stop immediate | 237 // 14. Unset event’s dispatch flag, stop propagation flag, and stop immediate |
254 // propagation flag. | 238 // propagation flag. |
255 m_event->setStopPropagation(false); | 239 m_event->setStopPropagation(false); |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 // events to open select boxes. | 304 // events to open select boxes. |
321 if (!m_event->isTrusted() && m_event->isMouseEvent() && | 305 if (!m_event->isTrusted() && m_event->isMouseEvent() && |
322 m_event->type() == EventTypeNames::mousedown && | 306 m_event->type() == EventTypeNames::mousedown && |
323 isHTMLSelectElement(*m_node)) { | 307 isHTMLSelectElement(*m_node)) { |
324 UseCounter::count(m_node->document(), | 308 UseCounter::count(m_node->document(), |
325 UseCounter::UntrustedMouseDownEventDispatchedToSelect); | 309 UseCounter::UntrustedMouseDownEventDispatchedToSelect); |
326 } | 310 } |
327 } | 311 } |
328 | 312 |
329 } // namespace blink | 313 } // namespace blink |
OLD | NEW |