OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2001 Peter Kelly (pmk@post.com) | 2 * Copyright (C) 2001 Peter Kelly (pmk@post.com) |
3 * Copyright (C) 2001 Tobias Anton (anton@stud.fbi.fh-darmstadt.de) | 3 * Copyright (C) 2001 Tobias Anton (anton@stud.fbi.fh-darmstadt.de) |
4 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) | 4 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) |
5 * Copyright (C) 2003, 2005, 2006, 2008 Apple Inc. All rights reserved. | 5 * Copyright (C) 2003, 2005, 2006, 2008 Apple Inc. All rights reserved. |
6 * | 6 * |
7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
217 | 217 |
218 EventPath& Event::ensureEventPath() | 218 EventPath& Event::ensureEventPath() |
219 { | 219 { |
220 if (!m_eventPath) | 220 if (!m_eventPath) |
221 m_eventPath = adoptPtrWillBeNoop(new EventPath(this)); | 221 m_eventPath = adoptPtrWillBeNoop(new EventPath(this)); |
222 return *m_eventPath; | 222 return *m_eventPath; |
223 } | 223 } |
224 | 224 |
225 PassRefPtrWillBeRawPtr<StaticNodeList> Event::path() const | 225 PassRefPtrWillBeRawPtr<StaticNodeList> Event::path() const |
226 { | 226 { |
227 if (!m_currentTarget || !m_currentTarget->toNode()) | 227 if (!m_currentTarget) { |
| 228 ASSERT(m_eventPhase == PhaseType::NONE); |
| 229 if (!m_eventPath) { |
| 230 // Before dispatching the event |
| 231 return StaticNodeList::createEmpty(); |
| 232 } |
| 233 ASSERT(!m_eventPath->isEmpty()); |
| 234 // After dispatching the event |
| 235 return m_eventPath->last().treeScopeEventContext().ensureEventPath(*m_ev
entPath); |
| 236 } |
| 237 if (!m_currentTarget->toNode()) |
228 return StaticNodeList::createEmpty(); | 238 return StaticNodeList::createEmpty(); |
229 Node* node = m_currentTarget->toNode(); | 239 Node* node = m_currentTarget->toNode(); |
230 // FIXME: Support SVG Elements. | 240 // FIXME: Support SVG Elements. |
231 if (node->isSVGElement()) | 241 if (node->isSVGElement()) |
232 return StaticNodeList::createEmpty(); | 242 return StaticNodeList::createEmpty(); |
233 size_t eventPathSize = m_eventPath->size(); | 243 size_t eventPathSize = m_eventPath->size(); |
234 for (size_t i = 0; i < eventPathSize; ++i) { | 244 for (size_t i = 0; i < eventPathSize; ++i) { |
235 if (node == (*m_eventPath)[i].node()) { | 245 if (node == (*m_eventPath)[i].node()) { |
236 return (*m_eventPath)[i].treeScopeEventContext().ensureEventPath(*m_
eventPath); | 246 return (*m_eventPath)[i].treeScopeEventContext().ensureEventPath(*m_
eventPath); |
237 } | 247 } |
(...skipping 15 matching lines...) Expand all Loading... |
253 | 263 |
254 void Event::trace(Visitor* visitor) | 264 void Event::trace(Visitor* visitor) |
255 { | 265 { |
256 visitor->trace(m_currentTarget); | 266 visitor->trace(m_currentTarget); |
257 visitor->trace(m_target); | 267 visitor->trace(m_target); |
258 visitor->trace(m_underlyingEvent); | 268 visitor->trace(m_underlyingEvent); |
259 visitor->trace(m_eventPath); | 269 visitor->trace(m_eventPath); |
260 } | 270 } |
261 | 271 |
262 } // namespace blink | 272 } // namespace blink |
OLD | NEW |