| 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 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 234 const LocalDOMWindow* window = m_currentTarget ? m_currentTarget->toDOMW
indow() : 0; | 234 const LocalDOMWindow* window = m_currentTarget ? m_currentTarget->toDOMW
indow() : 0; |
| 235 if (window) | 235 if (window) |
| 236 window->printErrorMessage("Unable to preventDefault inside passive e
vent listener invocation."); | 236 window->printErrorMessage("Unable to preventDefault inside passive e
vent listener invocation."); |
| 237 return; | 237 return; |
| 238 } | 238 } |
| 239 | 239 |
| 240 if (m_cancelable) | 240 if (m_cancelable) |
| 241 m_defaultPrevented = true; | 241 m_defaultPrevented = true; |
| 242 } | 242 } |
| 243 | 243 |
| 244 void Event::setTarget(PassRefPtrWillBeRawPtr<EventTarget> target) | 244 void Event::setTarget(RawPtr<EventTarget> target) |
| 245 { | 245 { |
| 246 if (m_target == target) | 246 if (m_target == target) |
| 247 return; | 247 return; |
| 248 | 248 |
| 249 m_target = target; | 249 m_target = target; |
| 250 if (m_target) | 250 if (m_target) |
| 251 receivedTarget(); | 251 receivedTarget(); |
| 252 } | 252 } |
| 253 | 253 |
| 254 void Event::receivedTarget() | 254 void Event::receivedTarget() |
| 255 { | 255 { |
| 256 } | 256 } |
| 257 | 257 |
| 258 void Event::setUnderlyingEvent(PassRefPtrWillBeRawPtr<Event> ue) | 258 void Event::setUnderlyingEvent(RawPtr<Event> ue) |
| 259 { | 259 { |
| 260 // Prohibit creation of a cycle -- just do nothing in that case. | 260 // Prohibit creation of a cycle -- just do nothing in that case. |
| 261 for (Event* e = ue.get(); e; e = e->underlyingEvent()) | 261 for (Event* e = ue.get(); e; e = e->underlyingEvent()) |
| 262 if (e == this) | 262 if (e == this) |
| 263 return; | 263 return; |
| 264 m_underlyingEvent = ue; | 264 m_underlyingEvent = ue; |
| 265 } | 265 } |
| 266 | 266 |
| 267 void Event::initEventPath(Node& node) | 267 void Event::initEventPath(Node& node) |
| 268 { | 268 { |
| 269 if (!m_eventPath) { | 269 if (!m_eventPath) { |
| 270 m_eventPath = adoptPtrWillBeNoop(new EventPath(node, this)); | 270 m_eventPath = new EventPath(node, this); |
| 271 } else { | 271 } else { |
| 272 m_eventPath->initializeWith(node, this); | 272 m_eventPath->initializeWith(node, this); |
| 273 } | 273 } |
| 274 } | 274 } |
| 275 | 275 |
| 276 WillBeHeapVector<RefPtrWillBeMember<EventTarget>> Event::path(ScriptState* scrip
tState) const | 276 HeapVector<Member<EventTarget>> Event::path(ScriptState* scriptState) const |
| 277 { | 277 { |
| 278 return pathInternal(scriptState, NonEmptyAfterDispatch); | 278 return pathInternal(scriptState, NonEmptyAfterDispatch); |
| 279 } | 279 } |
| 280 | 280 |
| 281 WillBeHeapVector<RefPtrWillBeMember<EventTarget>> Event::deepPath(ScriptState* s
criptState) const | 281 HeapVector<Member<EventTarget>> Event::deepPath(ScriptState* scriptState) const |
| 282 { | 282 { |
| 283 return pathInternal(scriptState, EmptyAfterDispatch); | 283 return pathInternal(scriptState, EmptyAfterDispatch); |
| 284 } | 284 } |
| 285 | 285 |
| 286 WillBeHeapVector<RefPtrWillBeMember<EventTarget>> Event::pathInternal(ScriptStat
e* scriptState, EventPathMode mode) const | 286 HeapVector<Member<EventTarget>> Event::pathInternal(ScriptState* scriptState, Ev
entPathMode mode) const |
| 287 { | 287 { |
| 288 if (m_target) | 288 if (m_target) |
| 289 OriginsUsingFeatures::countOriginOrIsolatedWorldHumanReadableName(script
State, *m_target, OriginsUsingFeatures::Feature::EventPath); | 289 OriginsUsingFeatures::countOriginOrIsolatedWorldHumanReadableName(script
State, *m_target, OriginsUsingFeatures::Feature::EventPath); |
| 290 | 290 |
| 291 if (!m_currentTarget) { | 291 if (!m_currentTarget) { |
| 292 ASSERT(m_eventPhase == Event::NONE); | 292 ASSERT(m_eventPhase == Event::NONE); |
| 293 if (!m_eventPath) { | 293 if (!m_eventPath) { |
| 294 // Before dispatching the event | 294 // Before dispatching the event |
| 295 return WillBeHeapVector<RefPtrWillBeMember<EventTarget>>(); | 295 return HeapVector<Member<EventTarget>>(); |
| 296 } | 296 } |
| 297 ASSERT(!m_eventPath->isEmpty()); | 297 ASSERT(!m_eventPath->isEmpty()); |
| 298 // After dispatching the event | 298 // After dispatching the event |
| 299 if (mode == EmptyAfterDispatch) | 299 if (mode == EmptyAfterDispatch) |
| 300 return WillBeHeapVector<RefPtrWillBeMember<EventTarget>>(); | 300 return HeapVector<Member<EventTarget>>(); |
| 301 return m_eventPath->last().treeScopeEventContext().ensureEventPath(*m_ev
entPath); | 301 return m_eventPath->last().treeScopeEventContext().ensureEventPath(*m_ev
entPath); |
| 302 } | 302 } |
| 303 | 303 |
| 304 if (Node* node = m_currentTarget->toNode()) { | 304 if (Node* node = m_currentTarget->toNode()) { |
| 305 ASSERT(m_eventPath); | 305 ASSERT(m_eventPath); |
| 306 size_t eventPathSize = m_eventPath->size(); | 306 size_t eventPathSize = m_eventPath->size(); |
| 307 for (size_t i = 0; i < eventPathSize; ++i) { | 307 for (size_t i = 0; i < eventPathSize; ++i) { |
| 308 if (node == (*m_eventPath)[i].node()) { | 308 if (node == (*m_eventPath)[i].node()) { |
| 309 return (*m_eventPath)[i].treeScopeEventContext().ensureEventPath
(*m_eventPath); | 309 return (*m_eventPath)[i].treeScopeEventContext().ensureEventPath
(*m_eventPath); |
| 310 } | 310 } |
| 311 } | 311 } |
| 312 ASSERT_NOT_REACHED(); | 312 ASSERT_NOT_REACHED(); |
| 313 } | 313 } |
| 314 | 314 |
| 315 // Returns [window] for events that are directly dispatched to the window ob
ject; | 315 // Returns [window] for events that are directly dispatched to the window ob
ject; |
| 316 // e.g., window.load, pageshow, etc. | 316 // e.g., window.load, pageshow, etc. |
| 317 if (LocalDOMWindow* window = m_currentTarget->toDOMWindow()) | 317 if (LocalDOMWindow* window = m_currentTarget->toDOMWindow()) |
| 318 return WillBeHeapVector<RefPtrWillBeMember<EventTarget>>(1, window); | 318 return HeapVector<Member<EventTarget>>(1, window); |
| 319 | 319 |
| 320 return WillBeHeapVector<RefPtrWillBeMember<EventTarget>>(); | 320 return HeapVector<Member<EventTarget>>(); |
| 321 } | 321 } |
| 322 | 322 |
| 323 PassRefPtrWillBeRawPtr<EventDispatchMediator> Event::createMediator() | 323 RawPtr<EventDispatchMediator> Event::createMediator() |
| 324 { | 324 { |
| 325 return EventDispatchMediator::create(this); | 325 return EventDispatchMediator::create(this); |
| 326 } | 326 } |
| 327 | 327 |
| 328 EventTarget* Event::currentTarget() const | 328 EventTarget* Event::currentTarget() const |
| 329 { | 329 { |
| 330 if (!m_currentTarget) | 330 if (!m_currentTarget) |
| 331 return nullptr; | 331 return nullptr; |
| 332 Node* node = m_currentTarget->toNode(); | 332 Node* node = m_currentTarget->toNode(); |
| 333 if (node && node->isSVGElement()) { | 333 if (node && node->isSVGElement()) { |
| (...skipping 23 matching lines...) Expand all Loading... |
| 357 | 357 |
| 358 DEFINE_TRACE(Event) | 358 DEFINE_TRACE(Event) |
| 359 { | 359 { |
| 360 visitor->trace(m_currentTarget); | 360 visitor->trace(m_currentTarget); |
| 361 visitor->trace(m_target); | 361 visitor->trace(m_target); |
| 362 visitor->trace(m_underlyingEvent); | 362 visitor->trace(m_underlyingEvent); |
| 363 visitor->trace(m_eventPath); | 363 visitor->trace(m_eventPath); |
| 364 } | 364 } |
| 365 | 365 |
| 366 } // namespace blink | 366 } // namespace blink |
| OLD | NEW |