Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[giow] (0) Expose the controller state, since implementing it is appa…
…rently easy and it can be a bit more subtle than it looks.

Fixing https://www.w3.org/Bugs/Public/show_bug.cgi?id=12547
Affected topics: Video and Audio

git-svn-id: http://svn.whatwg.org/webapps@7116 340c8d12-0b0e-0410-8428-c7bf67bfef74
  • Loading branch information
Hixie committed Jun 5, 2012
1 parent 6afc42a commit bac2328
Show file tree
Hide file tree
Showing 3 changed files with 300 additions and 40 deletions.
103 changes: 91 additions & 12 deletions complete.html
Expand Up @@ -240,7 +240,7 @@

<header class=head id=head><p><a class=logo href=http://www.whatwg.org/><img alt=WHATWG height=101 src=/images/logo width=101></a></p>
<hgroup><h1 class=allcaps>HTML</h1>
<h2 class="no-num no-toc">Living Standard &mdash; Last Updated 4 June 2012</h2>
<h2 class="no-num no-toc">Living Standard &mdash; Last Updated 5 June 2012</h2>
</hgroup><dl><dt><strong>Web developer edition:</strong></dt>
<dd><strong><a href=http://developers.whatwg.org/>http://developers.whatwg.org/</a></strong></dd>
<dt>Multiple-page version:</dt>
Expand Down Expand Up @@ -31737,14 +31737,18 @@ <h6 id=introduction-0><span class=secno>4.8.10.11.1 </span>Introduction</h6>

<h6 id=media-controllers><span class=secno>4.8.10.11.2 </span>Media controllers</h6>

