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 35 using namespace std; 36 37 namespace WebCore { 38 39 using namespace HTMLNames; 40 41 inline 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 48 PassRefPtr<HTMLTrackElement> HTMLTrackElement::create(const QualifiedName& tagName, Document* document) 49 { 50 return adoptRef(new HTMLTrackElement(tagName, document)); 51 } 52 53 void 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 62 void 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 71 KURL HTMLTrackElement::src() const 72 { 73 return document()->completeURL(getAttribute(srcAttr)); 74 } 75 76 void HTMLTrackElement::setSrc(const String& url) 77 { 78 setAttribute(srcAttr, url); 79 } 80 81 String HTMLTrackElement::kind() const 82 { 83 return getAttribute(kindAttr); 84 } 85 86 void HTMLTrackElement::setKind(const String& kind) 87 { 88 setAttribute(kindAttr, kind); 89 } 90 91 String HTMLTrackElement::srclang() const 92 { 93 return getAttribute(srclangAttr); 94 } 95 96 void HTMLTrackElement::setSrclang(const String& srclang) 97 { 98 setAttribute(srclangAttr, srclang); 99 } 100 101 String HTMLTrackElement::label() const 102 { 103 return getAttribute(labelAttr); 104 } 105 106 void HTMLTrackElement::setLabel(const String& label) 107 { 108 setAttribute(labelAttr, label); 109 } 110 111 bool HTMLTrackElement::isDefault() const 112 { 113 return hasAttribute(defaultAttr); 114 } 115 116 void HTMLTrackElement::setIsDefault(bool isDefault) 117 { 118 setBooleanAttribute(defaultAttr, isDefault); 119 } 120 121 bool HTMLTrackElement::isURLAttribute(Attribute* attribute) const 122 { 123 return attribute->name() == srcAttr; 124 } 125 126 } 127 128 #endif 129