1/* 2 * Copyright (C) 2011 Google Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 26#include "config.h" 27 28#if ENABLE(VIDEO_TRACK) 29#include "HTMLTrackElement.h" 30 31#include "HTMLMediaElement.h" 32#include "HTMLNames.h" 33#include "Logging.h" 34 35using namespace std; 36 37namespace WebCore { 38 39using namespace HTMLNames; 40 41inline HTMLTrackElement::HTMLTrackElement(const QualifiedName& tagName, Document* document) 42 : HTMLElement(tagName, document) 43{ 44 LOG(Media, "HTMLTrackElement::HTMLTrackElement - %p", this); 45 ASSERT(hasTagName(trackTag)); 46} 47 48PassRefPtr<HTMLTrackElement> HTMLTrackElement::create(const QualifiedName& tagName, Document* document) 49{ 50 return adoptRef(new HTMLTrackElement(tagName, document)); 51} 52 53void HTMLTrackElement::insertedIntoTree(bool deep) 54{ 55 HTMLElement::insertedIntoTree(deep); 56 if (parentNode() && (parentNode()->hasTagName(audioTag) || parentNode()->hasTagName(videoTag))) { 57 // TODO(annacc): 58 // static_cast<HTMLMediaElement*>(parentNode())->trackWasAdded(this); 59 } 60} 61 62void HTMLTrackElement::willRemove() 63{ 64 if (parentNode() && (parentNode()->hasTagName(audioTag) || parentNode()->hasTagName(videoTag))) { 65 // TODO(annacc): 66 // static_cast<HTMLMediaElement*>(parentNode())->trackWillBeRemoved(this); 67 } 68 HTMLElement::willRemove(); 69} 70 71KURL HTMLTrackElement::src() const 72{ 73 return document()->completeURL(getAttribute(srcAttr)); 74} 75 76void HTMLTrackElement::setSrc(const String& url) 77{ 78 setAttribute(srcAttr, url); 79} 80 81String HTMLTrackElement::kind() const 82{ 83 return getAttribute(kindAttr); 84} 85 86void HTMLTrackElement::setKind(const String& kind) 87{ 88 setAttribute(kindAttr, kind); 89} 90 91String HTMLTrackElement::srclang() const 92{ 93 return getAttribute(srclangAttr); 94} 95 96void HTMLTrackElement::setSrclang(const String& srclang) 97{ 98 setAttribute(srclangAttr, srclang); 99} 100 101String HTMLTrackElement::label() const 102{ 103 return getAttribute(labelAttr); 104} 105 106void HTMLTrackElement::setLabel(const String& label) 107{ 108 setAttribute(labelAttr, label); 109} 110 111bool HTMLTrackElement::isDefault() const 112{ 113 return hasAttribute(defaultAttr); 114} 115 116void HTMLTrackElement::setIsDefault(bool isDefault) 117{ 118 setBooleanAttribute(defaultAttr, isDefault); 119} 120 121bool HTMLTrackElement::isURLAttribute(Attribute* attribute) const 122{ 123 return attribute->name() == srcAttr; 124} 125 126} 127 128#endif 129