1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "config.h" 6 #include "core/html/track/VideoTrackList.h" 7 8 #include "core/html/HTMLMediaElement.h" 9 #include "core/html/track/VideoTrack.h" 10 11 namespace WebCore { 12 13 PassRefPtrWillBeRawPtr<VideoTrackList> VideoTrackList::create(HTMLMediaElement& mediaElement) 14 { 15 return adoptRefWillBeRefCountedGarbageCollected(new VideoTrackList(mediaElement)); 16 } 17 18 VideoTrackList::~VideoTrackList() 19 { 20 } 21 22 VideoTrackList::VideoTrackList(HTMLMediaElement& mediaElement) 23 : TrackListBase<VideoTrack>(&mediaElement) 24 { 25 ScriptWrappable::init(this); 26 } 27 28 const AtomicString& VideoTrackList::interfaceName() const 29 { 30 return EventTargetNames::VideoTrackList; 31 } 32 33 int VideoTrackList::selectedIndex() const 34 { 35 for (unsigned i = 0; i < length(); ++i) { 36 VideoTrack* track = anonymousIndexedGetter(i); 37 38 if (track->selected()) 39 return i; 40 } 41 42 return -1; 43 } 44 45 void VideoTrackList::trackSelected(blink::WebMediaPlayer::TrackId selectedTrackId) 46 { 47 // Clear the selected flag on the previously selected track, if any. 48 for (unsigned i = 0; i < length(); ++i) { 49 VideoTrack* track = anonymousIndexedGetter(i); 50 51 if (track->trackId() != selectedTrackId) 52 track->clearSelected(); 53 else 54 ASSERT(track->selected()); 55 } 56 57 scheduleChangeEvent(); 58 } 59 60 } 61