Changeset 38064 in webkit
- Timestamp:
- Nov 1, 2008 12:21:53 AM (15 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r38015 r38064 1 2008-11-01 Alexey Proskuryakov <ap@webkit.org> 2 3 Reviewed by Darin Adler. 4 5 https://bugs.webkit.org/show_bug.cgi?id=22001 6 AtomicStringImpl* keys of event listener maps can outlive their strings 7 8 * fast/events/destroyed-atomic-string-expected.txt: Added. 9 * fast/events/destroyed-atomic-string.html: Added. 10 1 11 2008-10-30 Justin Garcia <justin.garcia@apple.com> 2 12 -
trunk/WebCore/ChangeLog
r38063 r38064 1 2008-11-01 Alexey Proskuryakov <ap@webkit.org> 2 3 Reviewed by Darin Adler. 4 5 https://bugs.webkit.org/show_bug.cgi?id=22001 6 AtomicStringImpl* keys of event listener maps can outlive their strings 7 8 Test: fast/events/destroyed-atomic-string.html 9 10 * dom/MessagePort.cpp: 11 (WebCore::MessagePort::addEventListener): 12 (WebCore::MessagePort::removeEventListener): 13 (WebCore::MessagePort::dispatchEvent): 14 * dom/MessagePort.h: 15 * loader/appcache/DOMApplicationCache.cpp: 16 (WebCore::DOMApplicationCache::addEventListener): 17 (WebCore::DOMApplicationCache::removeEventListener): 18 (WebCore::DOMApplicationCache::dispatchEvent): 19 * loader/appcache/DOMApplicationCache.h: 20 * xml/XMLHttpRequest.cpp: 21 (WebCore::XMLHttpRequest::addEventListener): 22 (WebCore::XMLHttpRequest::removeEventListener): 23 (WebCore::XMLHttpRequest::dispatchEvent): 24 * xml/XMLHttpRequest.h: 25 * xml/XMLHttpRequestUpload.cpp: 26 (WebCore::XMLHttpRequestUpload::addEventListener): 27 (WebCore::XMLHttpRequestUpload::removeEventListener): 28 (WebCore::XMLHttpRequestUpload::dispatchEvent): 29 * xml/XMLHttpRequestUpload.h: 30 Changed EventListenersMap to use AtomicString as key (instead of AtomicStringImpl*). 31 1 32 2008-10-31 Alexey Proskuryakov <ap@webkit.org> 2 33 -
trunk/WebCore/dom/MessagePort.cpp
r38063 r38064 253 253 void MessagePort::addEventListener(const AtomicString& eventType, PassRefPtr<EventListener> eventListener, bool) 254 254 { 255 EventListenersMap::iterator iter = m_eventListeners.find(eventType .impl());255 EventListenersMap::iterator iter = m_eventListeners.find(eventType); 256 256 if (iter == m_eventListeners.end()) { 257 257 ListenerVector listeners; 258 258 listeners.append(eventListener); 259 m_eventListeners.add(eventType .impl(), listeners);259 m_eventListeners.add(eventType, listeners); 260 260 } else { 261 261 ListenerVector& listeners = iter->second; … … 266 266 267 267 listeners.append(eventListener); 268 m_eventListeners.add(eventType .impl(), listeners);268 m_eventListeners.add(eventType, listeners); 269 269 } 270 270 } … … 272 272 void MessagePort::removeEventListener(const AtomicString& eventType, EventListener* eventListener, bool useCapture) 273 273 { 274 EventListenersMap::iterator iter = m_eventListeners.find(eventType .impl());274 EventListenersMap::iterator iter = m_eventListeners.find(eventType); 275 275 if (iter == m_eventListeners.end()) 276 276 return; … … 292 292 } 293 293 294 ListenerVector listenersCopy = m_eventListeners.get(event->type() .impl());294 ListenerVector listenersCopy = m_eventListeners.get(event->type()); 295 295 for (ListenerVector::const_iterator listenerIter = listenersCopy.begin(); listenerIter != listenersCopy.end(); ++listenerIter) { 296 296 event->setTarget(this); -
trunk/WebCore/dom/MessagePort.h
r38063 r38064 28 28 #define MessagePort_h 29 29 30 #include "AtomicStringHash.h" 30 31 #include "EventListener.h" 31 32 #include "EventTarget.h" … … 80 81 81 82 typedef Vector<RefPtr<EventListener> > ListenerVector; 82 typedef HashMap<AtomicString Impl*, ListenerVector> EventListenersMap;83 typedef HashMap<AtomicString, ListenerVector> EventListenersMap; 83 84 EventListenersMap& eventListeners() { return m_eventListeners; } 84 85 -
trunk/WebCore/loader/appcache/DOMApplicationCache.cpp
r38063 r38064 184 184 void DOMApplicationCache::addEventListener(const AtomicString& eventType, PassRefPtr<EventListener> eventListener, bool) 185 185 { 186 EventListenersMap::iterator iter = m_eventListeners.find(eventType .impl());186 EventListenersMap::iterator iter = m_eventListeners.find(eventType); 187 187 if (iter == m_eventListeners.end()) { 188 188 ListenerVector listeners; 189 189 listeners.append(eventListener); 190 m_eventListeners.add(eventType .impl(), listeners);190 m_eventListeners.add(eventType, listeners); 191 191 } else { 192 192 ListenerVector& listeners = iter->second; … … 197 197 198 198 listeners.append(eventListener); 199 m_eventListeners.add(eventType .impl(), listeners);199 m_eventListeners.add(eventType, listeners); 200 200 } 201 201 } … … 203 203 void DOMApplicationCache::removeEventListener(const AtomicString& eventType, EventListener* eventListener, bool useCapture) 204 204 { 205 EventListenersMap::iterator iter = m_eventListeners.find(eventType .impl());205 EventListenersMap::iterator iter = m_eventListeners.find(eventType); 206 206 if (iter == m_eventListeners.end()) 207 207 return; … … 223 223 } 224 224 225 ListenerVector listenersCopy = m_eventListeners.get(event->type() .impl());225 ListenerVector listenersCopy = m_eventListeners.get(event->type()); 226 226 for (ListenerVector::const_iterator listenerIter = listenersCopy.begin(); listenerIter != listenersCopy.end(); ++listenerIter) { 227 227 event->setTarget(this); -
trunk/WebCore/loader/appcache/DOMApplicationCache.h
r38063 r38064 29 29 #if ENABLE(OFFLINE_WEB_APPLICATIONS) 30 30 31 #include <wtf/RefCounted.h>31 #include "AtomicStringHash.h" 32 32 #include "EventTarget.h" 33 34 33 #include "EventListener.h" 35 34 #include <wtf/HashMap.h> 36 35 #include <wtf/PassRefPtr.h> 36 #include <wtf/RefCounted.h> 37 37 #include <wtf/Vector.h> 38 38 … … 73 73 74 74 typedef Vector<RefPtr<EventListener> > ListenerVector; 75 typedef HashMap<AtomicString Impl*, ListenerVector> EventListenersMap;75 typedef HashMap<AtomicString, ListenerVector> EventListenersMap; 76 76 EventListenersMap& eventListeners() { return m_eventListeners; } 77 77 -
trunk/WebCore/xml/XMLHttpRequest.cpp
r38063 r38064 242 242 void XMLHttpRequest::addEventListener(const AtomicString& eventType, PassRefPtr<EventListener> eventListener, bool) 243 243 { 244 EventListenersMap::iterator iter = m_eventListeners.find(eventType .impl());244 EventListenersMap::iterator iter = m_eventListeners.find(eventType); 245 245 if (iter == m_eventListeners.end()) { 246 246 ListenerVector listeners; 247 247 listeners.append(eventListener); 248 m_eventListeners.add(eventType .impl(), listeners);248 m_eventListeners.add(eventType, listeners); 249 249 } else { 250 250 ListenerVector& listeners = iter->second; … … 254 254 255 255 listeners.append(eventListener); 256 m_eventListeners.add(eventType .impl(), listeners);256 m_eventListeners.add(eventType, listeners); 257 257 } 258 258 } … … 260 260 void XMLHttpRequest::removeEventListener(const AtomicString& eventType, EventListener* eventListener, bool) 261 261 { 262 EventListenersMap::iterator iter = m_eventListeners.find(eventType .impl());262 EventListenersMap::iterator iter = m_eventListeners.find(eventType); 263 263 if (iter == m_eventListeners.end()) 264 264 return; … … 280 280 } 281 281 282 ListenerVector listenersCopy = m_eventListeners.get(evt->type() .impl());282 ListenerVector listenersCopy = m_eventListeners.get(evt->type()); 283 283 for (ListenerVector::const_iterator listenerIter = listenersCopy.begin(); listenerIter != listenersCopy.end(); ++listenerIter) { 284 284 evt->setTarget(this); -
trunk/WebCore/xml/XMLHttpRequest.h
r38063 r38064 22 22 23 23 #include "ActiveDOMObject.h" 24 #include "AtomicStringHash.h" 24 25 #include "EventListener.h" 25 26 #include "EventTarget.h" … … 98 99 99 100 typedef Vector<RefPtr<EventListener> > ListenerVector; 100 typedef HashMap<AtomicString Impl*, ListenerVector> EventListenersMap;101 typedef HashMap<AtomicString, ListenerVector> EventListenersMap; 101 102 102 103 // useCapture is not used, even for add/remove pairing (for Firefox compatibility). -
trunk/WebCore/xml/XMLHttpRequestUpload.cpp
r38063 r38064 55 55 void XMLHttpRequestUpload::addEventListener(const AtomicString& eventType, PassRefPtr<EventListener> eventListener, bool) 56 56 { 57 EventListenersMap::iterator iter = m_eventListeners.find(eventType .impl());57 EventListenersMap::iterator iter = m_eventListeners.find(eventType); 58 58 if (iter == m_eventListeners.end()) { 59 59 ListenerVector listeners; 60 60 listeners.append(eventListener); 61 m_eventListeners.add(eventType .impl(), listeners);61 m_eventListeners.add(eventType, listeners); 62 62 } else { 63 63 ListenerVector& listeners = iter->second; … … 68 68 69 69 listeners.append(eventListener); 70 m_eventListeners.add(eventType .impl(), listeners);70 m_eventListeners.add(eventType, listeners); 71 71 } 72 72 } … … 74 74 void XMLHttpRequestUpload::removeEventListener(const AtomicString& eventType, EventListener* eventListener, bool) 75 75 { 76 EventListenersMap::iterator iter = m_eventListeners.find(eventType .impl());76 EventListenersMap::iterator iter = m_eventListeners.find(eventType); 77 77 if (iter == m_eventListeners.end()) 78 78 return; … … 95 95 } 96 96 97 ListenerVector listenersCopy = m_eventListeners.get(evt->type() .impl());97 ListenerVector listenersCopy = m_eventListeners.get(evt->type()); 98 98 for (ListenerVector::const_iterator listenerIter = listenersCopy.begin(); listenerIter != listenersCopy.end(); ++listenerIter) { 99 99 evt->setTarget(this); -
trunk/WebCore/xml/XMLHttpRequestUpload.h
r38063 r38064 27 27 #define XMLHttpRequestUpload_h 28 28 29 #include "AtomicStringHash.h" 29 30 #include "EventListener.h" 30 31 #include "EventTarget.h" … … 77 78 78 79 typedef Vector<RefPtr<EventListener> > ListenerVector; 79 typedef HashMap<AtomicString Impl*, ListenerVector> EventListenersMap;80 typedef HashMap<AtomicString, ListenerVector> EventListenersMap; 80 81 81 82 virtual void addEventListener(const AtomicString& eventType, PassRefPtr<EventListener>, bool useCapture);
Note: See TracChangeset
for help on using the changeset viewer.