Source/WebCore/ChangeLog

 12013-11-05 Brendan Long <b.long@cablelabs.com>
 2
 3 Add "id" attribute to TextTrack
 4 https://bugs.webkit.org/show_bug.cgi?id=123825
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 No new tests because there's no way to set an "id" for out-of-band tracks.
 9
 10 * html/HTMLMediaElement.cpp:
 11 (HTMLMediaElement::addTextTrack): Add emptyString() for track id.
 12 * html/track/AudioTrack.cpp:
 13 (WebCore::AudioTrack::AudioTrack): Pass trackPrivate->id() to TrackBase.
 14 (WebCore::AudioTrack::idChanged): Added, set id.
 15 * html/track/AudioTrack.h: Move m_id to TrackBase.
 16 * html/track/InbandTextTrack.cpp:
 17 (WebCore::InbandTextTrack::InbandTextTrack): Pass trackPrivate->id() to TrackBase.
 18 (WebCore::InbandTextTrack::idChanged): Added, set id.
 19 * html/track/InbandTextTrack.h: Add idChanged().
 20 * html/track/LoadableTextTrack.cpp:
 21 (WebCore::LoadableTextTrack::LoadableTextTrack): Add emptyString() for track id.
 22 * html/track/TextTrack.cpp:
 23 (WebCore::TextTrack::captionMenuOffItem): Add empty string for track id.
 24 (WebCore::TextTrack::captionMenuAutomaticItem): Add empty string for track id.
 25 (WebCore::TextTrack::TextTrack): Pass id to TrackBase.
 26 * html/track/TextTrack.h:
 27 (WebCore::TextTrack::create): Add id parameter.
 28 * html/track/TextTrack.idl: Add id attribute.
 29 * html/track/TrackBase.cpp:
 30 (WebCore::TrackBase::TrackBase): Add m_id.
 31 * html/track/TrackBase.h: Add id attribute / m_id.
 32 * html/track/VideoTrack.cpp:
 33 (WebCore::VideoTrack::VideoTrack): Pass trackPrivate->id() to TrackBase.
 34 (WebCore::VideoTrack::idChanged): Added, set id.
 35 * html/track/VideoTrack.h: Move m_id to TrackBase.
 36 * platform/graphics/TrackPrivateBase.h: Add idChanged() callback.
 37
1382013-11-05 Renata Hodovan <reni@webkit.org>
239
340 ASSERTION FAILED: isHTMLTitleElement(m_titleElement.get()) in WebCore::Document::setTitle

Source/WebCore/html/HTMLMediaElement.cpp

@@PassRefPtr<TextTrack> HTMLMediaElement::addTextTrack(const String& kind, const S
31203120
31213121 // 5. Create a new text track corresponding to the new object, and set its text track kind to kind, its text
31223122 // track label to label, its text track language to language...
3123  RefPtr<TextTrack> textTrack = TextTrack::create(ActiveDOMObject::scriptExecutionContext(), this, kind, label, language);
 3123 RefPtr<TextTrack> textTrack = TextTrack::create(ActiveDOMObject::scriptExecutionContext(), this, kind, emptyString(), label, language);
31243124
31253125 // Note, due to side effects when changing track parameters, we have to
31263126 // first append the track to the text track list.

Source/WebCore/html/track/AudioTrack.cpp

@@const AtomicString& AudioTrack::commentaryKeyword()
7878}
7979
8080AudioTrack::AudioTrack(AudioTrackClient* client, PassRefPtr<AudioTrackPrivate> trackPrivate)
81  : TrackBase(TrackBase::AudioTrack, trackPrivate->label(), trackPrivate->language())
82  , m_id(trackPrivate->id())
 81 : TrackBase(TrackBase::AudioTrack, trackPrivate->id(), trackPrivate->label(), trackPrivate->language())
8382 , m_enabled(trackPrivate->enabled())
8483 , m_client(client)
8584 , m_private(trackPrivate)

@@void AudioTrack::enabledChanged(AudioTrackPrivate* trackPrivate, bool enabled)
161160 setEnabled(enabled);
162161}
163162
 163void AudioTrack::idChanged(TrackPrivateBase* trackPrivate, const String& id)
 164{
 165 ASSERT_UNUSED(trackPrivate, trackPrivate == m_private);
 166 setId(id);
 167}
 168
164169void AudioTrack::labelChanged(TrackPrivateBase* trackPrivate, const String& label)
165170{
166171 ASSERT_UNUSED(trackPrivate, trackPrivate == m_private);

Source/WebCore/html/track/AudioTrack.h

@@public:
5454 }
5555 virtual ~AudioTrack();
5656
57  AtomicString id() const { return m_id; }
58  void setId(const AtomicString& id) { m_id = id; }
59 
6057 static const AtomicString& alternativeKeyword();
6158 static const AtomicString& descriptionKeyword();
6259 static const AtomicString& mainKeyword();

@@private:
8077 virtual bool isValidKind(const AtomicString&) const OVERRIDE;
8178
8279 virtual void enabledChanged(AudioTrackPrivate*, bool) OVERRIDE;
 80 virtual void idChanged(TrackPrivateBase*, const String&) OVERRIDE;
