Changeset 274357 in webkit
- Timestamp:
- Mar 12, 2021 8:14:59 AM (17 months ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 4 edited
-
ChangeLog (modified) (1 diff)
-
dom/EventSender.h (modified) (4 diffs)
-
loader/ImageLoader.cpp (modified) (1 diff)
-
loader/ImageLoader.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r274355 r274357 1 2021-03-12 Rob Buis <rbuis@igalia.com> 2 3 Cancel image loader events after first dispatch 4 https://bugs.webkit.org/show_bug.cgi?id=218556 5 6 Reviewed by Ryosuke Niwa. 7 8 Cancel image loader events after first dispatch. 9 Also change EventSender to use WeakPtr. 10 11 * dom/EventSender.h: 12 (WebCore::EventSender<T>::dispatchEventSoon): 13 (WebCore::EventSender<T>::dispatchPendingEvents): 14 * loader/ImageLoader.cpp: 15 (WebCore::ImageLoader::dispatchPendingErrorEvent): 16 * loader/ImageLoader.h: 17 1 18 2021-03-12 Antoine Quint <graouts@webkit.org> 2 19 -
trunk/Source/WebCore/dom/EventSender.h
r262003 r274357 28 28 #include "Timer.h" 29 29 #include <wtf/Vector.h> 30 #include <wtf/WeakPtr.h> 30 31 31 32 namespace WebCore { … … 55 56 AtomString m_eventType; 56 57 Timer m_timer; 57 Vector< T*> m_dispatchSoonList;58 Vector< T*> m_dispatchingList;58 Vector<WeakPtr<T>> m_dispatchSoonList; 59 Vector<WeakPtr<T>> m_dispatchingList; 59 60 }; 60 61 … … 67 68 template<typename T> void EventSender<T>::dispatchEventSoon(T& sender) 68 69 { 69 m_dispatchSoonList.append( &sender);70 m_dispatchSoonList.append(makeWeakPtr(sender)); 70 71 if (!m_timer.isActive()) 71 72 m_timer.startOneShot(0_s); … … 100 101 m_dispatchingList.swap(m_dispatchSoonList); 101 102 for (auto& event : m_dispatchingList) { 102 if ( T*sender = event) {103 if (WeakPtr<T> sender = event) { 103 104 event = nullptr; 104 105 if (!page || sender->document().page() == page) -
trunk/Source/WebCore/loader/ImageLoader.cpp
r274199 r274357 554 554 return; 555 555 m_hasPendingErrorEvent = false; 556 errorEventSender().cancelEvent(*this); 556 557 if (element().document().hasLivingRenderTree()) 557 558 element().dispatchEvent(Event::create(eventNames().errorEvent, Event::CanBubble::No, Event::IsCancelable::No)); -
trunk/Source/WebCore/loader/ImageLoader.h
r274199 r274357 43 43 enum class RelevantMutation : bool { Yes, No }; 44 44 45 class ImageLoader : public CachedImageClient {45 class ImageLoader : public CachedImageClient, public CanMakeWeakPtr<ImageLoader> { 46 46 WTF_MAKE_FAST_ALLOCATED; 47 47 public:
Note: See TracChangeset
for help on using the changeset viewer.