Changeset 231248 in webkit
- Timestamp:
- May 2, 2018 11:39:20 AM (6 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r231236 r231248 1 2018-05-02 Chris Dumez <cdumez@apple.com> 2 3 document.open() event listener removal is not immediate 4 https://bugs.webkit.org/show_bug.cgi?id=185191 5 6 Reviewed by Darin Adler. 7 8 Add layout test coverage. 9 10 * fast/dom/Document/document-open-removes-all-listeners-expected.txt: Added. 11 * fast/dom/Document/document-open-removes-all-listeners.html: Added. 12 1 13 2018-05-01 Brent Fulgham <bfulgham@apple.com> 2 14 -
trunk/Source/WebCore/ChangeLog
r231245 r231248 1 2018-05-02 Chris Dumez <cdumez@apple.com> 2 3 document.open() event listener removal is not immediate 4 https://bugs.webkit.org/show_bug.cgi?id=185191 5 6 Reviewed by Darin Adler. 7 8 We need to make sure we set the 'wasremoved' flag on RegisteredEventListeners 9 whenever they get removed from the EventListenerMap. We were doing so correctly 10 in EventListenerMap:remove() but not EventListenerMap::clear(). This patch 11 updates clear() accordingly. 12 13 The reason we need to set this flag is that RegisteredEventListeners is RefCounted 14 and EventTarget::fireEventListeners() may be currently running and calling 15 each listener one by one, holding a reference to all listener of a given event. 16 17 Test: fast/dom/Document/document-open-removes-all-listeners.html 18 19 * dom/EventListenerMap.cpp: 20 (WebCore::EventListenerMap::clear): 21 1 22 2018-05-02 Zalan Bujtas <zalan@apple.com> 2 23 -
trunk/Source/WebCore/dom/EventListenerMap.cpp
r223476 r231248 87 87 assertNoActiveIterators(); 88 88 89 for (auto& entry : m_entries) { 90 for (auto& listener : *entry.second) 91 listener->markAsRemoved(); 92 } 93 89 94 m_entries.clear(); 90 95 }
Note: See TracChangeset
for help on using the changeset viewer.