Changeset 204050 in webkit
- Timestamp:
- Aug 2, 2016 4:03:30 PM (8 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r204045 r204050 1 2016-08-02 Eric Carlson <eric.carlson@apple.com> 2 3 Cleanup HTMLMediaElement track lists. 4 https://bugs.webkit.org/show_bug.cgi?id=160470 5 6 Reviewed by David Kilzer. 7 8 * media/range-extract-contents-crash-expected.txt: Added. 9 * media/range-extract-contents-crash.html: Added. 10 1 11 2016-08-02 Chris Dumez <cdumez@apple.com> 2 12 -
trunk/Source/WebCore/ChangeLog
r204049 r204050 1 2016-08-02 Eric Carlson <eric.carlson@apple.com> 2 3 Cleanup HTMLMediaElement track lists. 4 https://bugs.webkit.org/show_bug.cgi?id=160470 5 6 Reviewed by David Kilzer. 7 8 Test: media/range-extract-contents-crash.html 9 10 * html/HTMLMediaElement.cpp: 11 (WebCore::HTMLMediaElement::~HTMLMediaElement): 12 13 * html/track/AudioTrack.cpp: 14 (WebCore::AudioTrack::willRemove): ASSERT if media element is NULL. 15 16 * html/track/TextTrackList.cpp: 17 (TextTrackList::clearElement): Clear track media element pointers and client. 18 * html/track/TextTrackList.h: 19 20 * html/track/TrackListBase.cpp: 21 (TrackListBase::~TrackListBase): Call clearElement. 22 (TrackListBase::clearElement): Clear track media element pointers and client. 23 * html/track/TrackListBase.h: 24 1 25 2016-08-02 Anders Carlsson <andersca@apple.com> 2 26 -
trunk/Source/WebCore/html/HTMLMediaElement.cpp
r203984 r204050 510 510 511 511 #if ENABLE(VIDEO_TRACK) 512 if (m_audioTracks) {512 if (m_audioTracks) 513 513 m_audioTracks->clearElement(); 514 for (unsigned i = 0; i < m_audioTracks->length(); ++i)515 m_audioTracks->item(i)->clearClient();516 }517 514 if (m_textTracks) 518 515 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) 524 517 m_videoTracks->clearElement(); 525 for (unsigned i = 0; i < m_videoTracks->length(); ++i)526 m_videoTracks->item(i)->clearClient();527 }528 518 #endif 529 519 -
trunk/Source/WebCore/html/track/AudioTrack.cpp
r200943 r204050 168 168 { 169 169 ASSERT_UNUSED(trackPrivate, trackPrivate == m_private); 170 mediaElement()->removeAudioTrack(*this); 170 ASSERT(mediaElement()); 171 if (mediaElement()) 172 mediaElement()->removeAudioTrack(*this); 171 173 } 172 174 -
trunk/Source/WebCore/html/track/TextTrackList.cpp
r201385 r204050 47 47 } 48 48 49 void 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 49 62 unsigned TextTrackList::length() const 50 63 { -
trunk/Source/WebCore/html/track/TextTrackList.h
r200943 r204050 43 43 virtual ~TextTrackList(); 44 44 45 void clearElement() override; 46 45 47 unsigned length() const override; 46 48 int getTrackIndex(TextTrack&); -
trunk/Source/WebCore/html/track/TrackListBase.cpp
r200943 r204050 47 47 TrackListBase::~TrackListBase() 48 48 { 49 clearElement(); 50 } 51 52 void TrackListBase::clearElement() 53 { 54 m_element = nullptr; 55 for (auto& track : m_inbandTracks) { 56 track->setMediaElement(nullptr); 57 track->clearClient(); 58 } 49 59 } 50 60 -
trunk/Source/WebCore/html/track/TrackListBase.h
r200943 r204050 57 57 ScriptExecutionContext* scriptExecutionContext() const final { return m_context; } 58 58 59 v oid clearElement() { m_element = 0; }59 virtual void clearElement(); 60 60 Element* element() const; 61 61 HTMLMediaElement* mediaElement() const { return m_element; }
Note: See TracChangeset
for help on using the changeset viewer.