2011-04-07 Anna Cavender <annacc@chromium.org>
[WebKit-https.git] / Source / WebCore / html / HTMLTrackElement.cpp
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(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