Title: [280132] releases/WebKitGTK/webkit-2.32/Source/WebCore
- Revision
- 280132
- Author
- [email protected]
- Date
- 2021-07-21 07:44:35 -0700 (Wed, 21 Jul 2021)
Log Message
Merge r274357 - Cancel image loader events after first dispatch
https://bugs.webkit.org/show_bug.cgi?id=218556
Patch by Rob Buis <[email protected]> on 2021-03-12
Reviewed by Ryosuke Niwa.
Cancel image loader events after first dispatch.
Also change EventSender to use WeakPtr.
* dom/EventSender.h:
(WebCore::EventSender<T>::dispatchEventSoon):
(WebCore::EventSender<T>::dispatchPendingEvents):
* loader/ImageLoader.cpp:
(WebCore::ImageLoader::dispatchPendingErrorEvent):
* loader/ImageLoader.h:
Modified Paths
Diff
Modified: releases/WebKitGTK/webkit-2.32/Source/WebCore/ChangeLog (280131 => 280132)
--- releases/WebKitGTK/webkit-2.32/Source/WebCore/ChangeLog 2021-07-21 14:44:25 UTC (rev 280131)
+++ releases/WebKitGTK/webkit-2.32/Source/WebCore/ChangeLog 2021-07-21 14:44:35 UTC (rev 280132)
@@ -1,3 +1,20 @@
+2021-03-12 Rob Buis <[email protected]>
+
+ Cancel image loader events after first dispatch
+ https://bugs.webkit.org/show_bug.cgi?id=218556
+
+ Reviewed by Ryosuke Niwa.
+
+ Cancel image loader events after first dispatch.
+ Also change EventSender to use WeakPtr.
+
+ * dom/EventSender.h:
+ (WebCore::EventSender<T>::dispatchEventSoon):
+ (WebCore::EventSender<T>::dispatchPendingEvents):
+ * loader/ImageLoader.cpp:
+ (WebCore::ImageLoader::dispatchPendingErrorEvent):
+ * loader/ImageLoader.h:
+
2021-06-18 Philippe Normand <[email protected]>
[MSE][GStreamer] Soundcloud serves MP4 audio with empty tfdt boxes
Modified: releases/WebKitGTK/webkit-2.32/Source/WebCore/dom/EventSender.h (280131 => 280132)
--- releases/WebKitGTK/webkit-2.32/Source/WebCore/dom/EventSender.h 2021-07-21 14:44:25 UTC (rev 280131)
+++ releases/WebKitGTK/webkit-2.32/Source/WebCore/dom/EventSender.h 2021-07-21 14:44:35 UTC (rev 280132)
@@ -27,6 +27,7 @@
#include "Timer.h"
#include <wtf/Vector.h>
+#include <wtf/WeakPtr.h>
namespace WebCore {
@@ -54,8 +55,8 @@
AtomString m_eventType;
Timer m_timer;
- Vector<T*> m_dispatchSoonList;
- Vector<T*> m_dispatchingList;
+ Vector<WeakPtr<T>> m_dispatchSoonList;
+ Vector<WeakPtr<T>> m_dispatchingList;
};
template<typename T> EventSender<T>::EventSender(const AtomString& eventType)
@@ -66,7 +67,7 @@
template<typename T> void EventSender<T>::dispatchEventSoon(T& sender)
{
- m_dispatchSoonList.append(&sender);
+ m_dispatchSoonList.append(makeWeakPtr(sender));
if (!m_timer.isActive())
m_timer.startOneShot(0_s);
}
@@ -99,7 +100,7 @@
m_dispatchingList.swap(m_dispatchSoonList);
for (auto& event : m_dispatchingList) {
- if (T* sender = event) {
+ if (WeakPtr<T> sender = event) {
event = nullptr;
if (!page || sender->document().page() == page)
sender->dispatchPendingEvent(this);
Modified: releases/WebKitGTK/webkit-2.32/Source/WebCore/loader/ImageLoader.cpp (280131 => 280132)
--- releases/WebKitGTK/webkit-2.32/Source/WebCore/loader/ImageLoader.cpp 2021-07-21 14:44:25 UTC (rev 280131)
+++ releases/WebKitGTK/webkit-2.32/Source/WebCore/loader/ImageLoader.cpp 2021-07-21 14:44:35 UTC (rev 280132)
@@ -552,6 +552,7 @@
if (!m_hasPendingErrorEvent)
return;
m_hasPendingErrorEvent = false;
+ errorEventSender().cancelEvent(*this);
if (element().document().hasLivingRenderTree())
element().dispatchEvent(Event::create(eventNames().errorEvent, Event::CanBubble::No, Event::IsCancelable::No));
Modified: releases/WebKitGTK/webkit-2.32/Source/WebCore/loader/ImageLoader.h (280131 => 280132)
--- releases/WebKitGTK/webkit-2.32/Source/WebCore/loader/ImageLoader.h 2021-07-21 14:44:25 UTC (rev 280131)
+++ releases/WebKitGTK/webkit-2.32/Source/WebCore/loader/ImageLoader.h 2021-07-21 14:44:35 UTC (rev 280132)
@@ -42,7 +42,7 @@
enum class RelevantMutation : bool { Yes, No };
-class ImageLoader : public CachedImageClient {
+class ImageLoader : public CachedImageClient, public CanMakeWeakPtr<ImageLoader> {
WTF_MAKE_FAST_ALLOCATED;
public:
virtual ~ImageLoader();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes