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 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 argv.append(toNode() ? toNode()->nodeName() : interfaceName()); | 101 argv.append(toNode() ? toNode()->nodeName() : interfaceName()); |
102 argv.append(eventType); | 102 argv.append(eventType); |
103 activityLogger->logEvent("blinkAddEventListener", argv.size(), argv.data
()); | 103 activityLogger->logEvent("blinkAddEventListener", argv.size(), argv.data
()); |
104 } | 104 } |
105 | 105 |
106 return ensureEventTargetData().eventListenerMap.add(eventType, listener, use
Capture); | 106 return ensureEventTargetData().eventListenerMap.add(eventType, listener, use
Capture); |
107 } | 107 } |
108 | 108 |
109 bool EventTarget::removeEventListener(const AtomicString& eventType, PassRefPtr<
EventListener> listener, bool useCapture) | 109 bool EventTarget::removeEventListener(const AtomicString& eventType, PassRefPtr<
EventListener> listener, bool useCapture) |
110 { | 110 { |
| 111 // FIXME: listener null check should throw TypeError (and be done in |
| 112 // generated bindings), but breaks legacy content. http://crbug.com/249598 |
| 113 if (!listener) |
| 114 return false; |
| 115 |
111 EventTargetData* d = eventTargetData(); | 116 EventTargetData* d = eventTargetData(); |
112 if (!d) | 117 if (!d) |
113 return false; | 118 return false; |
114 | 119 |
115 size_t indexOfRemovedListener; | 120 size_t indexOfRemovedListener; |
116 | 121 |
117 if (!d->eventListenerMap.remove(eventType, listener.get(), useCapture, index
OfRemovedListener)) | 122 if (!d->eventListenerMap.remove(eventType, listener.get(), useCapture, index
OfRemovedListener)) |
118 return false; | 123 return false; |
119 | 124 |
120 // Notify firing events planning to invoke the listener at 'index' that | 125 // Notify firing events planning to invoke the listener at 'index' that |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
382 // they have one less listener to invoke. | 387 // they have one less listener to invoke. |
383 if (d->firingEventIterators) { | 388 if (d->firingEventIterators) { |
384 for (size_t i = 0; i < d->firingEventIterators->size(); ++i) { | 389 for (size_t i = 0; i < d->firingEventIterators->size(); ++i) { |
385 d->firingEventIterators->at(i).iterator = 0; | 390 d->firingEventIterators->at(i).iterator = 0; |
386 d->firingEventIterators->at(i).end = 0; | 391 d->firingEventIterators->at(i).end = 0; |
387 } | 392 } |
388 } | 393 } |
389 } | 394 } |
390 | 395 |
391 } // namespace blink | 396 } // namespace blink |
OLD | NEW |