Skip to content
Permalink
Browse files

[] (0) Further work on the event loop front. (This should complete th…

…e bulk of the changes required for the media elements section.)

git-svn-id: http://svn.whatwg.org/webapps@2083 340c8d12-0b0e-0410-8428-c7bf67bfef74
  • Loading branch information
Hixie committed Aug 19, 2008
1 parent d880f94 commit 193f1fc25e4e6d7cd9d7a4c85874893f6927ea09
Showing with 99 additions and 99 deletions.
  1. +51 −59 index
  2. +48 −40 source
110 index

<li>
<p>If the second step above changed the value of <code
title=dom-media-paused><a href="#paused">paused</a></code>, then, after
any running scripts have finished executing, the user agent must first
<a href="#firing2">fire a simple event</a> called <code
title=dom-media-paused><a href="#paused">paused</a></code>, then the
user agent must <a href="#queue">queue a task</a> to <a
href="#firing2">fire a simple event</a> called <code
title=event-timeupdate><a href="#timeupdate">timeupdate</a></code> at
the element, and then <a href="#firing2">fire a simple event</a> called
<code title=event-pause><a href="#pause1">pause</a></code> at the
element.
</li>
<!-- xxx queue -->
the element, and <a href="#queue">queue a task</a> to <a
href="#firing2">fire a simple event</a> called <code
title=event-pause><a href="#pause1">pause</a></code> at the element.
</ol>

<p>When a <a href="#media7">media element</a> is <span>removed from a
<p>The <code title=dom-media-seeking><a
href="#seeking0">seeking</a></code> DOM attribute must be set to true.

<li>
<p>If the seek was in response to a DOM method call or setting of a DOM
attribute, then continue the script. The remainder of these steps must
be run asynchronously.

<li id=seekUpdate>
<p>Once any running scripts have finished executing, the user agent must
<a href="#firing2">fire a simple event</a> called <code
title=event-timeupdate><a href="#timeupdate">timeupdate</a></code> at
the element.
</li>
<!-- xxx queue -->
<p>The user agent must <a href="#queue">queue a task</a> to <a
href="#queue">queue a task</a> to <a href="#firing2">fire a simple
event</a> called <code title=event-timeupdate><a
href="#timeupdate">timeupdate</a></code> at the element.

<li>
<p>If the <a href="#media7">media element</a> was <a
href="#readystate0">readyState</a></code> attribute to change to a value
lower than <code title=dom-media-CAN_PLAY><a
href="#canplay">CAN_PLAY</a></code>, the user agent must <a
href="#firing2">fire a simple event</a> called <code
title=event-waiting><a href="#waiting">waiting</a></code> at the
element.
href="#queue">queue a task</a> to <a href="#firing2">fire a simple
event</a> called <code title=event-waiting><a
href="#waiting">waiting</a></code> at the element.

<li>
<p>If, when it reaches this step, the user agent has still not
established whether or not the <a href="#media9">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="#firing2">fire a simple event</a> called <code
title=event-seeking><a href="#seeking1">seeking</a></code> at the
element.
href="#queue">queue a task</a> to <a href="#firing2">fire a simple
event</a> called <code title=event-seeking><a
href="#seeking1">seeking</a></code> at the element.

<li>
<p>If the seek was in response to a DOM method call or setting of a DOM
attribute, then continue the script. The remainder of these steps must
be run asynchronously.

<li>
<p>The user agent must wait until it has established whether or not the
href="#seeking0">seeking</a></code> DOM attribute must be set to false.

<li>
<p>Once any running scripts have finished executing, the user agent must
<a href="#firing2">fire a simple event</a> called <code
<p>The user agent must <a href="#queue">queue a task</a> to <a
href="#firing2">fire a simple event</a> called <code
title=event-seeked><a href="#seeked">seeked</a></code> at the element.
</li>
<!-- xxx queue -->
</ol>

<p>The <dfn id=seekable
<li>
<p>If the time was reached through the usual monotonic increase of the
current playback position during normal playback, the user agent must
then <a href="#firing2">fire a simple event</a> called <code
title=event-timeupdate><a href="#timeupdate">timeupdate</a></code> at
the element. (In the other cases, such as explicit seeks, relevant
events get fired as part of the overall process of changing the current
playback position.)
</li>
<!-- xxx queue -->
then <a href="#queue">queue a task</a> to <a href="#firing2">fire a
simple event</a> called <code title=event-timeupdate><a
href="#timeupdate">timeupdate</a></code> at the element. (In the other
cases, such as explicit seeks, relevant events get fired as part of the
overall process of changing the current playback position.)

