Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(109)

Side by Side Diff: Source/core/events/EventTarget.cpp

Issue 297823003: DevTools: Remove async call stacks support for EventTarget.addEventListener. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698