1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/* 2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * Copyright (C) 2013 Google Inc. All rights reserved. 3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * 4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * Redistribution and use in source and binary forms, with or without 5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * modification, are permitted provided that the following conditions are 6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * met: 7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * 8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * * Redistributions of source code must retain the above copyright 9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * notice, this list of conditions and the following disclaimer. 10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * * Redistributions in binary form must reproduce the above 11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * in the documentation and/or other materials provided with the 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * distribution. 14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * * Neither the name of Google Inc. nor the names of its 15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * contributors may be used to endorse or promote products derived from 16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * this software without specific prior written permission. 17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * 18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */ 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "config.h" 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "core/html/track/TrackBase.h" 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "core/html/HTMLMediaElement.h" 35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace blink { 37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)static blink::WebMediaPlayer::TrackId nextTrackId() 39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles){ 40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) static blink::WebMediaPlayer::TrackId next = 0; 41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return ++next; 42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TrackBase::TrackBase(Type type, const AtomicString& label, const AtomicString& language, const String& id) 45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) : m_trackId(nextTrackId()) 46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) , m_type(type) 47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) , m_label(label) 48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) , m_language(language) 49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) , m_id(id) 5046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) , m_mediaElement(nullptr) 5146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles){ 5246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 5346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 5446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)TrackBase::~TrackBase() 5546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles){ 5646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#if !ENABLE(OILPAN) 5746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) ASSERT(!m_mediaElement); 5846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#endif 5946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 6046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 6146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 6246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)Node* TrackBase::owner() const 6346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles){ 6446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) return m_mediaElement; 6546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 6646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 6746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)void TrackBase::trace(Visitor* visitor) 6846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles){ 6946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) visitor->trace(m_mediaElement); 7046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 7146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 7246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)void TrackBase::setKind(const AtomicString& kind) 7346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles){ 7446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) if (isValidKind(kind)) 7546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) m_kind = kind; 7646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) else 7746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) m_kind = defaultKind(); 78cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 79cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 80cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} // namespace blink 8146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)