8381 virtual void labelChanged(TrackPrivateBase*, const String&) OVERRIDE;
8482 virtual void languageChanged(TrackPrivateBase*, const String&) OVERRIDE;
8583 virtual void willRemove(TrackPrivateBase*) OVERRIDE;
8684
87  AtomicString m_id;
8885 bool m_enabled;
8986 AudioTrackClient* m_client;
9087

Source/WebCore/html/track/InbandTextTrack.cpp

@@PassRefPtr<InbandTextTrack> InbandTextTrack::create(ScriptExecutionContext* cont
5858}
5959
6060InbandTextTrack::InbandTextTrack(ScriptExecutionContext* context, TextTrackClient* client, PassRefPtr<InbandTextTrackPrivate> tracksPrivate)
61  : TextTrack(context, client, emptyString(), tracksPrivate->label(), tracksPrivate->language(), InBand)
 61 : TextTrack(context, client, emptyString(), tracksPrivate->id(), tracksPrivate->label(), tracksPrivate->language(), InBand)
6262 , m_private(tracksPrivate)
6363{
6464 m_private->setClient(this);

@@size_t InbandTextTrack::inbandTrackIndex()
154154 return m_private->trackIndex();
155155}
156156
 157void InbandTextTrack::idChanged(TrackPrivateBase* trackPrivate, const String& id)
 158{
 159 ASSERT_UNUSED(trackPrivate, trackPrivate == m_private);
 160 setId(id);
 161}
 162
