Title: [158760] trunk
Revision
158760
Author
[email protected]
Date
2013-11-06 10:53:17 -0800 (Wed, 06 Nov 2013)

Log Message

Add "id" attribute to TextTrack
https://bugs.webkit.org/show_bug.cgi?id=123825

Patch by Brendan Long <[email protected]> on 2013-11-06
Reviewed by Eric Carlson.

Source/WebCore:

Test: media/track/track-id.html

* html/HTMLMediaElement.cpp:
(HTMLMediaElement::addTextTrack): Add emptyString() for track id.
* html/track/AudioTrack.cpp:
(WebCore::AudioTrack::AudioTrack): Pass trackPrivate->id() to TrackBase.
(WebCore::AudioTrack::idChanged): Added, set id.
* html/track/AudioTrack.h: Move m_id to TrackBase.
* html/track/InbandTextTrack.cpp:
(WebCore::InbandTextTrack::InbandTextTrack): Pass trackPrivate->id() to TrackBase.
(WebCore::InbandTextTrack::idChanged): Added, set id.
* html/track/InbandTextTrack.h: Add idChanged().
* html/track/LoadableTextTrack.cpp:
(WebCore::LoadableTextTrack::LoadableTextTrack): Add emptyString() for track id.
(WebCore::LoadableTextTrack::id): Override to return the track element's id.
* html/track/TextTrack.cpp:
(WebCore::TextTrack::captionMenuOffItem): Add empty string for track id.
(WebCore::TextTrack::captionMenuAutomaticItem): Add empty string for track id.
(WebCore::TextTrack::TextTrack): Pass id to TrackBase.
* html/track/TextTrack.h:
(WebCore::TextTrack::create): Add id parameter.
* html/track/TextTrack.idl: Add id attribute.
* html/track/TrackBase.cpp:
(WebCore::TrackBase::TrackBase): Add m_id.
* html/track/TrackBase.h: Add id attribute / m_id.
* html/track/VideoTrack.cpp:
(WebCore::VideoTrack::VideoTrack): Pass trackPrivate->id() to TrackBase.
(WebCore::VideoTrack::idChanged): Added, set id.
* html/track/VideoTrack.h: Move m_id to TrackBase.
* platform/graphics/TrackPrivateBase.h: Add idChanged() callback.

LayoutTests:

* media/track/track-id-expected.txt: Added.
* media/track/track-id.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (158759 => 158760)


--- trunk/LayoutTests/ChangeLog	2013-11-06 18:51:58 UTC (rev 158759)
+++ trunk/LayoutTests/ChangeLog	2013-11-06 18:53:17 UTC (rev 158760)
@@ -1,3 +1,13 @@
+2013-11-06  Brendan Long  <[email protected]>
+
+        Add "id" attribute to TextTrack
+        https://bugs.webkit.org/show_bug.cgi?id=123825
+
+        Reviewed by Eric Carlson.
+
+        * media/track/track-id-expected.txt: Added.
+        * media/track/track-id.html: Added.
+
 2013-11-06  Michał Pakuła vel Rutka  <[email protected]>
 
         [ATK] accessibility/title-ui-element-correctness.html fails

Added: trunk/LayoutTests/media/track/track-id-expected.txt (0 => 158760)


--- trunk/LayoutTests/media/track/track-id-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/media/track/track-id-expected.txt	2013-11-06 18:53:17 UTC (rev 158760)
@@ -0,0 +1,7 @@
+Tests that the 'id' attribute on a TextTrack matches the track element.
+
+
+EXPECTED (video.textTracks[0].id == 'Test-ID-123') OK
+
+END OF TEST
+

Added: trunk/LayoutTests/media/track/track-id.html (0 => 158760)


--- trunk/LayoutTests/media/track/track-id.html	                        (rev 0)
+++ trunk/LayoutTests/media/track/track-id.html	2013-11-06 18:53:17 UTC (rev 158760)
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <script src=""
+        <script src=""
+        <script>
+
+            function loaded()
+            {
+                findMediaElement();
+                var trackElement = video.firstElementChild;
+
+                testExpected("video.textTracks[0].id", trackElement.id);
+
+                consoleWrite("");
+                endTest();
+            }
+
+            setCaptionDisplayMode('Automatic');
+
+        </script>
+    </head>
+    <body _onload_="loaded()">
+        <p>Tests that the 'id' attribute on a TextTrack matches the track element.</p>
+        <video>
+            <track id="Test-ID-123" src=""
+        </video>
+    </body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (158759 => 158760)


