Title: [148244] trunk
Revision
148244
Author
[email protected]
Date
2013-04-11 16:25:50 -0700 (Thu, 11 Apr 2013)

Log Message

TextTrackList's .onremovetrack is missing from IDL
https://bugs.webkit.org/show_bug.cgi?id=103421

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

Source/WebCore:

Fixed test media/track/opera/interfaces/TextTrackList/onremovetrack.html

* html/track/TextTrackList.cpp:
(TextTrackList::remove):
(TextTrackList::scheduleRemoveTrackEvent):
* html/track/TextTrackList.h:
(TextTrackList):
* html/track/TextTrackList.idl:

LayoutTests:

* media/track/opera/interfaces/TextTrackList/onremovetrack-expected.txt: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (148243 => 148244)


--- trunk/LayoutTests/ChangeLog	2013-04-11 23:20:57 UTC (rev 148243)
+++ trunk/LayoutTests/ChangeLog	2013-04-11 23:25:50 UTC (rev 148244)
@@ -1,3 +1,12 @@
+2013-04-11  Brendan Long  <[email protected]>
+
+        TextTrackList's .onremovetrack is missing from IDL
+        https://bugs.webkit.org/show_bug.cgi?id=103421
+
+        Reviewed by Eric Carlson.
+
+        * media/track/opera/interfaces/TextTrackList/onremovetrack-expected.txt: Added.
+
 2013-04-11  Sukolsak Sakshuwong  <[email protected]>
 
         MutationRecord is not exposed

Added: trunk/LayoutTests/media/track/opera/interfaces/TextTrackList/onremovetrack-expected.txt (0 => 148244)


--- trunk/LayoutTests/media/track/opera/interfaces/TextTrackList/onremovetrack-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/media/track/opera/interfaces/TextTrackList/onremovetrack-expected.txt	2013-04-11 23:25:50 UTC (rev 148244)
@@ -0,0 +1,4 @@
+
+PASS TextTrackList.onremovetrack 
+PASS TextTrackList.addEventListener/removeEventListener 
+

Modified: trunk/Source/WebCore/ChangeLog (148243 => 148244)


--- trunk/Source/WebCore/ChangeLog	2013-04-11 23:20:57 UTC (rev 148243)
+++ trunk/Source/WebCore/ChangeLog	2013-04-11 23:25:50 UTC (rev 148244)
@@ -1,3 +1,19 @@
+2013-04-11  Brendan Long  <[email protected]>
+
+        TextTrackList's .onremovetrack is missing from IDL
+        https://bugs.webkit.org/show_bug.cgi?id=103421
+
+        Reviewed by Eric Carlson.
+
+        Fixed test media/track/opera/interfaces/TextTrackList/onremovetrack.html
+
+        * html/track/TextTrackList.cpp:
+        (TextTrackList::remove):
+        (TextTrackList::scheduleRemoveTrackEvent):
+        * html/track/TextTrackList.h:
+        (TextTrackList):
+        * html/track/TextTrackList.idl:
+
 2013-04-11  Alberto Garcia  <[email protected]>
 
         [BlackBerry] Upstream the filesystem code

Modified: trunk/Source/WebCore/html/track/TextTrackList.cpp (148243 => 148244)


--- trunk/Source/WebCore/html/track/TextTrackList.cpp	2013-04-11 23:20:57 UTC (rev 148243)
+++ trunk/Source/WebCore/html/track/TextTrackList.cpp	2013-04-11 23:25:50 UTC (rev 148244)
@@ -208,7 +208,9 @@
     ASSERT(!track->mediaElement() || track->mediaElement() == m_owner);
     track->setMediaElement(0);
 
+    RefPtr<TextTrack> trackRef = (*tracks)[index];
     tracks->remove(index);
+    scheduleRemoveTrackEvent(trackRef.release());
 }
 
 bool TextTrackList::contains(TextTrack* track) const
@@ -252,6 +254,29 @@
         m_pendingEventTimer.startOneShot(0);
 }
 
+void TextTrackList::scheduleRemoveTrackEvent(PassRefPtr<TextTrack> track)
+{
+    // 4.8.10.12.3 Sourcing out-of-band text tracks
+    // When a track element's parent element changes and the old parent was a
+    // media element, then the user agent must remove the track element's
+    // corresponding text track from the media element's list of text tracks,
+    // and then queue a task to fire a trusted event with the name removetrack,
+    // that does not bubble and is not cancelable, and that uses the TrackEvent
+    // interface, with the track attribute initialized to the text track's
+    // TextTrack object, at the media element's textTracks attribute's
+    // TextTrackList object.
+
+    RefPtr<TrackBase> trackRef = track;
+    TrackEventInit initializer;
+    initializer.track = trackRef;
+    initializer.bubbles = false;
+    initializer.cancelable = false;
+
+    m_pendingEvents.append(TrackEvent::create(eventNames().removetrackEvent, initializer));
+    if (!m_pendingEventTimer.isActive())
+        m_pendingEventTimer.startOneShot(0);
+}
+
 void TextTrackList::asyncEventTimerFired(Timer<TextTrackList>*)
 {
     Vector<RefPtr<Event> > pendingEvents;

Modified: trunk/Source/WebCore/html/track/TextTrackList.h (148243 => 148244)


--- trunk/Source/WebCore/html/track/TextTrackList.h	2013-04-11 23:20:57 UTC (rev 148243)
+++ trunk/Source/WebCore/html/track/TextTrackList.h	2013-04-11 23:25:50 UTC (rev 148244)
@@ -66,6 +66,7 @@
     virtual ScriptExecutionContext* scriptExecutionContext() const { return m_context; }
 
     DEFINE_ATTRIBUTE_EVENT_LISTENER(addtrack);
+    DEFINE_ATTRIBUTE_EVENT_LISTENER(removetrack);
 
     void clearOwner() { m_owner = 0; }
     Node* owner() const;
@@ -82,6 +83,7 @@
     virtual EventTargetData* ensureEventTargetData() { return &m_eventTargetData; }
 
     void scheduleAddTrackEvent(PassRefPtr<TextTrack>);
+    void scheduleRemoveTrackEvent(PassRefPtr<TextTrack>);
     void asyncEventTimerFired(Timer<TextTrackList>*);
 
     void invalidateTrackIndexesAfterTrack(TextTrack*);

Modified: trunk/Source/WebCore/html/track/TextTrackList.idl (148243 => 148244)


--- trunk/Source/WebCore/html/track/TextTrackList.idl	2013-04-11 23:20:57 UTC (rev 148243)
+++ trunk/Source/WebCore/html/track/TextTrackList.idl	2013-04-11 23:25:50 UTC (rev 148244)
@@ -36,6 +36,7 @@
     TextTrack item(in unsigned long index);
 
     attribute EventListener onaddtrack;
+    attribute EventListener onremovetrack;
 
     void addEventListener(in DOMString type,
                           in EventListener listener,
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to