⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 204073 in webkit


Ignore:
Timestamp:
Aug 2, 2016, 11:16:15 PM (10 years ago)
Author:
bshafiei@apple.com
Message:

Merge r204050. rdar://problem/27313234

Location:
branches/safari-602-branch
Files:
2 added
8 edited

Legend:

Unmodified
Added
Removed
  • branches/safari-602-branch/LayoutTests/ChangeLog

    r204072 r204073  
     12016-08-02  Babak Shafiei  <bshafiei@apple.com>
     2
     3        Merge r204050. rdar://problem/27313234
     4
     5    2016-08-02  Eric Carlson  <eric.carlson@apple.com>
     6
     7            Cleanup HTMLMediaElement track lists.
     8            https://bugs.webkit.org/show_bug.cgi?id=160470
     9
     10            Reviewed by David Kilzer.
     11
     12            * media/range-extract-contents-crash-expected.txt: Added.
     13            * media/range-extract-contents-crash.html: Added.
     14
    1152016-08-02  Babak Shafiei  <bshafiei@apple.com>
    216
  • branches/safari-602-branch/Source/WebCore/ChangeLog

    r204072 r204073  
     12016-08-02  Babak Shafiei  <bshafiei@apple.com>
     2
     3        Merge r204050. rdar://problem/27313234
     4
     5    2016-08-02  Eric Carlson  <eric.carlson@apple.com>
     6
     7            Cleanup HTMLMediaElement track lists.
     8            https://bugs.webkit.org/show_bug.cgi?id=160470
     9
     10            Reviewed by David Kilzer.
     11
     12            Test: media/range-extract-contents-crash.html
     13
     14            * html/HTMLMediaElement.cpp:
     15            (WebCore::HTMLMediaElement::~HTMLMediaElement):
     16
     17            * html/track/AudioTrack.cpp:
     18            (WebCore::AudioTrack::willRemove): ASSERT if media element is NULL.
     19
     20            * html/track/TextTrackList.cpp:
     21            (TextTrackList::clearElement): Clear track media element pointers and client.
     22            * html/track/TextTrackList.h:
     23
     24            * html/track/TrackListBase.cpp:
     25            (TrackListBase::~TrackListBase): Call clearElement.
     26            (TrackListBase::clearElement): Clear track media element pointers and client.
     27            * html/track/TrackListBase.h:
     28
    1292016-08-02  Babak Shafiei  <bshafiei@apple.com>
    230
  • branches/safari-602-branch/Source/WebCore/html/HTMLMediaElement.cpp

    r204069 r204073  
    510510
    511511#if ENABLE(VIDEO_TRACK)
    512     if (m_audioTracks) {
     512    if (m_audioTracks)
    513513        m_audioTracks->clearElement();
    514         for (unsigned i = 0; i < m_audioTracks->length(); ++i)
    515             m_audioTracks->item(i)->clearClient();
    516     }
    517514    if (m_textTracks)
    518515        m_textTracks->clearElement();
    519     if (m_textTracks) {
    520         for (unsigned i = 0; i < m_textTracks->length(); ++i)
    521             m_textTracks->item(i)->clearClient();
    522     }
    523     if (m_videoTracks) {
     516    if (m_videoTracks)
    524517        m_videoTracks->clearElement();
    525         for (unsigned i = 0; i < m_videoTracks->length(); ++i)
    526             m_videoTracks->item(i)->clearClient();
    527     }
    528518#endif
    529519
  • branches/safari-602-branch/Source/WebCore/html/track/AudioTrack.cpp

    r200943 r204073  
    168168{
    169169    ASSERT_UNUSED(trackPrivate, trackPrivate == m_private);
    170     mediaElement()->removeAudioTrack(*this);
     170    ASSERT(mediaElement());
     171    if (mediaElement())
     172        mediaElement()->removeAudioTrack(*this);
    171173}
    172174
  • branches/safari-602-branch/Source/WebCore/html/track/TextTrackList.cpp

    r201385 r204073  
    4747}
    4848
     49void TextTrackList::clearElement()
     50{
     51    TrackListBase::clearElement();
     52    for (auto& track : m_elementTracks) {
     53        track->setMediaElement(nullptr);
     54        track->clearClient();
     55    }
     56    for (auto& track : m_addTrackTracks) {
     57        track->setMediaElement(nullptr);
     58        track->clearClient();
     59    }
     60}
     61
    4962unsigned TextTrackList::length() const
    5063{
  • branches/safari-602-branch/Source/WebCore/html/track/TextTrackList.h

    r200943 r204073  
    4343    virtual ~TextTrackList();
    4444
     45    void clearElement() override;
     46
    4547    unsigned length() const override;
    4648    int getTrackIndex(TextTrack&);
  • branches/safari-602-branch/Source/WebCore/html/track/TrackListBase.cpp

    r200943 r204073  
    4747TrackListBase::~TrackListBase()
    4848{
     49    clearElement();
     50}
     51
     52void TrackListBase::clearElement()
     53{
     54    m_element = nullptr;
     55    for (auto& track : m_inbandTracks) {
     56        track->setMediaElement(nullptr);
     57        track->clearClient();
     58    }
    4959}
    5060
  • branches/safari-602-branch/Source/WebCore/html/track/TrackListBase.h

    r200943 r204073  
    5757    ScriptExecutionContext* scriptExecutionContext() const final { return m_context; }
    5858
    59     void clearElement() { m_element = 0; }
     59    virtual void clearElement();
    6060    Element* element() const;
    6161    HTMLMediaElement* mediaElement() const { return m_element; }
Note: See TracChangeset for help on using the changeset viewer.