--- trunk/Source/WebCore/ChangeLog	2013-11-06 18:51:58 UTC (rev 158759)
+++ trunk/Source/WebCore/ChangeLog	2013-11-06 18:53:17 UTC (rev 158760)
@@ -1,3 +1,41 @@
+2013-11-06  Brendan Long  <[email protected]>
+
+        Add "id" attribute to TextTrack
+        https://bugs.webkit.org/show_bug.cgi?id=123825
+
+        Reviewed by Eric Carlson.
+
+        Test: media/track/track-id.html
+
+        * html/HTMLMediaElement.cpp:
+        (HTMLMediaElement::addTextTrack): Add emptyString() for track id.
+        * html/track/AudioTrack.cpp:
+        (WebCore::AudioTrack::AudioTrack): Pass trackPrivate->id() to TrackBase.
+        (WebCore::AudioTrack::idChanged): Added, set id.
+        * html/track/AudioTrack.h: Move m_id to TrackBase.
+        * html/track/InbandTextTrack.cpp:
+        (WebCore::InbandTextTrack::InbandTextTrack): Pass trackPrivate->id() to TrackBase.
+        (WebCore::InbandTextTrack::idChanged): Added, set id.
+        * html/track/InbandTextTrack.h: Add idChanged().
+        * html/track/LoadableTextTrack.cpp:
+        (WebCore::LoadableTextTrack::LoadableTextTrack): Add emptyString() for track id.
+        (WebCore::LoadableTextTrack::id): Override to return the track element's id.
+        * html/track/TextTrack.cpp:
+        (WebCore::TextTrack::captionMenuOffItem): Add empty string for track id.
+        (WebCore::TextTrack::captionMenuAutomaticItem): Add empty string for track id.
+        (WebCore::TextTrack::TextTrack): Pass id to TrackBase.
+        * html/track/TextTrack.h:
+        (WebCore::TextTrack::create): Add id parameter.
+        * html/track/TextTrack.idl: Add id attribute.
+        * html/track/TrackBase.cpp:
+        (WebCore::TrackBase::TrackBase): Add m_id.
+        * html/track/TrackBase.h: Add id attribute / m_id.
+        * html/track/VideoTrack.cpp:
+        (WebCore::VideoTrack::VideoTrack): Pass trackPrivate->id() to TrackBase.
+        (WebCore::VideoTrack::idChanged): Added, set id.
+        * html/track/VideoTrack.h: Move m_id to TrackBase.
+        * platform/graphics/TrackPrivateBase.h: Add idChanged() callback.
+
 2013-11-06  Antti Koivisto  <[email protected]>
 
         Move array position caching out from HTMLCollection

Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (158759 => 158760)


--- trunk/Source/WebCore/html/HTMLMediaElement.cpp	2013-11-06 18:51:58 UTC (rev 158759)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp	2013-11-06 18:53:17 UTC (rev 158760)
@@ -3121,7 +3121,7 @@
 
     // 5. Create a new text track corresponding to the new object, and set its text track kind to kind, its text 
     // track label to label, its text track language to language...
-    RefPtr<TextTrack> textTrack = TextTrack::create(ActiveDOMObject::scriptExecutionContext(), this, kind, label, language);
+    RefPtr<TextTrack> textTrack = TextTrack::create(ActiveDOMObject::scriptExecutionContext(), this, kind, emptyString(), label, language);
 
     // Note, due to side effects when changing track parameters, we have to
     // first append the track to the text track list.

Modified: trunk/Source/WebCore/html/track/AudioTrack.cpp (158759 => 158760)


