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