<li>
<p>If the time was reached through the usual monotonic increase of the
title="">other ranges</var> that have both their "active" boolean and
their "pause" boolean set to "true", then immediately act as if the
element's <code title=dom-media-pause><a
href="#pause0">pause()</a></code> method had been invoked. (In the other
cases, such as explicit seeks, playback is not paused by exiting a cue
range, even if that cue range has its "pause" boolean set to "true".)
href="#pause0">pause()</a></code> method had been invoked.
<!-- pause() can in theory call load(), but never
can it do so as part of this invokation, since we wouldn't be in
this algorithm if the media element was empty. So, no need to couch
all this in a task. -->
(In the other cases, such as explicit seeks, playback is not paused by
exiting a cue range, even if that cue range has its "pause" boolean set
to "true".)

<li>
<p>Invoke all the non-null "exit" callbacks for all of the <a
href="#cue-ranges0" title="cue range">cue ranges</a> in <var
title="">other ranges</var> that have their "active" boolean set to
"true" (active), in list order, passing their identifier as the
callback's only argument.
</li>
<!-- XXX queue -->
<p>For each non-null "exit" callback of the <a href="#cue-ranges0"
title="cue range">cue ranges</a> in <var title="">other ranges</var>
that have their "active" boolean set to "true" (active), in list order,
<a href="#queue">queue a task</a> that invokes the callback, passing the
cue range's identifier as the callback's only argument.

<li>
<p>Invoke all the non-null "enter" callbacks for all of the <a
href="#cue-ranges0" title="cue range">cue ranges</a> in <var
title="">current ranges</var> that have their "active" boolean set to
"false" (inactive), in list order, passing their identifier as the
callback's only argument.
</li>
<!-- XXX queue -->
<p>For each non-null "enter" callback of the <a href="#cue-ranges0"
title="cue range">cue ranges</a> in <var title="">current ranges</var>
that have their "active" boolean set to "false" (inactive), in list
order, <a href="#queue">queue a task</a> that invokes the callback,
passing the cue range's identifier as the callback's only argument.

<li>
<p>Set the "active" boolean of all the <a href="#cue-ranges0" title="cue

<p>Whenever either the <code title=dom-media-muted><a
href="#muted">muted</a></code> or <code title=dom-media-volume><a
href="#volume">volume</a></code> attributes are changed, after any running
scripts have finished executing, the user agent must <a
href="#firing2">fire a simple event</a> called <code
title=event-volumechange><a href="#volumechange">volumechange</a></code>
at the <a href="#media7">media element</a>.</p>
<!-- queue xxx -->
href="#volume">volume</a></code> attributes are changed, the user agent
must <a href="#queue">queue a task</a> to <a href="#firing2">fire a simple
event</a> called <code title=event-volumechange><a
href="#volumechange">volumechange</a></code> at the <a
href="#media7">media element</a>.

<h5 id=time-ranges><span class=secno>4.7.10.11. </span>Time ranges</h5>

88 source
<li><p>The method must then return.</p></li>

<li><p>If the second step above changed the value of <code
title="dom-media-paused">paused</code>, then, after any running
scripts have finished executing, the user agent must first
<span>fire a simple event</span> called <code
title="event-timeupdate">timeupdate</code> at the element, and then
<span>fire a simple event</span> called <code
title="event-pause">pause</code> at the element.</p></li><!-- xxx queue -->
title="dom-media-paused">paused</code>, then the user agent must
<span>queue a task</span> to <span>fire a simple event</span>
called <code title="event-timeupdate">timeupdate</code> at the
element, and <span>queue a task</span> to <span>fire a simple
event</span> called <code title="event-pause">pause</code> at the
element.</p></li>

</ol>

<li><p>The <code title="dom-media-seeking">seeking</code> DOM
attribute must be set to true.</p></li>

<li><p>If the seek was in response to a DOM method call or setting
of a DOM attribute, then continue the script. The remainder of
these steps must be run asynchronously.</p></li>

<li id="seekUpdate"><p>Once any running scripts have finished
executing, the user agent must <span>fire a simple event</span>
called <code title="event-timeupdate">timeupdate</code> at the
element.</p></li><!-- xxx queue -->
<li id="seekUpdate"><p>The user agent must <span>queue a
task</span> to <span>queue a task</span> to <span>fire a simple
event</span> called <code
title="event-timeupdate">timeupdate</code> at the element.</p></li>

