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