157163void InbandTextTrack::labelChanged(TrackPrivateBase* trackPrivate, const String& label)
158164{
159165 ASSERT_UNUSED(trackPrivate, trackPrivate == m_private);

Source/WebCore/html/track/InbandTextTrack.h

@@protected:
5555
5656private:
5757
 58 virtual void idChanged(TrackPrivateBase*, const String&) OVERRIDE;
5859 virtual void labelChanged(TrackPrivateBase*, const String&) OVERRIDE;
5960 virtual void languageChanged(TrackPrivateBase*, const String&) OVERRIDE;
6061 virtual void willRemove(TrackPrivateBase*) OVERRIDE;

Source/WebCore/html/track/LoadableTextTrack.cpp

3737namespace WebCore {
3838
3939LoadableTextTrack::LoadableTextTrack(HTMLTrackElement* track, const String& kind, const String& label, const String& language)
40  : TextTrack(&track->document(), track, kind, label, language, TrackElement)
 40 : TextTrack(&track->document(), track, kind, emptyString(), label, language, TrackElement)
4141 , m_trackElement(track)
4242 , m_loadTimer(this, &LoadableTextTrack::loadTimerFired)
4343 , m_isDefault(false)

Source/WebCore/html/track/TextTrack.cpp

@@const AtomicString& TextTrack::showingKeyword()
101101
102102TextTrack* TextTrack::captionMenuOffItem()
103103{
104  static TextTrack* off = TextTrack::create(0, 0, "off menu item", "", "").leakRef();
 104 static TextTrack* off = TextTrack::create(0, 0, "off menu item", "", "", "").leakRef();
105105 return off;
106106}
107107
108108TextTrack* TextTrack::captionMenuAutomaticItem()
109109{
110  static TextTrack* automatic = TextTrack::create(0, 0, "automatic menu item", "", "").leakRef();
 110 static TextTrack* automatic = TextTrack::create(0, 0, "automatic menu item", "", "", "").leakRef();
111111 return automatic;
112112}
113113
114 TextTrack::TextTrack(ScriptExecutionContext* context, TextTrackClient* client, const AtomicString& kind, const AtomicString& label, const AtomicString& language, TextTrackType type)
115  : TrackBase(TrackBase::TextTrack, label, language)
 114TextTrack::TextTrack(ScriptExecutionContext* context, TextTrackClient* client, const AtomicString& kind, const AtomicString& id, const AtomicString& label, const AtomicString& language, TextTrackType type)
 115 : TrackBase(TrackBase::TextTrack, id, label, language)
116116 , m_cues(0)
117117 , m_scriptExecutionContext(context)
118118#if ENABLE(WEBVTT_REGIONS)

Source/WebCore/html/track/TextTrack.h

@@class TextTrack : public TrackBase, public EventTargetWithInlineData
6767#endif
6868 {
6969public:
70  static PassRefPtr<TextTrack> create(ScriptExecutionContext* context, TextTrackClient* client, const AtomicString& kind, const AtomicString& label, const AtomicString& language)
 70 static PassRefPtr<TextTrack> create(ScriptExecutionContext* context, TextTrackClient* client, const AtomicString& kind, const AtomicString& id, const AtomicString& label, const AtomicString& language)
7171 {
72  return adoptRef(new TextTrack(context, client, kind, label, language, AddTrack));
 72 return adoptRef(new TextTrack(context, client, kind, id, label, language, AddTrack));
7373 }
7474 virtual ~TextTrack();
7575

@@public:
154154 using RefCounted<TrackBase>::deref;
155155
156156protected:
157  TextTrack(ScriptExecutionContext*, TextTrackClient*, const AtomicString& kind, const AtomicString& label, const AtomicString& language, TextTrackType);
 157 TextTrack(ScriptExecutionContext*, TextTrackClient*, const AtomicString& kind, const AtomicString& id, const AtomicString& label, const AtomicString& language, TextTrackType);
158158#if ENABLE(VIDEO_TRACK) && ENABLE(WEBVTT_REGIONS)
159159 TextTrackRegionList* regionList();
160160#endif

Source/WebCore/html/track/TextTrack.idl

3131 SkipVTableValidation,
3232 OperationsNotDeletable
3333] interface TextTrack {
 34 readonly attribute DOMString id;
3435 readonly attribute DOMString kind;
3536 readonly attribute DOMString label;
3637 readonly attribute DOMString language;

Source/WebCore/html/track/TrackBase.cpp

3232
3333namespace WebCore {
3434
35 TrackBase::TrackBase(Type type, const AtomicString& label, const AtomicString& language)
 35TrackBase::TrackBase(Type type, const AtomicString& id, const AtomicString& label, const AtomicString& language)
3636 : m_mediaElement(0)
 37 , m_id(id)
3738 , m_label(label)
3839 , m_language(language)
3940{

Source/WebCore/html/track/TrackBase.h

@@public:
4747 HTMLMediaElement* mediaElement() { return m_mediaElement; }
4848 virtual Element* element();
4949
 50 AtomicString id() const { return m_id; }
 51 virtual void setId(const AtomicString& id) { m_id = id; }
 52
5053 AtomicString kind() const { return m_kind; }
5154 virtual void setKind(const AtomicString&);
5255

@@public:
5962 virtual void clearClient() = 0;
6063
6164protected:
62  TrackBase(Type, const AtomicString& label, const AtomicString& language);
 65 TrackBase(Type, const AtomicString& id, const AtomicString& label, const AtomicString& language);
6366
6467 virtual bool isValidKind(const AtomicString&) const = 0;
6568 virtual const AtomicString& defaultKindKeyword() const = 0;

@@protected:
6871
6972private:
7073 Type m_type;
 74 AtomicString m_id;
7175 AtomicString m_kind;
7276 AtomicString m_label;
7377 AtomicString m_language;

Source/WebCore/html/track/VideoTrack.cpp

@@const AtomicString& VideoTrack::commentaryKeyword()
7878}
7979
8080VideoTrack::VideoTrack(VideoTrackClient* client, PassRefPtr<VideoTrackPrivate> trackPrivate)
81  : TrackBase(TrackBase::VideoTrack, trackPrivate->label(), trackPrivate->language())
82  , m_id(trackPrivate->id())
 81 : TrackBase(TrackBase::VideoTrack, trackPrivate->id(), trackPrivate->label(), trackPrivate->language())
8382 , m_selected(trackPrivate->selected())
8483 , m_client(client)
8584 , m_private(trackPrivate)

@@void VideoTrack::selectedChanged(VideoTrackPrivate* trackPrivate, bool selected)
161160 setSelected(selected);
162161}
163162
 163void VideoTrack::idChanged(TrackPrivateBase* trackPrivate, const String& id)
 164{
 165 ASSERT_UNUSED(trackPrivate, trackPrivate == m_private);
 166 setId(id);
 167}
 168
164169void VideoTrack::labelChanged(TrackPrivateBase* trackPrivate, const String& label)
165170{
166171 ASSERT_UNUSED(trackPrivate, trackPrivate == m_private);

Source/WebCore/html/track/VideoTrack.h

@@public:
5454 }
5555 virtual ~VideoTrack();
5656
57  AtomicString id() const { return m_id; }
58  void setId(const AtomicString& id) { m_id = id; }
59 
6057 static const AtomicString& alternativeKeyword();
6158 static const AtomicString& captionsKeyword();
6259 static const AtomicString& mainKeyword();

@@private:
8077 virtual bool isValidKind(const AtomicString&) const OVERRIDE;
8178
8279 virtual void selectedChanged(VideoTrackPrivate*, bool) OVERRIDE;
 80 virtual void idChanged(TrackPrivateBase*, const String&) OVERRIDE;
8381 virtual void labelChanged(TrackPrivateBase*, const String&) OVERRIDE;
8482 virtual void languageChanged(TrackPrivateBase*, const String&) OVERRIDE;
8583 virtual void willRemove(TrackPrivateBase*) OVERRIDE;
8684
87  AtomicString m_id;
8885 bool m_selected;
8986 VideoTrackClient* m_client;
9087

Source/WebCore/platform/graphics/TrackPrivateBase.h

@@class TrackPrivateBase;
4242class TrackPrivateBaseClient {
4343public:
4444 virtual ~TrackPrivateBaseClient() { }
 45 virtual void idChanged(TrackPrivateBase*, const String&) = 0;
4546 virtual void labelChanged(TrackPrivateBase*, const String&) = 0;
4647 virtual void languageChanged(TrackPrivateBase*, const String&) = 0;
4748 virtual void willRemove(TrackPrivateBase*) = 0;