Title: [259447] trunk/Source
- Revision
- 259447
- Author
- [email protected]
- Date
- 2020-04-03 00:21:03 -0700 (Fri, 03 Apr 2020)
Log Message
WebCore::HTMLMediaElement::mediaCanStart crashes
https://bugs.webkit.org/show_bug.cgi?id=209950
Reviewed by Jer Noble.
Source/WebCore:
Use WeakHashSet instead of HashSet to record MediaCanStartListeners in Document.
* dom/Document.cpp:
(WebCore::Document::addMediaCanStartListener):
(WebCore::Document::removeMediaCanStartListener):
(WebCore::Document::takeAnyMediaCanStartListener):
* dom/Document.h:
* page/MediaCanStartListener.h:
Source/WebKit:
UserMediaPermissionRequestManager does not need to inherit from
CanMakeWeakPtr<UserMediaPermissionRequestManager> because its
parent class MediaCanStartListener supports WeakPtr now.
* WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (259446 => 259447)
--- trunk/Source/WebCore/ChangeLog 2020-04-03 07:08:42 UTC (rev 259446)
+++ trunk/Source/WebCore/ChangeLog 2020-04-03 07:21:03 UTC (rev 259447)
@@ -1,3 +1,19 @@
+2020-04-03 Peng Liu <[email protected]>
+
+ WebCore::HTMLMediaElement::mediaCanStart crashes
+ https://bugs.webkit.org/show_bug.cgi?id=209950
+
+ Reviewed by Jer Noble.
+
+ Use WeakHashSet instead of HashSet to record MediaCanStartListeners in Document.
+
+ * dom/Document.cpp:
+ (WebCore::Document::addMediaCanStartListener):
+ (WebCore::Document::removeMediaCanStartListener):
+ (WebCore::Document::takeAnyMediaCanStartListener):
+ * dom/Document.h:
+ * page/MediaCanStartListener.h:
+
2020-04-03 Simon Fraser <[email protected]>
Flesh out enclosingScrollableArea() implementations
Modified: trunk/Source/WebCore/dom/Document.cpp (259446 => 259447)
--- trunk/Source/WebCore/dom/Document.cpp 2020-04-03 07:08:42 UTC (rev 259446)
+++ trunk/Source/WebCore/dom/Document.cpp 2020-04-03 07:21:03 UTC (rev 259447)
@@ -6422,19 +6422,25 @@
void Document::addMediaCanStartListener(MediaCanStartListener& listener)
{
- ASSERT(!m_mediaCanStartListeners.contains(&listener));
- m_mediaCanStartListeners.add(&listener);
+ ASSERT(!m_mediaCanStartListeners.contains(listener));
+ m_mediaCanStartListeners.add(listener);
}
void Document::removeMediaCanStartListener(MediaCanStartListener& listener)
{
- ASSERT(m_mediaCanStartListeners.contains(&listener));
- m_mediaCanStartListeners.remove(&listener);
+ ASSERT(m_mediaCanStartListeners.contains(listener));
+ m_mediaCanStartListeners.remove(listener);
}
MediaCanStartListener* Document::takeAnyMediaCanStartListener()
{
- return m_mediaCanStartListeners.takeAny();
+ if (m_mediaCanStartListeners.computesEmpty())
+ return nullptr;
+
+ MediaCanStartListener* listener = m_mediaCanStartListeners.begin().get();
+ m_mediaCanStartListeners.remove(*listener);
+
+ return listener;
}
#if ENABLE(DEVICE_ORIENTATION) && PLATFORM(IOS_FAMILY)
Modified: trunk/Source/WebCore/dom/Document.h (259446 => 259447)
--- trunk/Source/WebCore/dom/Document.h 2020-04-03 07:08:42 UTC (rev 259446)
+++ trunk/Source/WebCore/dom/Document.h 2020-04-03 07:21:03 UTC (rev 259447)
@@ -1825,7 +1825,7 @@
RenderPtr<RenderView> m_renderView;
- HashSet<MediaCanStartListener*> m_mediaCanStartListeners;
+ WeakHashSet<MediaCanStartListener> m_mediaCanStartListeners;
#if ENABLE(FULLSCREEN_API)
UniqueRef<FullscreenManager> m_fullscreenManager;
Modified: trunk/Source/WebCore/page/MediaCanStartListener.h (259446 => 259447)
--- trunk/Source/WebCore/page/MediaCanStartListener.h 2020-04-03 07:08:42 UTC (rev 259446)
+++ trunk/Source/WebCore/page/MediaCanStartListener.h 2020-04-03 07:21:03 UTC (rev 259447)
@@ -25,11 +25,13 @@
#pragma once
+#include <wtf/WeakPtr.h>
+
namespace WebCore {
class Document;
-class MediaCanStartListener {
+class MediaCanStartListener : public CanMakeWeakPtr<MediaCanStartListener> {
public:
virtual void mediaCanStart(Document&) = 0;
protected:
Modified: trunk/Source/WebKit/ChangeLog (259446 => 259447)
--- trunk/Source/WebKit/ChangeLog 2020-04-03 07:08:42 UTC (rev 259446)
+++ trunk/Source/WebKit/ChangeLog 2020-04-03 07:21:03 UTC (rev 259447)
@@ -1,3 +1,16 @@
+2020-04-03 Peng Liu <[email protected]>
+
+ WebCore::HTMLMediaElement::mediaCanStart crashes
+ https://bugs.webkit.org/show_bug.cgi?id=209950
+
+ Reviewed by Jer Noble.
+
+ UserMediaPermissionRequestManager does not need to inherit from
+ CanMakeWeakPtr<UserMediaPermissionRequestManager> because its
+ parent class MediaCanStartListener supports WeakPtr now.
+
+ * WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
+
2020-04-02 John Wilander <[email protected]>
Add SPI to configure WebsiteDataStores with a URL for standalone web applications and use it to disable first-party website data removal in ITP
Modified: trunk/Source/WebKit/WebProcess/MediaStream/UserMediaPermissionRequestManager.h (259446 => 259447)
--- trunk/Source/WebKit/WebProcess/MediaStream/UserMediaPermissionRequestManager.h 2020-04-03 07:08:42 UTC (rev 259446)
+++ trunk/Source/WebKit/WebProcess/MediaStream/UserMediaPermissionRequestManager.h 2020-04-03 07:21:03 UTC (rev 259447)
@@ -34,7 +34,7 @@
class WebPage;
-class UserMediaPermissionRequestManager : public CanMakeWeakPtr<UserMediaPermissionRequestManager>, private WebCore::MediaCanStartListener {
+class UserMediaPermissionRequestManager : private WebCore::MediaCanStartListener {
WTF_MAKE_FAST_ALLOCATED;
public:
explicit UserMediaPermissionRequestManager(WebPage&);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes