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
11namespace blink {
12
13PassRefPtrWillBeRawPtr<VideoTrackList> VideoTrackList::create(HTMLMediaElement& mediaElement)
14{
15    return adoptRefWillBeNoop(new VideoTrackList(mediaElement));
16}
17
18VideoTrackList::~VideoTrackList()
19{
20}
21
22VideoTrackList::VideoTrackList(HTMLMediaElement& mediaElement)
23    : TrackListBase<VideoTrack>(&mediaElement)
24{
25}
26
27const AtomicString& VideoTrackList::interfaceName() const
28{
29    return EventTargetNames::VideoTrackList;
30}
31
32int VideoTrackList::selectedIndex() const
33{
34    for (unsigned i = 0; i < length(); ++i) {
35        VideoTrack* track = anonymousIndexedGetter(i);
36
37        if (track->selected())
38            return i;
39    }
40
41    return -1;
42}
43
44void VideoTrackList::trackSelected(blink::WebMediaPlayer::TrackId selectedTrackId)
45{
46    // Clear the selected flag on the previously selected track, if any.
47    for (unsigned i = 0; i < length(); ++i) {
48        VideoTrack* track = anonymousIndexedGetter(i);
49
50        if (track->trackId() != selectedTrackId)
51            track->clearSelected();
52        else
53            ASSERT(track->selected());
54    }
55
56    scheduleChangeEvent();
57}
58
59}
60