<pre class=idl>[<a href=#dom-mediacontroller title=dom-MediaController>Constructor</a>]
<pre class=idl>enum <dfn id=mediacontrollerplaybackstate>MediaControllerPlaybackState</dfn> { "<a href=#dom-mediacontroller-waiting title=dom-MediaController-waiting>waiting</a>", "<a href=#dom-mediacontroller-playing title=dom-MediaController-playing>playing</a>", "<a href=#dom-mediacontroller-ended title=dom-MediaController-ended>ended</a>" };
[<a href=#dom-mediacontroller title=dom-MediaController>Constructor</a>]
interface <dfn id=mediacontroller>MediaController</dfn> {
readonly attribute unsigned short <a href=#dom-mediacontroller-readystate title=dom-MediaController-readyState>readyState</a>; // uses <a href=#htmlmediaelement>HTMLMediaElement</a>.<a href=#dom-media-readystate title=dom-media-readyState>readyState</a>'s values

readonly attribute <a href=#timeranges>TimeRanges</a> <a href=#dom-mediacontroller-buffered title=dom-MediaController-buffered>buffered</a>;
readonly attribute <a href=#timeranges>TimeRanges</a> <a href=#dom-mediacontroller-seekable title=dom-MediaController-seekable>seekable</a>;
readonly attribute double <a href=#dom-mediacontroller-duration title=dom-MediaController-duration>duration</a>;
attribute double <a href=#dom-mediacontroller-currenttime title=dom-MediaController-currentTime>currentTime</a>;

readonly attribute boolean <a href=#dom-mediacontroller-paused title=dom-MediaController-paused>paused</a>;
readonly attribute <a href=#mediacontrollerplaybackstate>MediaControllerPlaybackState</a> <a href=#dom-mediacontroller-playbackstate title=dom-MediaController-playbackState>playbackState</a>;
readonly attribute <a href=#timeranges>TimeRanges</a> <a href=#dom-mediacontroller-played title=dom-MediaController-played>played</a>;
void <a href=#dom-mediacontroller-play title=dom-MediaController-play>play</a>();
void <a href=#dom-mediacontroller-pause title=dom-MediaController-pause>pause</a>();
Expand Down Expand Up @@ -31792,6 +31796,17 @@ <h6 id=media-controllers><span class=secno>4.8.10.11.2 </span>Media controllers<

</dd>

<dt><var title="">controller</var> . <code title=dom-MediaController-readyState><a href=#dom-mediacontroller-readystate>readyState</a></code></dt>

<dd>

<p>Returns the state that the <code><a href=#mediacontroller>MediaController</a></code> was in
the last time it fired events as a result of <a href=#report-the-controller-state title="report
the controller state">reporting teh controller state</a>. The
values of this attribute are the same as for the <code title=dom-media-readyState><a href=#dom-media-readystate>readyState</a></code> attribute of <a href=#media-element title="media element">media elements</a>.</p>

</dd>

<dt><var title="">controller</var> . <code title=dom-MediaController-buffered><a href=#dom-mediacontroller-buffered>buffered</a></code></dt>

<dd>
Expand Down Expand Up @@ -31847,6 +31862,22 @@ <h6 id=media-controllers><span class=secno>4.8.10.11.2 </span>Media controllers<

</dd>

<dt><var title="">controller</var> . <code title=dom-MediaController-playbackState><a href=#dom-mediacontroller-playbackstate>playbackState</a></code></dt>

<dd>

<p>Returns the state that the <code><a href=#mediacontroller>MediaController</a></code> was in
the last time it fired events as a result of <a href=#report-the-controller-state title="report
the controller state">reporting teh controller state</a>. The
value of this attribute is either "<code title=dom-MediaController-playing><a href=#dom-mediacontroller-playing>playing</a></code>", indicating
that the media is actively playing, "<code title=dom-MediaController-ended><a href=#dom-mediacontroller-ended>ended</a></code>", indicating that
the media is not playing because playback has reached the end of
all the <a href=#slaved-media-elements>slaved media elements</a>, or "<code title=dom-MediaController-waiting><a href=#dom-mediacontroller-waiting>waiting</a></code>", indicating
that the media is not playing for some other reason (e.g. the
<code><a href=#mediacontroller>MediaController</a></code> is paused).</p>

</dd>

<dt><var title="">controller</var> . <code title=dom-MediaController-play><a href=#dom-mediacontroller-play>play</a></code>()</dt>

<dd>
Expand Down Expand Up @@ -31994,7 +32025,14 @@ <h6 id=media-controllers><span class=secno>4.8.10.11.2 </span>Media controllers<
constructor, when invoked, must return a newly created
<code><a href=#mediacontroller>MediaController</a></code> object.</p>

<hr><p>The <dfn id=dom-mediacontroller-seekable title=dom-MediaController-seekable><code>seekable</code></dfn>
<hr><p>The <dfn id=dom-mediacontroller-readystate title=dom-MediaController-readyState><code>readyState</code></dfn>
attribute must return the value to which it was most recently set.
When the <code><a href=#mediacontroller>MediaController</a></code> object is created, the
attribute must be set to the value 0 (<code title=dom-media-HAVE_NOTHING><a href=#dom-media-have_nothing>HAVE_NOTHING</a></code>). The value is
updated by the <a href=#report-the-controller-state>report the controller state</a> algorithm
below.</p>

<p>The <dfn id=dom-mediacontroller-seekable title=dom-MediaController-seekable><code>seekable</code></dfn>
attribute must return a new static <a href=#normalized-timeranges-object>normalized
<code>TimeRanges</code> object</a> that represents the
intersection of the ranges of the <a href=#media-resource title="media resource">media
Expand Down Expand Up @@ -32070,6 +32108,13 @@ <h6 id=media-controllers><span class=secno>4.8.10.11.2 </span>Media controllers<
<code><a href=#mediacontroller>MediaController</a></code>, and then <a href=#report-the-controller-state>report the controller
state</a> of the <code><a href=#mediacontroller>MediaController</a></code>.</p>

<p>The <dfn id=dom-mediacontroller-playbackstate title=dom-MediaController-playbackState><code>playbackState</code></dfn>
attribute must return the value to which it was most recently set.
When the <code><a href=#mediacontroller>MediaController</a></code> object is created, the
attribute must be set to the value "<code title=dom-MediaController-waiting><a href=#dom-mediacontroller-waiting>waiting</a></code>". The value is
updated by the <a href=#report-the-controller-state>report the controller state</a> algorithm
below.</p>

<p>The <dfn id=dom-mediacontroller-played title=dom-MediaController-played><code>played</code></dfn>
attribute must return a new static <a href=#normalized-timeranges-object>normalized
<code>TimeRanges</code> object</a> that represents the union of
Expand Down Expand Up @@ -32286,9 +32331,19 @@ <h6 id=media-controllers><span class=secno>4.8.10.11.2 </span>Media controllers<
<li><p><i>Loop</i>: Increment <var title="">next state</var> by
one.</li>

<li><p><a href=#queue-a-task>Queue a task</a> to <a href=#fire-a-simple-event>fire a simple
event</a> at the <code><a href=#mediacontroller>MediaController</a></code> object, whose
name is the event name corresponding to the value of <var title="">next state</var> given in the table below.</li>
<li>

<p><a href=#queue-a-task>Queue a task</a> to run the following steps:</p>

<ol><li><p>Set the <code><a href=#mediacontroller>MediaController</a></code>'s <code title=dom-MediaController-readyState><a href=#dom-mediacontroller-readystate>readyState</a></code>
attribute to the value <var title="">next state</var>.</li>

<li><p><a href=#fire-a-simple-event>Fire a simple event</a> at the
<code><a href=#mediacontroller>MediaController</a></code> object, whose name is the event
name corresponding to the value of <var title="">next
state</var> given in the table below.</li>

</ol></li>

<li><p>If <var title="">next state</var> is less than <var title="">new readiness state</var>, then return to the step
labeled <i>loop</i>.</li>
Expand Down Expand Up @@ -32367,12 +32422,36 @@ <h6 id=media-controllers><span class=secno>4.8.10.11.2 </span>Media controllers<
a simple event</a> named <code title=event-MediaController-pause><a href=#event-mediacontroller-pause>pause</a></code> at the
<code><a href=#mediacontroller>MediaController</a></code> object.</li>

<li><p>If the <code><a href=#mediacontroller>MediaController</a></code>'s <a href=#most-recently-reported-playback-state>most recently
reported playback state</a> is not equal to <var title="">new
playback state</var> then <a href=#queue-a-task>queue a task</a> to <a href=#fire-a-simple-event>fire a
simple event</a> at the <code><a href=#mediacontroller>MediaController</a></code> object,
whose name is <code title=event-MediaController-playing><a href=#event-mediacontroller-playing>playing</a></code> if <var title="">new playback state</var> is <i>playing</i>, <code title=event-MediaController-ended><a href=#event-mediacontroller-ended>ended</a></code> if <var title="">new playback state</var> is <i>ended</i>, and <code title=event-MediaController-waiting><a href=#event-mediacontroller-waiting>waiting</a></code>
otherwise.</li>
<li>

<p>If the <code><a href=#mediacontroller>MediaController</a></code>'s <a href=#most-recently-reported-playback-state>most recently
reported playback state</a> is not equal to <var title="">new
playback state</var> then <a href=#queue-a-task>queue a task</a> to run the
following steps:</p>

<ol><li><p>Set the <code><a href=#mediacontroller>MediaController</a></code>'s <code title=dom-MediaController-playbackState><a href=#dom-mediacontroller-playbackstate>playbackState</a></code>
attribute to the value given in the second column of the row of
the following table whose first column contains the <var title="">new playback state</var>.</li>

<li><p><a href=#fire-a-simple-event>Fire a simple event</a> at the
<code><a href=#mediacontroller>MediaController</a></code> object, whose name is the value
given in the third column of the row of the following table whose
first column contains the <var title="">new playback
state</var>.</li>

</ol><table><thead><tr><th>New playback state
<th>New value for <code title=dom-MediaController-playbackState><a href=#dom-mediacontroller-playbackstate>playbackState</a></code>
<th>Event name
<tbody><tr><td><i>playing</i>
<td>"<dfn id=dom-mediacontroller-playing title=dom-MediaController-playing><code>playing</code></dfn>"
<td><code title=event-MediaController-playing><a href=#event-mediacontroller-playing>playing</a></code>
<tr><td><i>waiting</i>
<td>"<dfn id=dom-mediacontroller-waiting title=dom-MediaController-waiting><code>waiting</code></dfn>"
<td><code title=event-MediaController-waiting><a href=#event-mediacontroller-waiting>waiting</a></code>
<tr><td><i>ended</i>
<td>"<dfn id=dom-mediacontroller-ended title=dom-MediaController-ended><code>ended</code></dfn>"
<td><code title=event-MediaController-ended><a href=#event-mediacontroller-ended>ended</a></code>
</table></li>

<li><p>Let the <code><a href=#mediacontroller>MediaController</a></code>'s <a href=#most-recently-reported-playback-state>most recently
reported playback state</a> be <var title="">new playback
Expand Down

0 comments on commit bac2328

Please sign in to comment.