Changeset 259447 in webkit


Ignore:
Timestamp:
Apr 3, 2020 12:21:03 AM (4 years ago)
Author:
Peng Liu
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:
Location:
trunk/Source
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r259445 r259447  
     12020-04-03  Peng Liu  <peng.liu6@apple.com>
     2
     3        WebCore::HTMLMediaElement::mediaCanStart crashes
     4        https://bugs.webkit.org/show_bug.cgi?id=209950
     5
     6        Reviewed by Jer Noble.
     7
     8        Use WeakHashSet instead of HashSet to record MediaCanStartListeners in Document.
     9
     10        * dom/Document.cpp:
     11        (WebCore::Document::addMediaCanStartListener):
     12        (WebCore::Document::removeMediaCanStartListener):
     13        (WebCore::Document::takeAnyMediaCanStartListener):
     14        * dom/Document.h:
     15        * page/MediaCanStartListener.h:
     16
    1172020-04-03  Simon Fraser  <simon.fraser@apple.com>
    218
  • trunk/Source/WebCore/dom/Document.cpp

    r259152 r259447  
    64236423void Document::addMediaCanStartListener(MediaCanStartListener& listener)
    64246424{
    6425     ASSERT(!m_mediaCanStartListeners.contains(&listener));
    6426     m_mediaCanStartListeners.add(&listener);
     6425    ASSERT(!m_mediaCanStartListeners.contains(listener));
     6426    m_mediaCanStartListeners.add(listener);
    64276427}
    64286428
    64296429void Document::removeMediaCanStartListener(MediaCanStartListener& listener)
    64306430{
    6431     ASSERT(m_mediaCanStartListeners.contains(&listener));
    6432     m_mediaCanStartListeners.remove(&listener);
     6431    ASSERT(m_mediaCanStartListeners.contains(listener));
     6432    m_mediaCanStartListeners.remove(listener);
    64336433}
    64346434
    64356435MediaCanStartListener* Document::takeAnyMediaCanStartListener()
    64366436{
    6437     return m_mediaCanStartListeners.takeAny();
     6437    if (m_mediaCanStartListeners.computesEmpty())
     6438        return nullptr;
     6439
     6440    MediaCanStartListener* listener = m_mediaCanStartListeners.begin().get();
     6441    m_mediaCanStartListeners.remove(*listener);
     6442
     6443    return listener;
    64386444}
    64396445
  • trunk/Source/WebCore/dom/Document.h

    r259148 r259447  
    18261826    RenderPtr<RenderView> m_renderView;
    18271827
    1828     HashSet<MediaCanStartListener*> m_mediaCanStartListeners;
     1828    WeakHashSet<MediaCanStartListener> m_mediaCanStartListeners;
    18291829
    18301830#if ENABLE(FULLSCREEN_API)
  • trunk/Source/WebCore/page/MediaCanStartListener.h

    r223728 r259447  
    2626#pragma once
    2727
     28#include <wtf/WeakPtr.h>
     29
    2830namespace WebCore {
    2931
    3032class Document;
    3133
    32 class MediaCanStartListener {
     34class MediaCanStartListener : public CanMakeWeakPtr<MediaCanStartListener> {
    3335public:
    3436    virtual void mediaCanStart(Document&) = 0;
  • trunk/Source/WebKit/ChangeLog

    r259440 r259447  
     12020-04-03  Peng Liu  <peng.liu6@apple.com>
     2
     3        WebCore::HTMLMediaElement::mediaCanStart crashes
     4        https://bugs.webkit.org/show_bug.cgi?id=209950
     5
     6        Reviewed by Jer Noble.
     7
     8        UserMediaPermissionRequestManager does not need to inherit from
     9        CanMakeWeakPtr<UserMediaPermissionRequestManager> because its
     10        parent class MediaCanStartListener supports WeakPtr now.
     11
     12        * WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
     13
    1142020-04-02  John Wilander  <wilander@apple.com>
    215
  • trunk/Source/WebKit/WebProcess/MediaStream/UserMediaPermissionRequestManager.h

    r250233 r259447  
    3535class WebPage;
    3636
    37 class UserMediaPermissionRequestManager : public CanMakeWeakPtr<UserMediaPermissionRequestManager>, private WebCore::MediaCanStartListener {
     37class UserMediaPermissionRequestManager : private WebCore::MediaCanStartListener {
    3838    WTF_MAKE_FAST_ALLOCATED;
    3939public:
Note: See TracChangeset for help on using the changeset viewer.