--- trunk/Source/WebCore/html/track/AudioTrack.cpp	2013-11-06 18:51:58 UTC (rev 158759)
+++ trunk/Source/WebCore/html/track/AudioTrack.cpp	2013-11-06 18:53:17 UTC (rev 158760)
@@ -78,8 +78,7 @@
 }
 
 AudioTrack::AudioTrack(AudioTrackClient* client, PassRefPtr<AudioTrackPrivate> trackPrivate)
-    : TrackBase(TrackBase::AudioTrack, trackPrivate->label(), trackPrivate->language())
-    , m_id(trackPrivate->id())
+    : TrackBase(TrackBase::AudioTrack, trackPrivate->id(), trackPrivate->label(), trackPrivate->language())
     , m_enabled(trackPrivate->enabled())
     , m_client(client)
     , m_private(trackPrivate)
@@ -161,6 +160,12 @@
     setEnabled(enabled);
 }
 
+void AudioTrack::idChanged(TrackPrivateBase* trackPrivate, const String& id)
+{
+    ASSERT_UNUSED(trackPrivate, trackPrivate == m_private);
+    setId(id);
+}
+
 void AudioTrack::labelChanged(TrackPrivateBase* trackPrivate, const String& label)
 {
     ASSERT_UNUSED(trackPrivate, trackPrivate == m_private);

Modified: trunk/Source/WebCore/html/track/AudioTrack.h (158759 => 158760)


--- trunk/Source/WebCore/html/track/AudioTrack.h	2013-11-06 18:51:58 UTC (rev 158759)
+++ trunk/Source/WebCore/html/track/AudioTrack.h	2013-11-06 18:53:17 UTC (rev 158760)
@@ -54,9 +54,6 @@
     }
     virtual ~AudioTrack();
 
-    AtomicString id() const { return m_id; }
-    void setId(const AtomicString& id) { m_id = id; }
-
     static const AtomicString& alternativeKeyword();
     static const AtomicString& descriptionKeyword();
     static const AtomicString& mainKeyword();
@@ -80,11 +77,11 @@
     virtual bool isValidKind(const AtomicString&) const OVERRIDE;
 
     virtual void enabledChanged(AudioTrackPrivate*, bool) OVERRIDE;
+    virtual void idChanged(TrackPrivateBase*, const String&) OVERRIDE;
     virtual void labelChanged(TrackPrivateBase*, const String&) OVERRIDE;
     virtual void languageChanged(TrackPrivateBase*, const String&) OVERRIDE;
     virtual void willRemove(TrackPrivateBase*) OVERRIDE;
 
-    AtomicString m_id;
     bool m_enabled;
     AudioTrackClient* m_client;
 

Modified: trunk/Source/WebCore/html/track/InbandTextTrack.cpp (158759 => 158760)


--- trunk/Source/WebCore/html/track/InbandTextTrack.cpp	2013-11-06 18:51:58 UTC (rev 158759)
+++ trunk/Source/WebCore/html/track/InbandTextTrack.cpp	2013-11-06 18:53:17 UTC (rev 158760)
@@ -57,9 +57,9 @@
     }
 }
 
-InbandTextTrack::InbandTextTrack(ScriptExecutionContext* context, TextTrackClient* client, PassRefPtr<InbandTextTrackPrivate> tracksPrivate)
-    : TextTrack(context, client, emptyString(), tracksPrivate->label(), tracksPrivate->language(), InBand)
-    , m_private(tracksPrivate)
+InbandTextTrack::InbandTextTrack(ScriptExecutionContext* context, TextTrackClient* client, PassRefPtr<InbandTextTrackPrivate> trackPrivate)
+    : TextTrack(context, client, emptyString(), trackPrivate->id(), trackPrivate->label(), trackPrivate->language(), InBand)
+    , m_private(trackPrivate)
 {
     m_private->setClient(this);
     
@@ -154,6 +154,12 @@
     return m_private->trackIndex();
 }
 
