| 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 Apple Inc. All rights reserved. | 5 * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. |
| 6 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 6 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) |
| 7 * (C) 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org> | 7 * (C) 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org> |
| 8 * | 8 * |
| 9 * Redistribution and use in source and binary forms, with or without | 9 * Redistribution and use in source and binary forms, with or without |
| 10 * modification, are permitted provided that the following conditions | 10 * modification, are permitted provided that the following conditions |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 78 return context->executingWindow(); | 78 return context->executingWindow(); |
| 79 return 0; | 79 return 0; |
| 80 } | 80 } |
| 81 | 81 |
| 82 bool EventTarget::addEventListener(const AtomicString& eventType, PassRefPtr<Eve
ntListener> listener, bool useCapture) | 82 bool EventTarget::addEventListener(const AtomicString& eventType, PassRefPtr<Eve
ntListener> listener, bool useCapture) |
| 83 { | 83 { |
| 84 // FIXME: listener null check should throw TypeError (and be done in | 84 // FIXME: listener null check should throw TypeError (and be done in |
| 85 // generated bindings), but breaks legacy content. http://crbug.com/249598 | 85 // generated bindings), but breaks legacy content. http://crbug.com/249598 |
| 86 if (!listener) | 86 if (!listener) |
| 87 return false; | 87 return false; |
| 88 EventListener* eventListener = listener.get(); | 88 return ensureEventTargetData().eventListenerMap.add(eventType, listener, use
Capture); |
| 89 if (ensureEventTargetData().eventListenerMap.add(eventType, listener, useCap
ture)) { | |
| 90 InspectorInstrumentation::didAddEventListener(this, eventType, eventList
ener, useCapture); | |
| 91 return true; | |
| 92 } | |
| 93 return false; | |
| 94 } | 89 } |
| 95 | 90 |
| 96 bool EventTarget::removeEventListener(const AtomicString& eventType, EventListen
er* listener, bool useCapture) | 91 bool EventTarget::removeEventListener(const AtomicString& eventType, EventListen
er* listener, bool useCapture) |
| 97 { | 92 { |
| 98 EventTargetData* d = eventTargetData(); | 93 EventTargetData* d = eventTargetData(); |
| 99 if (!d) | 94 if (!d) |
| 100 return false; | 95 return false; |
| 101 | 96 |
| 102 size_t indexOfRemovedListener; | 97 size_t indexOfRemovedListener; |
| 103 | 98 |
| 104 RefPtr<EventListener> protect(listener); | |
| 105 if (!d->eventListenerMap.remove(eventType, listener, useCapture, indexOfRemo
vedListener)) | 99 if (!d->eventListenerMap.remove(eventType, listener, useCapture, indexOfRemo
vedListener)) |
| 106 return false; | 100 return false; |
| 107 InspectorInstrumentation::didRemoveEventListener(this, eventType, listener,
useCapture); | |
| 108 | 101 |
| 109 // Notify firing events planning to invoke the listener at 'index' that | 102 // Notify firing events planning to invoke the listener at 'index' that |
| 110 // they have one less listener to invoke. | 103 // they have one less listener to invoke. |
| 111 if (!d->firingEventIterators) | 104 if (!d->firingEventIterators) |
| 112 return true; | 105 return true; |
| 113 for (size_t i = 0; i < d->firingEventIterators->size(); ++i) { | 106 for (size_t i = 0; i < d->firingEventIterators->size(); ++i) { |
| 114 FiringEventIterator& firingIterator = d->firingEventIterators->at(i); | 107 FiringEventIterator& firingIterator = d->firingEventIterators->at(i); |
| 115 if (eventType != firingIterator.eventType) | 108 if (eventType != firingIterator.eventType) |
| 116 continue; | 109 continue; |
| 117 | 110 |
| (...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 358 EventTargetData* d = eventTargetData(); | 351 EventTargetData* d = eventTargetData(); |
| 359 return d ? d->eventListenerMap.eventTypes() : Vector<AtomicString>(); | 352 return d ? d->eventListenerMap.eventTypes() : Vector<AtomicString>(); |
| 360 } | 353 } |
| 361 | 354 |
| 362 void EventTarget::removeAllEventListeners() | 355 void EventTarget::removeAllEventListeners() |
| 363 { | 356 { |
| 364 EventTargetData* d = eventTargetData(); | 357 EventTargetData* d = eventTargetData(); |
| 365 if (!d) | 358 if (!d) |
| 366 return; | 359 return; |
| 367 d->eventListenerMap.clear(); | 360 d->eventListenerMap.clear(); |
| 368 InspectorInstrumentation::didRemoveAllEventListeners(this); | |
| 369 | 361 |
| 370 // Notify firing events planning to invoke the listener at 'index' that | 362 // Notify firing events planning to invoke the listener at 'index' that |
| 371 // they have one less listener to invoke. | 363 // they have one less listener to invoke. |
| 372 if (d->firingEventIterators) { | 364 if (d->firingEventIterators) { |
| 373 for (size_t i = 0; i < d->firingEventIterators->size(); ++i) { | 365 for (size_t i = 0; i < d->firingEventIterators->size(); ++i) { |
| 374 d->firingEventIterators->at(i).iterator = 0; | 366 d->firingEventIterators->at(i).iterator = 0; |
| 375 d->firingEventIterators->at(i).end = 0; | 367 d->firingEventIterators->at(i).end = 0; |
| 376 } | 368 } |
| 377 } | 369 } |
| 378 } | 370 } |
| 379 | 371 |
| 380 } // namespace WebCore | 372 } // namespace WebCore |
| OLD | NEW |