Title: [159714] trunk
Revision
159714
Author
commit-qu...@webkit.org
Date
2013-11-22 14:24:26 -0800 (Fri, 22 Nov 2013)

Log Message

Fire "change" event on TextTrackList when a TextTrack's mode changes
https://bugs.webkit.org/show_bug.cgi?id=124789

Patch by Brendan Long <b.l...@cablelabs.com> on 2013-11-22
Reviewed by Eric Carlson.

Source/WebCore:

Since AudioTrackList and VideoTrackList already have this event, the
interesting bits are in TrackListBase::scheduleChangeEvent(), and we
just need to call it for TextTrackList changes.

Test: media/track/track-change-event.html

* html/HTMLMediaElement.cpp:
(HTMLMediaElement::textTrackModeChanged): Call TrackListBase::scheduleChangeEvent().
* html/track/TextTrackList.idl: Add onchange event listener.

LayoutTests:

* media/track/track-change-event-expected.txt: Added.
* media/track/track-change-event.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (159713 => 159714)


--- trunk/LayoutTests/ChangeLog	2013-11-22 22:03:56 UTC (rev 159713)
+++ trunk/LayoutTests/ChangeLog	2013-11-22 22:24:26 UTC (rev 159714)
@@ -1,5 +1,15 @@
 2013-11-22  Brendan Long  <b.l...@cablelabs.com>
 
+        Fire "change" event on TextTrackList when a TextTrack's mode changes
+        https://bugs.webkit.org/show_bug.cgi?id=124789
+
+        Reviewed by Eric Carlson.
+
+        * media/track/track-change-event-expected.txt: Added.
+        * media/track/track-change-event.html: Added.
+
+2013-11-22  Brendan Long  <b.l...@cablelabs.com>
+
         Add TextTrackList::getTrackById().
         https://bugs.webkit.org/show_bug.cgi?id=124785
 

Added: trunk/LayoutTests/media/track/track-change-event-expected.txt (0 => 159714)


--- trunk/LayoutTests/media/track/track-change-event-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/media/track/track-change-event-expected.txt	2013-11-22 22:24:26 UTC (rev 159714)
@@ -0,0 +1,14 @@
+Tests that the 'change' event is fired when a TextTrack's mode changes.
+
+
+** Test a TextTrack created with addTextTrack().
+RUN(track = video.addTextTrack('subtitles', 'test', 'en'))
+RUN(track.mode = 'showing')
+EXPECTED (video.textTracks.length == '1') OK
+EVENT(change)
+EXPECTED (event.target == '[object TextTrackList]') OK
+EXPECTED (event instanceof window.Event == 'true') OK
+EXPECTED (event.track == 'undefined') OK
+
+END OF TEST
+

Added: trunk/LayoutTests/media/track/track-change-event.html (0 => 159714)


--- trunk/LayoutTests/media/track/track-change-event.html	                        (rev 0)
+++ trunk/LayoutTests/media/track/track-change-event.html	2013-11-22 22:24:26 UTC (rev 159714)
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+        <script src=""
+        <script src=""
+        <script>
+
+            var track;
+
+            function changed()
+            {
+                consoleWrite("EVENT(" + event.type + ")");
+
+                testExpected("event.target", video.textTracks);
+                testExpected("event instanceof window.Event", true);
+                testExpected("event.track", undefined);
+
+                consoleWrite("");
+                endTest();
+            }
+
+            function start()
+            {
+                findMediaElement();
+
+                consoleWrite("** Test a TextTrack created with addTextTrack().");
+                run("track = video.addTextTrack('subtitles', 'test', 'en')");
+
+                /* addTextTrack() defaults to "hidden", so "showing" should trigger
+                 * a "change" event. */
+                run("track.mode = 'showing'");
+                testExpected("video.textTracks.length", 1);
+
+                video.textTracks.addEventListener("change", changed);
+            }
+
+        </script>
+    </head>
+    <body _onload_="start()">
+        <p>Tests that the 'change' event is fired when a TextTrack's mode changes.</p>
+        <video>
+        </video>
+    </body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (159713 => 159714)


--- trunk/Source/WebCore/ChangeLog	2013-11-22 22:03:56 UTC (rev 159713)
+++ trunk/Source/WebCore/ChangeLog	2013-11-22 22:24:26 UTC (rev 159714)
@@ -1,5 +1,22 @@
 2013-11-22  Brendan Long  <b.l...@cablelabs.com>
 
+        Fire "change" event on TextTrackList when a TextTrack's mode changes
+        https://bugs.webkit.org/show_bug.cgi?id=124789
+
+        Reviewed by Eric Carlson.
+
+        Since AudioTrackList and VideoTrackList already have this event, the
+        interesting bits are in TrackListBase::scheduleChangeEvent(), and we
+        just need to call it for TextTrackList changes.
+
+        Test: media/track/track-change-event.html
+
+        * html/HTMLMediaElement.cpp:
+        (HTMLMediaElement::textTrackModeChanged): Call TrackListBase::scheduleChangeEvent().
+        * html/track/TextTrackList.idl: Add onchange event listener.
+
+2013-11-22  Brendan Long  <b.l...@cablelabs.com>
+
         Add TextTrackList::getTrackById().
         https://bugs.webkit.org/show_bug.cgi?id=124785
 

Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (159713 => 159714)


--- trunk/Source/WebCore/html/HTMLMediaElement.cpp	2013-11-22 22:03:56 UTC (rev 159713)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp	2013-11-22 22:24:26 UTC (rev 159714)
@@ -1473,6 +1473,9 @@
 #endif
     
     configureTextTrackDisplay(AssumeTextTrackVisibilityChanged);
+
+    if (m_textTracks && m_textTracks->contains(track))
+        m_textTracks->scheduleChangeEvent();
 }
 
 void HTMLMediaElement::videoTrackSelectedChanged(VideoTrack* track)

Modified: trunk/Source/WebCore/html/track/TextTrackList.idl (159713 => 159714)


--- trunk/Source/WebCore/html/track/TextTrackList.idl	2013-11-22 22:03:56 UTC (rev 159713)
+++ trunk/Source/WebCore/html/track/TextTrackList.idl	2013-11-22 22:24:26 UTC (rev 159714)
@@ -34,6 +34,7 @@
     TextTrack getTrackById(DOMString id);
 
     attribute EventListener onaddtrack;
+    attribute EventListener onchange;
     attribute EventListener onremovetrack;
 
     void addEventListener(DOMString type,
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to