[html5] r4868 - [giow] (1) Make seeking async since some implementations can't tell if something [...]
whatwg at whatwg.org
whatwg at whatwg.org
Thu Mar 25 02:30:12 PDT 2010
Author: ianh
Date: 2010-03-25 02:30:10 -0700 (Thu, 25 Mar 2010)
New Revision: 4868
Modified:
complete.html
index
source
Log:
[giow] (1) Make seeking async since some implementations can't tell if something is seekable synchronously. Also, make it not throw ever, and make it sanely re-entrant.
Modified: complete.html
===================================================================
--- complete.html 2010-03-25 08:18:08 UTC (rev 4867)
+++ complete.html 2010-03-25 09:30:10 UTC (rev 4868)
@@ -24435,13 +24435,36 @@
<p>When the user agent is required to <dfn id=dom-media-seek title=dom-media-seek>seek</dfn> to a particular <var title="">new
playback position</var> in the <a href=#media-resource>media resource</a>, it means
- that the user agent must run the following steps:</p>
+ that the user agent must run the following steps. This algorithm
+ interacts closely with the <a href=#event-loop>event loop</a> mechanism; in
+ particular, it has a <a href=#synchronous-section>synchronous
+ section</a> (which is triggered as part of the <a href=#event-loop>event
+ loop</a> algorithm). Steps in that section are marked with
+ ⌛.</p>
- <ol><li><p>If the <a href=#media-element>media element</a>'s <code title=dom-media-readyState><a href=#dom-media-readystate>readyState</a></code> is <code title=dom-media-HAVE_NOTHING><a href=#dom-media-have_nothing>HAVE_NOTHING</a></code>, then the user
- agent must raise an <code><a href=#invalid_state_err>INVALID_STATE_ERR</a></code> exception (if
- the seek was in response to a DOM method call or setting of an IDL
- attribute), and abort these steps.</li>
+ <ol><li><p>If the <a href=#media-element>media element</a>'s <code title=dom-media-readyState><a href=#dom-media-readystate>readyState</a></code> is <code title=dom-media-HAVE_NOTHING><a href=#dom-media-have_nothing>HAVE_NOTHING</a></code>, then raise an
+ <code><a href=#invalid_state_err>INVALID_STATE_ERR</a></code> exception (if the seek was in
+ response to a DOM method call or setting of an IDL attribute), and
+ abort these steps.</li>
+ <li><p>If the element's <code title=dom-media-seeking><a href=#dom-media-seeking>seeking</a></code> IDL attribute is true,
+ then another instance of this algorithm is already running. Abort
+ that other instance of the algorithm without waiting for the step
+ that it is running to complete.</li>
+
+ <li><p>Set the <code title=dom-media-seeking><a href=#dom-media-seeking>seeking</a></code> IDL
+ attribute to true.</li>
+
+ <li id=seekUpdate><p><a href=#queue-a-task>Queue a task</a> to <a href=#fire-a-simple-event>fire a
+ simple event</a> named <code title=event-media-timeupdate><a href=#event-media-timeupdate>timeupdate</a></code> at the
+ element.</li>
+
+ <li><p>If the seek was in response to a DOM method call or setting
+ of an IDL attribute, then continue the script. The remainder of
+ these steps must be run asynchronously. With the exception of the
+ steps marked with ⌛, they could be aborted at any time by
+ another instance of this algorithm being invoked.</li>
+
<li><p>If the <var title="">new playback position</var> is later
than the end of the <a href=#media-resource>media resource</a>, then let it be the
end of the <a href=#media-resource>media resource</a> instead.</li>
@@ -24451,49 +24474,49 @@
position instead.</li>
<li><p>If the (possibly now changed) <var title="">new playback
- position</var> is not in one of the ranges given in the <code title=dom-media-seekable><a href=#dom-media-seekable>seekable</a></code> attribute, then the user
- agent must raise an <code><a href=#index_size_err>INDEX_SIZE_ERR</a></code> exception (if the
- seek was in response to a DOM method call or setting of an IDL
- attribute), and abort these steps.</li>
+ position</var> is not in one of the ranges given in the <code title=dom-media-seekable><a href=#dom-media-seekable>seekable</a></code> attribute, then let it
+ be the position in one of the ranges given in the <code title=dom-media-seekable><a href=#dom-media-seekable>seekable</a></code> attribute that is the
+ nearest to the <var title="">new playback position</var>. If two
+ positions both satisfy that constraint (i.e. the <var title="">new
+ playback position</var> is exactly in the middle of a range in the
+ <code title=dom-media-seekable><a href=#dom-media-seekable>seekable</a></code> attribute) then
+ use the position that is closest to the <a href=#current-playback-position>current playback
+ position</a>. If there are no ranges given in the <code title=dom-media-seekable><a href=#dom-media-seekable>seekable</a></code> attribute then set the
+ <code title=dom-media-seeking><a href=#dom-media-seeking>seeking</a></code> IDL attribute to
+ false and abort these steps.</li>
- <li><p>The <a href=#current-playback-position>current playback position</a> must be set to
- the given <var title="">new playback position</var>.</li>
+ <li><p>Set the <a href=#current-playback-position>current playback position</a> to the given
+ <var title="">new playback position</var>.</li>
- <li><p>The <code title=dom-media-seeking><a href=#dom-media-seeking>seeking</a></code> IDL
- attribute must be set to true.</li>
-
- <li id=seekUpdate><p>The user agent must <a href=#queue-a-task>queue a
- task</a> to <a href=#fire-a-simple-event>fire a simple event</a> named <code title=event-media-timeupdate><a href=#event-media-timeupdate>timeupdate</a></code> at the element.</li>
-
<li><p>If the <a href=#media-element>media element</a> was <a href=#potentially-playing>potentially
playing</a> immediately before it started seeking, but seeking
caused its <code title=dom-media-readyState><a href=#dom-media-readystate>readyState</a></code>
- attribute to change to a value lower than <code title=dom-media-HAVE_FUTURE_DATA><a href=#dom-media-have_future_data>HAVE_FUTURE_DATA</a></code>, the
- user agent must <a href=#queue-a-task>queue a task</a> to <a href=#fire-a-simple-event>fire a simple
- event</a> named <code title=event-media-waiting><a href=#event-media-waiting>waiting</a></code> at
- the element.</li>
+ attribute to change to a value lower than <code title=dom-media-HAVE_FUTURE_DATA><a href=#dom-media-have_future_data>HAVE_FUTURE_DATA</a></code>, then
+ <a href=#queue-a-task>queue a task</a> to <a href=#fire-a-simple-event>fire a simple event</a> named
+ <code title=event-media-waiting><a href=#event-media-waiting>waiting</a></code> at the
+ element.</li>
<li><p>If, when it reaches this step, the user agent has still not
established whether or not the <a href=#media-data>media data</a> for the <var title="">new playback position</var> is available, and, if it is,
- decoded enough data to play back that position, the user agent must
- <a href=#queue-a-task>queue a task</a> to <a href=#fire-a-simple-event>fire a simple event</a>
- named <code title=event-media-seeking><a href=#event-media-seeking>seeking</a></code> at the
- element.</li>
+ decoded enough data to play back that position, then <a href=#queue-a-task>queue a
+ task</a> to <a href=#fire-a-simple-event>fire a simple event</a> named <code title=event-media-seeking><a href=#event-media-seeking>seeking</a></code> at the element.</li>
- <li><p>If the seek was in response to a DOM method call or setting
- of an IDL attribute, then continue the script. The remainder of
- these steps must be run asynchronously.</li>
+ <li><p>Wait until it has established whether or not the <a href=#media-data>media
+ data</a> for the <var title="">new playback position</var> is
+ available, and, if it is, until it has decoded enough data to play
+ back that position.</li>
- <li><p>The user agent must wait until it has established whether or
- not the <a href=#media-data>media data</a> for the <var title="">new playback
- position</var> is available, and, if it is, until it has decoded
- enough data to play back that position.</li>
+ <li><p><a href=#await-a-stable-state>Await a stable state</a>. The <a href=#synchronous-section>synchronous
+ section</a> consists of all the remaining steps of this
+ algorithm. (Steps in the <a href=#synchronous-section>synchronous section</a> are
+ marked with ⌛.)</li>
- <li><p>The <code title=dom-media-seeking><a href=#dom-media-seeking>seeking</a></code> IDL
- attribute must be set to false.</li>
+ <li><p>⌛ Set the <code title=dom-media-seeking><a href=#dom-media-seeking>seeking</a></code> IDL attribute to
+ false.</li>
- <li><p>The user agent must <a href=#queue-a-task>queue a task</a> to <a href=#fire-a-simple-event>fire
- a simple event</a> named <code title=event-media-seeked><a href=#event-media-seeked>seeked</a></code> at the element.</li>
+ <li><p>⌛ <a href=#queue-a-task>Queue a task</a> to <a href=#fire-a-simple-event>fire a simple
+ event</a> named <code title=event-media-seeked><a href=#event-media-seeked>seeked</a></code>
+ at the element.</li>
</ol><p>The <dfn id=dom-media-seekable title=dom-media-seekable><code>seekable</code></dfn>
attribute must return a new static <a href=#normalized-timeranges-object>normalized
Modified: index
===================================================================
--- index 2010-03-25 08:18:08 UTC (rev 4867)
+++ index 2010-03-25 09:30:10 UTC (rev 4868)
@@ -173,7 +173,7 @@
<header class=head id=head><p><a class=logo href=http://www.whatwg.org/ rel=home><img alt=WHATWG src=/images/logo></a></p>
<hgroup><h1>HTML5 (including next generation additions still in development)</h1>
- <h2 class="no-num no-toc">Draft Standard — 24 March 2010</h2>
+ <h2 class="no-num no-toc">Draft Standard — 25 March 2010</h2>
</hgroup><p>You can take part in this work. <a href=http://www.whatwg.org/mailing-list>Join the working group's discussion list.</a></p>
<p><strong>Web designers!</strong> We have a <a href=http://blog.whatwg.org/faq/>FAQ</a>, a <a href=http://forums.whatwg.org/>forum</a>, and a <a href=http://www.whatwg.org/mailing-list#help>help mailing list</a> for you!</p>
<!--<p class="impl"><strong>Implementors!</strong> We have a <a href="http://www.whatwg.org/mailing-list#implementors">mailing list</a> for you too!</p>-->
@@ -24336,13 +24336,36 @@
<p>When the user agent is required to <dfn id=dom-media-seek title=dom-media-seek>seek</dfn> to a particular <var title="">new
playback position</var> in the <a href=#media-resource>media resource</a>, it means
- that the user agent must run the following steps:</p>
+ that the user agent must run the following steps. This algorithm
+ interacts closely with the <a href=#event-loop>event loop</a> mechanism; in
+ particular, it has a <a href=#synchronous-section>synchronous
+ section</a> (which is triggered as part of the <a href=#event-loop>event
+ loop</a> algorithm). Steps in that section are marked with
+ ⌛.</p>
- <ol><li><p>If the <a href=#media-element>media element</a>'s <code title=dom-media-readyState><a href=#dom-media-readystate>readyState</a></code> is <code title=dom-media-HAVE_NOTHING><a href=#dom-media-have_nothing>HAVE_NOTHING</a></code>, then the user
- agent must raise an <code><a href=#invalid_state_err>INVALID_STATE_ERR</a></code> exception (if
- the seek was in response to a DOM method call or setting of an IDL
- attribute), and abort these steps.</li>
+ <ol><li><p>If the <a href=#media-element>media element</a>'s <code title=dom-media-readyState><a href=#dom-media-readystate>readyState</a></code> is <code title=dom-media-HAVE_NOTHING><a href=#dom-media-have_nothing>HAVE_NOTHING</a></code>, then raise an
+ <code><a href=#invalid_state_err>INVALID_STATE_ERR</a></code> exception (if the seek was in
+ response to a DOM method call or setting of an IDL attribute), and
+ abort these steps.</li>
+ <li><p>If the element's <code title=dom-media-seeking><a href=#dom-media-seeking>seeking</a></code> IDL attribute is true,
+ then another instance of this algorithm is already running. Abort
+ that other instance of the algorithm without waiting for the step
+ that it is running to complete.</li>
+
+ <li><p>Set the <code title=dom-media-seeking><a href=#dom-media-seeking>seeking</a></code> IDL
+ attribute to true.</li>
+
+ <li id=seekUpdate><p><a href=#queue-a-task>Queue a task</a> to <a href=#fire-a-simple-event>fire a
+ simple event</a> named <code title=event-media-timeupdate><a href=#event-media-timeupdate>timeupdate</a></code> at the
+ element.</li>
+
+ <li><p>If the seek was in response to a DOM method call or setting
+ of an IDL attribute, then continue the script. The remainder of
+ these steps must be run asynchronously. With the exception of the
+ steps marked with ⌛, they could be aborted at any time by
+ another instance of this algorithm being invoked.</li>
+
<li><p>If the <var title="">new playback position</var> is later
than the end of the <a href=#media-resource>media resource</a>, then let it be the
end of the <a href=#media-resource>media resource</a> instead.</li>
@@ -24352,49 +24375,49 @@
position instead.</li>
<li><p>If the (possibly now changed) <var title="">new playback
- position</var> is not in one of the ranges given in the <code title=dom-media-seekable><a href=#dom-media-seekable>seekable</a></code> attribute, then the user
- agent must raise an <code><a href=#index_size_err>INDEX_SIZE_ERR</a></code> exception (if the
- seek was in response to a DOM method call or setting of an IDL
- attribute), and abort these steps.</li>
+ position</var> is not in one of the ranges given in the <code title=dom-media-seekable><a href=#dom-media-seekable>seekable</a></code> attribute, then let it
+ be the position in one of the ranges given in the <code title=dom-media-seekable><a href=#dom-media-seekable>seekable</a></code> attribute that is the
+ nearest to the <var title="">new playback position</var>. If two
+ positions both satisfy that constraint (i.e. the <var title="">new
+ playback position</var> is exactly in the middle of a range in the
+ <code title=dom-media-seekable><a href=#dom-media-seekable>seekable</a></code> attribute) then
+ use the position that is closest to the <a href=#current-playback-position>current playback
+ position</a>. If there are no ranges given in the <code title=dom-media-seekable><a href=#dom-media-seekable>seekable</a></code> attribute then set the
+ <code title=dom-media-seeking><a href=#dom-media-seeking>seeking</a></code> IDL attribute to
+ false and abort these steps.</li>
- <li><p>The <a href=#current-playback-position>current playback position</a> must be set to
- the given <var title="">new playback position</var>.</li>
+ <li><p>Set the <a href=#current-playback-position>current playback position</a> to the given
+ <var title="">new playback position</var>.</li>
- <li><p>The <code title=dom-media-seeking><a href=#dom-media-seeking>seeking</a></code> IDL
- attribute must be set to true.</li>
-
- <li id=seekUpdate><p>The user agent must <a href=#queue-a-task>queue a
- task</a> to <a href=#fire-a-simple-event>fire a simple event</a> named <code title=event-media-timeupdate><a href=#event-media-timeupdate>timeupdate</a></code> at the element.</li>
-
<li><p>If the <a href=#media-element>media element</a> was <a href=#potentially-playing>potentially
playing</a> immediately before it started seeking, but seeking
caused its <code title=dom-media-readyState><a href=#dom-media-readystate>readyState</a></code>
- attribute to change to a value lower than <code title=dom-media-HAVE_FUTURE_DATA><a href=#dom-media-have_future_data>HAVE_FUTURE_DATA</a></code>, the
- user agent must <a href=#queue-a-task>queue a task</a> to <a href=#fire-a-simple-event>fire a simple
- event</a> named <code title=event-media-waiting><a href=#event-media-waiting>waiting</a></code> at
- the element.</li>
+ attribute to change to a value lower than <code title=dom-media-HAVE_FUTURE_DATA><a href=#dom-media-have_future_data>HAVE_FUTURE_DATA</a></code>, then
+ <a href=#queue-a-task>queue a task</a> to <a href=#fire-a-simple-event>fire a simple event</a> named
+ <code title=event-media-waiting><a href=#event-media-waiting>waiting</a></code> at the
+ element.</li>
<li><p>If, when it reaches this step, the user agent has still not
established whether or not the <a href=#media-data>media data</a> for the <var title="">new playback position</var> is available, and, if it is,
- decoded enough data to play back that position, the user agent must
- <a href=#queue-a-task>queue a task</a> to <a href=#fire-a-simple-event>fire a simple event</a>
- named <code title=event-media-seeking><a href=#event-media-seeking>seeking</a></code> at the
- element.</li>
+ decoded enough data to play back that position, then <a href=#queue-a-task>queue a
+ task</a> to <a href=#fire-a-simple-event>fire a simple event</a> named <code title=event-media-seeking><a href=#event-media-seeking>seeking</a></code> at the element.</li>
- <li><p>If the seek was in response to a DOM method call or setting
- of an IDL attribute, then continue the script. The remainder of
- these steps must be run asynchronously.</li>
+ <li><p>Wait until it has established whether or not the <a href=#media-data>media
+ data</a> for the <var title="">new playback position</var> is
+ available, and, if it is, until it has decoded enough data to play
+ back that position.</li>
- <li><p>The user agent must wait until it has established whether or
- not the <a href=#media-data>media data</a> for the <var title="">new playback
- position</var> is available, and, if it is, until it has decoded
- enough data to play back that position.</li>
+ <li><p><a href=#await-a-stable-state>Await a stable state</a>. The <a href=#synchronous-section>synchronous
+ section</a> consists of all the remaining steps of this
+ algorithm. (Steps in the <a href=#synchronous-section>synchronous section</a> are
+ marked with ⌛.)</li>
- <li><p>The <code title=dom-media-seeking><a href=#dom-media-seeking>seeking</a></code> IDL
- attribute must be set to false.</li>
+ <li><p>⌛ Set the <code title=dom-media-seeking><a href=#dom-media-seeking>seeking</a></code> IDL attribute to
+ false.</li>
- <li><p>The user agent must <a href=#queue-a-task>queue a task</a> to <a href=#fire-a-simple-event>fire
- a simple event</a> named <code title=event-media-seeked><a href=#event-media-seeked>seeked</a></code> at the element.</li>
+ <li><p>⌛ <a href=#queue-a-task>Queue a task</a> to <a href=#fire-a-simple-event>fire a simple
+ event</a> named <code title=event-media-seeked><a href=#event-media-seeked>seeked</a></code>
+ at the element.</li>
</ol><p>The <dfn id=dom-media-seekable title=dom-media-seekable><code>seekable</code></dfn>
attribute must return a new static <a href=#normalized-timeranges-object>normalized
Modified: source
===================================================================
--- source 2010-03-25 08:18:08 UTC (rev 4867)
+++ source 2010-03-25 09:30:10 UTC (rev 4868)
@@ -26372,17 +26372,42 @@
<p>When the user agent is required to <dfn
title="dom-media-seek">seek</dfn> to a particular <var title="">new
playback position</var> in the <span>media resource</span>, it means
- that the user agent must run the following steps:</p>
+ that the user agent must run the following steps. This algorithm
+ interacts closely with the <span>event loop</span> mechanism; in
+ particular, it has a <span>synchronous
+ section</span> (which is triggered as part of the <span>event
+ loop</span> algorithm). Steps in that section are marked with
+ ⌛.</p>
<ol>
<li><p>If the <span>media element</span>'s <code
title="dom-media-readyState">readyState</code> is <code
- title="dom-media-HAVE_NOTHING">HAVE_NOTHING</code>, then the user
- agent must raise an <code>INVALID_STATE_ERR</code> exception (if
- the seek was in response to a DOM method call or setting of an IDL
- attribute), and abort these steps.</p></li>
+ title="dom-media-HAVE_NOTHING">HAVE_NOTHING</code>, then raise an
+ <code>INVALID_STATE_ERR</code> exception (if the seek was in
+ response to a DOM method call or setting of an IDL attribute), and
+ abort these steps.</p></li>
+ <li><p>If the element's <code
+ title="dom-media-seeking">seeking</code> IDL attribute is true,
+ then another instance of this algorithm is already running. Abort
+ that other instance of the algorithm without waiting for the step
+ that it is running to complete.</p></li>
+
+ <li><p>Set the <code title="dom-media-seeking">seeking</code> IDL
+ attribute to true.</p></li>
+
+ <li id="seekUpdate"><p><span>Queue a task</span> to <span>fire a
+ simple event</span> named <code
+ title="event-media-timeupdate">timeupdate</code> at the
+ element.</p></li>
+
+ <li><p>If the seek was in response to a DOM method call or setting
+ of an IDL attribute, then continue the script. The remainder of
+ these steps must be run asynchronously. With the exception of the
+ steps marked with ⌛, they could be aborted at any time by
+ another instance of this algorithm being invoked.</p></li>
+
<li><p>If the <var title="">new playback position</var> is later
than the end of the <span>media resource</span>, then let it be the
end of the <span>media resource</span> instead.</p></li>
@@ -26393,53 +26418,55 @@
<li><p>If the (possibly now changed) <var title="">new playback
position</var> is not in one of the ranges given in the <code
- title="dom-media-seekable">seekable</code> attribute, then the user
- agent must raise an <code>INDEX_SIZE_ERR</code> exception (if the
- seek was in response to a DOM method call or setting of an IDL
- attribute), and abort these steps.</p></li>
+ title="dom-media-seekable">seekable</code> attribute, then let it
+ be the position in one of the ranges given in the <code
+ title="dom-media-seekable">seekable</code> attribute that is the
+ nearest to the <var title="">new playback position</var>. If two
+ positions both satisfy that constraint (i.e. the <var title="">new
+ playback position</var> is exactly in the middle of a range in the
+ <code title="dom-media-seekable">seekable</code> attribute) then
+ use the position that is closest to the <span>current playback
+ position</span>. If there are no ranges given in the <code
+ title="dom-media-seekable">seekable</code> attribute then set the
+ <code title="dom-media-seeking">seeking</code> IDL attribute to
+ false and abort these steps.</p></li>
- <li><p>The <span>current playback position</span> must be set to
- the given <var title="">new playback position</var>.</p></li>
+ <li><p>Set the <span>current playback position</span> to the given
+ <var title="">new playback position</var>.</p></li>
- <li><p>The <code title="dom-media-seeking">seeking</code> IDL
- attribute must be set to true.</p></li>
-
- <li id="seekUpdate"><p>The user agent must <span>queue a
- task</span> to <span>fire a simple event</span> named <code
- title="event-media-timeupdate">timeupdate</code> at the element.</p></li>
-
<li><p>If the <span>media element</span> was <span>potentially
playing</span> immediately before it started seeking, but seeking
caused its <code title="dom-media-readyState">readyState</code>
attribute to change to a value lower than <code
- title="dom-media-HAVE_FUTURE_DATA">HAVE_FUTURE_DATA</code>, the
- user agent must <span>queue a task</span> to <span>fire a simple
- event</span> named <code title="event-media-waiting">waiting</code> at
- the element.</p></li>
+ title="dom-media-HAVE_FUTURE_DATA">HAVE_FUTURE_DATA</code>, then
+ <span>queue a task</span> to <span>fire a simple event</span> named
+ <code title="event-media-waiting">waiting</code> at the
+ element.</p></li>
<li><p>If, when it reaches this step, the user agent has still not
established whether or not the <span>media data</span> for the <var
title="">new playback position</var> is available, and, if it is,
- decoded enough data to play back that position, the user agent must
- <span>queue a task</span> to <span>fire a simple event</span>
- named <code title="event-media-seeking">seeking</code> at the
- element.</p></li>
+ decoded enough data to play back that position, then <span>queue a
+ task</span> to <span>fire a simple event</span> named <code
+ title="event-media-seeking">seeking</code> at the element.</p></li>
- <li><p>If the seek was in response to a DOM method call or setting
- of an IDL attribute, then continue the script. The remainder of
- these steps must be run asynchronously.</p></li>
+ <li><p>Wait until it has established whether or not the <span>media
+ data</span> for the <var title="">new playback position</var> is
+ available, and, if it is, until it has decoded enough data to play
+ back that position.</p></li>
- <li><p>The user agent must wait until it has established whether or
- not the <span>media data</span> for the <var title="">new playback
- position</var> is available, and, if it is, until it has decoded
- enough data to play back that position.</p></li>
+ <li><p><span>Await a stable state</span>. The <span>synchronous
+ section</span> consists of all the remaining steps of this
+ algorithm. (Steps in the <span>synchronous section</span> are
+ marked with ⌛.)</p></li>
- <li><p>The <code title="dom-media-seeking">seeking</code> IDL
- attribute must be set to false.</p></li>
+ <li><p>⌛ Set the <code
+ title="dom-media-seeking">seeking</code> IDL attribute to
+ false.</p></li>
- <li><p>The user agent must <span>queue a task</span> to <span>fire
- a simple event</span> named <code
- title="event-media-seeked">seeked</code> at the element.</p></li>
+ <li><p>⌛ <span>Queue a task</span> to <span>fire a simple
+ event</span> named <code title="event-media-seeked">seeked</code>
+ at the element.</p></li>
</ol>
More information about the Commit-Watchers
mailing list