+void InbandTextTrack::idChanged(TrackPrivateBase* trackPrivate, const String& id)
+{
+    ASSERT_UNUSED(trackPrivate, trackPrivate == m_private);
+    setId(id);
+}
+
 void InbandTextTrack::labelChanged(TrackPrivateBase* trackPrivate, const String& label)
 {
     ASSERT_UNUSED(trackPrivate, trackPrivate == m_private);

Modified: trunk/Source/WebCore/html/track/InbandTextTrack.h (158759 => 158760)


--- trunk/Source/WebCore/html/track/InbandTextTrack.h	2013-11-06 18:51:58 UTC (rev 158759)
+++ trunk/Source/WebCore/html/track/InbandTextTrack.h	2013-11-06 18:53:17 UTC (rev 158760)
@@ -55,6 +55,7 @@
 
 private:
 
+    virtual void idChanged(TrackPrivateBase*, const String&) OVERRIDE;
     virtual void labelChanged(TrackPrivateBase*, const String&) OVERRIDE;
     virtual void languageChanged(TrackPrivateBase*, const String&) OVERRIDE;
     virtual void willRemove(TrackPrivateBase*) OVERRIDE;

Modified: trunk/Source/WebCore/html/track/LoadableTextTrack.cpp (158759 => 158760)


--- trunk/Source/WebCore/html/track/LoadableTextTrack.cpp	2013-11-06 18:51:58 UTC (rev 158759)
+++ trunk/Source/WebCore/html/track/LoadableTextTrack.cpp	2013-11-06 18:53:17 UTC (rev 158760)
@@ -37,7 +37,7 @@
 namespace WebCore {
 
 LoadableTextTrack::LoadableTextTrack(HTMLTrackElement* track, const String& kind, const String& label, const String& language)
-    : TextTrack(&track->document(), track, kind, label, language, TrackElement)
+    : TextTrack(&track->document(), track, kind, emptyString(), label, language, TrackElement)
     , m_trackElement(track)
     , m_loadTimer(this, &LoadableTextTrack::loadTimerFired)
     , m_isDefault(false)
@@ -148,6 +148,13 @@
 }
 #endif
 
+AtomicString LoadableTextTrack::id() const
+{
+    if (m_trackElement)
+        return m_trackElement->getAttribute("id");
+    return emptyString();
+}
+
 size_t LoadableTextTrack::trackElementIndex()
 {
     ASSERT(m_trackElement);

Modified: trunk/Source/WebCore/html/track/LoadableTextTrack.h (158759 => 158760)


--- trunk/Source/WebCore/html/track/LoadableTextTrack.h	2013-11-06 18:51:58 UTC (rev 158759)
+++ trunk/Source/WebCore/html/track/LoadableTextTrack.h	2013-11-06 18:53:17 UTC (rev 158760)
@@ -57,6 +57,8 @@
 
     virtual void clearClient();
 
+    virtual AtomicString id() const OVERRIDE;
+
     size_t trackElementIndex();
     HTMLTrackElement* trackElement() { return m_trackElement; }
     void setTrackElement(HTMLTrackElement*);

Modified: trunk/Source/WebCore/html/track/TextTrack.cpp (158759 => 158760)


--- trunk/Source/WebCore/html/track/TextTrack.cpp	2013-11-06 18:51:58 UTC (rev 158759)
+++ trunk/Source/WebCore/html/track/TextTrack.cpp	2013-11-06 18:53:17 UTC (rev 158760)
@@ -101,18 +101,18 @@
 
 TextTrack* TextTrack::captionMenuOffItem()
 {
-    static TextTrack* off = TextTrack::create(0, 0, "off menu item", "", "").leakRef();
+    static TextTrack* off = TextTrack::create(0, 0, "off menu item", "", "", "").leakRef();
     return off;
 }
 
 TextTrack* TextTrack::captionMenuAutomaticItem()
 {
-    static TextTrack* automatic = TextTrack::create(0, 0, "automatic menu item", "", "").leakRef();
+    static TextTrack* automatic = TextTrack::create(0, 0, "automatic menu item", "", "", "").leakRef();
     return automatic;
 }
 
-TextTrack::TextTrack(ScriptExecutionContext* context, TextTrackClient* client, const AtomicString& kind, const AtomicString& label, const AtomicString& language, TextTrackType type)
-    : TrackBase(TrackBase::TextTrack, label, language)
+TextTrack::TextTrack(ScriptExecutionContext* context, TextTrackClient* client, const AtomicString& kind, const AtomicString& id, const AtomicString& label, const AtomicString& language, TextTrackType type)
+    : TrackBase(TrackBase::TextTrack, id, label, language)
     , m_cues(0)
     , m_scriptExecutionContext(context)
 #if ENABLE(WEBVTT_REGIONS)

Modified: trunk/Source/WebCore/html/track/TextTrack.h (158759 => 158760)


--- trunk/Source/WebCore/html/track/TextTrack.h	2013-11-06 18:51:58 UTC (rev 158759)
+++ trunk/Source/WebCore/html/track/TextTrack.h	2013-11-06 18:53:17 UTC (rev 158760)
@@ -67,9 +67,9 @@
 #endif
     {
 public:
-    static PassRefPtr<TextTrack> create(ScriptExecutionContext* context, TextTrackClient* client, const AtomicString& kind, const AtomicString& label, const AtomicString& language)
+    static PassRefPtr<TextTrack> create(ScriptExecutionContext* context, TextTrackClient* client, const AtomicString& kind, const AtomicString& id, const AtomicString& label, const AtomicString& language)
     {
-        return adoptRef(new TextTrack(context, client, kind, label, language, AddTrack));
+        return adoptRef(new TextTrack(context, client, kind, id, label, language, AddTrack));
     }
     virtual ~TextTrack();
 
@@ -154,7 +154,7 @@
     using RefCounted<TrackBase>::deref;
 
 protected:
-    TextTrack(ScriptExecutionContext*, TextTrackClient*, const AtomicString& kind, const AtomicString& label, const AtomicString& language, TextTrackType);
+    TextTrack(ScriptExecutionContext*, TextTrackClient*, const AtomicString& kind, const AtomicString& id, const AtomicString& label, const AtomicString& language, TextTrackType);
 #if ENABLE(VIDEO_TRACK) && ENABLE(WEBVTT_REGIONS)
     TextTrackRegionList* regionList();
 #endif

Modified: trunk/Source/WebCore/html/track/TextTrack.idl (158759 => 158760)


--- trunk/Source/WebCore/html/track/TextTrack.idl	2013-11-06 18:51:58 UTC (rev 158759)
+++ trunk/Source/WebCore/html/track/TextTrack.idl	2013-11-06 18:53:17 UTC (rev 158760)
@@ -31,6 +31,7 @@
     SkipVTableValidation,
     OperationsNotDeletable
 ] interface TextTrack {
+    readonly attribute DOMString id;
     readonly attribute DOMString kind;
     readonly attribute DOMString label;
     readonly attribute DOMString language;

Modified: trunk/Source/WebCore/html/track/TrackBase.cpp (158759 => 158760)


--- trunk/Source/WebCore/html/track/TrackBase.cpp	2013-11-06 18:51:58 UTC (rev 158759)
+++ trunk/Source/WebCore/html/track/TrackBase.cpp	2013-11-06 18:53:17 UTC (rev 158760)
@@ -32,8 +32,9 @@
 
 namespace WebCore {
 
-TrackBase::TrackBase(Type type, const AtomicString& label, const AtomicString& language)
+TrackBase::TrackBase(Type type, const AtomicString& id, const AtomicString& label, const AtomicString& language)
     : m_mediaElement(0)
+    , m_id(id)
     , m_label(label)
     , m_language(language)
 {

Modified: trunk/Source/WebCore/html/track/TrackBase.h (158759 => 158760)


--- trunk/Source/WebCore/html/track/TrackBase.h	2013-11-06 18:51:58 UTC (rev 158759)
+++ trunk/Source/WebCore/html/track/TrackBase.h	2013-11-06 18:53:17 UTC (rev 158760)
@@ -47,6 +47,9 @@
     HTMLMediaElement* mediaElement() { return m_mediaElement; }
     virtual Element* element();
 
+    virtual AtomicString id() const { return m_id; }
+    virtual void setId(const AtomicString& id) { m_id = id; }
+
     AtomicString kind() const { return m_kind; }
     virtual void setKind(const AtomicString&);
 
@@ -59,7 +62,7 @@
     virtual void clearClient() = 0;
 
 protected:
-    TrackBase(Type, const AtomicString& label, const AtomicString& language);
+    TrackBase(Type, const AtomicString& id, const AtomicString& label, const AtomicString& language);
 
     virtual bool isValidKind(const AtomicString&) const = 0;
     virtual const AtomicString& defaultKindKeyword() const = 0;
@@ -68,6 +71,7 @@
 
 private:
     Type m_type;
+    AtomicString m_id;
     AtomicString m_kind;
     AtomicString m_label;
     AtomicString m_language;

Modified: trunk/Source/WebCore/html/track/VideoTrack.cpp (158759 => 158760)


--- trunk/Source/WebCore/html/track/VideoTrack.cpp	2013-11-06 18:51:58 UTC (rev 158759)
+++ trunk/Source/WebCore/html/track/VideoTrack.cpp	2013-11-06 18:53:17 UTC (rev 158760)
@@ -78,8 +78,7 @@
 }
 
 VideoTrack::VideoTrack(VideoTrackClient* client, PassRefPtr<VideoTrackPrivate> trackPrivate)
-    : TrackBase(TrackBase::VideoTrack, trackPrivate->label(), trackPrivate->language())
-    , m_id(trackPrivate->id())
+    : TrackBase(TrackBase::VideoTrack, trackPrivate->id(), trackPrivate->label(), trackPrivate->language())
     , m_selected(trackPrivate->selected())
     , m_client(client)
     , m_private(trackPrivate)
@@ -161,6 +160,12 @@
     setSelected(selected);
 }
 
+void VideoTrack::idChanged(TrackPrivateBase* trackPrivate, const String& id)
+{
+    ASSERT_UNUSED(trackPrivate, trackPrivate == m_private);
+    setId(id);
+}
+
 void VideoTrack::labelChanged(TrackPrivateBase* trackPrivate, const String& label)
 {
     ASSERT_UNUSED(trackPrivate, trackPrivate == m_private);

Modified: trunk/Source/WebCore/html/track/VideoTrack.h (158759 => 158760)


--- trunk/Source/WebCore/html/track/VideoTrack.h	2013-11-06 18:51:58 UTC (rev 158759)
+++ trunk/Source/WebCore/html/track/VideoTrack.h	2013-11-06 18:53:17 UTC (rev 158760)
@@ -54,9 +54,6 @@
     }
     virtual ~VideoTrack();
 
-    AtomicString id() const { return m_id; }
-    void setId(const AtomicString& id) { m_id = id; }
-
     static const AtomicString& alternativeKeyword();
     static const AtomicString& captionsKeyword();
     static const AtomicString& mainKeyword();
@@ -80,11 +77,11 @@
     virtual bool isValidKind(const AtomicString&) const OVERRIDE;
 
     virtual void selectedChanged(VideoTrackPrivate*, bool) OVERRIDE;
+    virtual void idChanged(TrackPrivateBase*, const String&) OVERRIDE;
     virtual void labelChanged(TrackPrivateBase*, const String&) OVERRIDE;
     virtual void languageChanged(TrackPrivateBase*, const String&) OVERRIDE;
     virtual void willRemove(TrackPrivateBase*) OVERRIDE;
 
-    AtomicString m_id;
     bool m_selected;
     VideoTrackClient* m_client;
 

Modified: trunk/Source/WebCore/platform/graphics/TrackPrivateBase.h (158759 => 158760)


--- trunk/Source/WebCore/platform/graphics/TrackPrivateBase.h	2013-11-06 18:51:58 UTC (rev 158759)
+++ trunk/Source/WebCore/platform/graphics/TrackPrivateBase.h	2013-11-06 18:53:17 UTC (rev 158760)
@@ -42,6 +42,7 @@
 class TrackPrivateBaseClient {
 public:
     virtual ~TrackPrivateBaseClient() { }
+    virtual void idChanged(TrackPrivateBase*, const String&) = 0;
     virtual void labelChanged(TrackPrivateBase*, const String&) = 0;
     virtual void languageChanged(TrackPrivateBase*, const String&) = 0;
     virtual void willRemove(TrackPrivateBase*) = 0;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to