<li><p>If the <span>media element</span> was <span>actively
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-CAN_PLAY">CAN_PLAY</code>, the user agent must
<span>fire a simple event</span> called <code
title="event-waiting">waiting</code> at the element.</p></li>
<span>queue a task</span> to <span>fire a simple event</span>
called <code title="event-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>fire a simple event</span> called <code
title="event-seeking">seeking</code> at the element.</p></li>
<span>queue a task</span> to <span>fire a simple event</span>
called <code title="event-seeking">seeking</code> at the
element.</p></li>

<li><p>If the seek was in response to a DOM method call or setting
of a DOM attribute, then continue the script. The remainder of
these steps must be run asynchronously.</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
<li><p>The <code title="dom-media-seeking">seeking</code> DOM
attribute must be set to false.</p></li>

<li><p>Once any running scripts have finished executing, the user
agent must <span>fire a simple event</span> called <code
title="event-seeked">seeked</code> at the element.</p></li><!-- xxx queue -->
<li><p>The user agent must <span>queue a task</span> to <span>fire
a simple event</span> called <code
title="event-seeked">seeked</code> at the element.</p></li>

</ol>

steps.</p></li>

<li><p>If the time was reached through the usual monotonic increase
of the current playback position during normal playback, the
user agent must then <span>fire a simple event</span> called <code
of the current playback position during normal playback, the user
agent must then <span>queue a task</span> to <span>fire a simple
event</span> called <code
title="event-timeupdate">timeupdate</code> at the element. (In the
other cases, such as explicit seeks, relevant events get fired as
part of the overall process of changing the current playback
position.)</p></li><!-- xxx queue -->
position.)</p></li>

<li><p>If the time was reached through the usual monotonic increase
of the current playback position during normal playback, and there
are <span title="cue range">cue ranges</span> in <var
title="">other ranges</var> that have both their "active" boolean
and their "pause" boolean set to "true", then immediately act as if
the element's <code title="dom-media-pause">pause()</code> method
had been invoked. (In the other cases, such as explicit seeks,
playback is not paused by exiting a cue range, even if that cue
range has its "pause" boolean set to "true".)</p></li>

<li><p>Invoke all the non-null "exit" callbacks for all of the
<span title="cue range">cue ranges</span> in <var title="">other
had been invoked. <!-- pause() can in theory call load(), but never
can it do so as part of this invokation, since we wouldn't be in
this algorithm if the media element was empty. So, no need to couch
all this in a task. --> (In the other cases, such as explicit
seeks, playback is not paused by exiting a cue range, even if that
cue range has its "pause" boolean set to "true".)</p></li>

<li><p>For each non-null "exit" callback of the <span
title="cue range">cue ranges</span> in <var title="">other
ranges</var> that have their "active" boolean set to "true"
(active), in list order, passing their identifier as the callback's
only argument.</p></li> <!-- XXX queue -->
(active), in list order, <span>queue a task</span> that invokes the
callback, passing the cue range's identifier as the callback's only
argument.</p></li>

<li><p>Invoke all the non-null "enter" callbacks for all of the
<span title="cue range">cue ranges</span> in <var title="">current
ranges</var> that have their "active" boolean set to "false"
(inactive), in list order, passing their identifier as the
callback's only argument.</p></li> <!-- XXX queue -->
<li><p>For each non-null "enter" callback of the <span title="cue
range">cue ranges</span> in <var title="">current ranges</var> that
have their "active" boolean set to "false" (inactive), in list
order, <span>queue a task</span> that invokes the callback, passing
the cue range's identifier as the callback's only
argument.</p></li>

<li><p>Set the "active" boolean of all the <span title="cue
range">cue ranges</span> in the <var title="">current ranges</var>

<p>Whenever either the <code title="dom-media-muted">muted</code> or
<code title="dom-media-volume">volume</code> attributes are changed,
after any running scripts have finished executing, the user agent
must <span>fire a simple event</span> called <code
the user agent must <span>queue a task</span> to <span>fire a simple
event</span> called <code
title="event-volumechange">volumechange</code> at the <span>media
element</span>.</p><!-- queue xxx -->
element</span>.</p>



0 comments on commit 193f1fc

Please sign in to comment.
You can’t perform that action at this time.