diff options
Diffstat (limited to 'Source/WebCore/html/track/AudioTrackList.cpp')
-rw-r--r-- | Source/WebCore/html/track/AudioTrackList.cpp | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/Source/WebCore/html/track/AudioTrackList.cpp b/Source/WebCore/html/track/AudioTrackList.cpp index eb8c9a73f..71155690a 100644 --- a/Source/WebCore/html/track/AudioTrackList.cpp +++ b/Source/WebCore/html/track/AudioTrackList.cpp @@ -10,10 +10,10 @@ * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR @@ -30,7 +30,6 @@ #include "AudioTrackList.h" #include "AudioTrack.h" -#include "EventNames.h" using namespace WebCore; @@ -43,36 +42,40 @@ AudioTrackList::~AudioTrackList() { } -void AudioTrackList::append(PassRefPtr<AudioTrack> prpTrack) +void AudioTrackList::append(Ref<AudioTrack>&& track) { - RefPtr<AudioTrack> track = prpTrack; - // Insert tracks in the media file order. size_t index = track->inbandTrackIndex(); - m_inbandTracks.insert(index, track); + size_t insertionIndex; + for (insertionIndex = 0; insertionIndex < m_inbandTracks.size(); ++insertionIndex) { + auto& otherTrack = downcast<AudioTrack>(*m_inbandTracks[insertionIndex]); + if (otherTrack.inbandTrackIndex() > index) + break; + } + m_inbandTracks.insert(insertionIndex, track.ptr()); + ASSERT(!track->mediaElement() || track->mediaElement() == mediaElement()); track->setMediaElement(mediaElement()); - scheduleAddTrackEvent(track.release()); + scheduleAddTrackEvent(WTFMove(track)); } AudioTrack* AudioTrackList::item(unsigned index) const { if (index < m_inbandTracks.size()) - return toAudioTrack(m_inbandTracks[index].get()); - - return 0; + return downcast<AudioTrack>(m_inbandTracks[index].get()); + return nullptr; } AudioTrack* AudioTrackList::getTrackById(const AtomicString& id) const { - for (size_t i = 0; i < m_inbandTracks.size(); ++i) { - AudioTrack* track = toAudioTrack(m_inbandTracks[i].get()); - if (track->id() == id) - return track; + for (auto& inbandTrack : m_inbandTracks) { + auto& track = downcast<AudioTrack>(*inbandTrack); + if (track.id() == id) + return &track; } - return 0; + return nullptr; } EventTargetInterface AudioTrackList::eventTargetInterface() const |