- From: Ian Hickson via cvs-syncmail <cvsmail@w3.org>
- Date: Sat, 15 Nov 2008 19:28:53 +0000
- To: public-html-commits@w3.org
Update of /sources/public/html5/spec In directory hutz:/tmp/cvs-serv23630 Modified Files: Overview.html Log Message: Make <source type> optional. Move canPlayType from navigator to HTMLMediaElement. Make it return a string instead of an integer. Fix up the candidate URL list generation. Make loadstart/play event sequencing deterministic. (whatwg r2404) Index: Overview.html =================================================================== RCS file: /sources/public/html5/spec/Overview.html,v retrieving revision 1.1575 retrieving revision 1.1576 diff -u -d -r1.1575 -r1.1576 --- Overview.html 14 Nov 2008 06:50:28 -0000 1.1575 +++ Overview.html 15 Nov 2008 19:28:51 -0000 1.1576 @@ -8,7 +8,7 @@ <p><a href=http://www.w3.org/><img alt=W3C height=48 src=http://www.w3.org/Icons/w3c_home width=72></a></p> <h1>HTML 5</h1> <h2 class="no-num no-toc" id=a-vocabulary-and-associated-apis-for-html-and-xhtml>A vocabulary and associated APIs for HTML and XHTML</h2> - <h2 class="no-num no-toc" id=editor-s-draft-date-zzz-9-june-2008><!-- "W3C Working Draft" --> Editor's Draft <!--ZZZ-->14 November 2008</h2> + <h2 class="no-num no-toc" id=editor-s-draft-date-zzz-9-june-2008><!-- "W3C Working Draft" --> Editor's Draft <!--ZZZ-->15 November 2008</h2> <dl><!-- ZZZ: update the month/day <dt>This Version:</dt> <dd><a href="http://www.w3.org/TR/2008/WD-html5-20080610/">http://www.w3.org/TR/2008/WD-html5-20080610/</a></dd> @@ -97,7 +97,7 @@ specification's progress along the W3C Recommendation track. <!--ZZZ:--> - This specification is the 14 November 2008 <!--ZZZ "Working Draft"-->Editor's Draft. + This specification is the 15 November 2008 <!--ZZZ "Working Draft"-->Editor's Draft. <!--:ZZZ--> </p><!-- UNDER NO CIRCUMSTANCES IS THE PRECEDING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><!-- relationship to other work (required) --><p>This specification is also being produced by the <a href=http://www.whatwg.org/>WHATWG</a>. The two specifications are identical from the table of contents onwards.</p><!-- UNDER NO CIRCUMSTANCES IS THE FOLLOWING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><!-- UNDER NO CIRCUMSTANCES IS THE PRECEDING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><!-- context and rationale (required) --><p>This specification is intended to replace (be a new version of) @@ -375,18 +375,19 @@ <ol> <li><a href=#error-codes><span class=secno>4.8.10.1 </span>Error codes</a></li> <li><a href=#location-of-the-media-resource><span class=secno>4.8.10.2 </span>Location of the media resource</a></li> - <li><a href=#network-states><span class=secno>4.8.10.3 </span>Network states</a></li> - <li><a href=#loading-the-media-resource><span class=secno>4.8.10.4 </span>Loading the media resource</a></li> - <li><a href=#offsets-into-the-media-resource><span class=secno>4.8.10.5 </span>Offsets into the media resource</a></li> - <li><a href=#the-ready-states><span class=secno>4.8.10.6 </span>The ready states</a></li> - <li><a href=#cue-ranges><span class=secno>4.8.10.7 </span>Cue ranges</a></li> - <li><a href=#playing-the-media-resource><span class=secno>4.8.10.8 </span>Playing the media resource</a></li> - <li><a href=#seeking><span class=secno>4.8.10.9 </span>Seeking</a></li> - <li><a href=#user-interface><span class=secno>4.8.10.10 </span>User interface</a></li> - <li><a href=#time-ranges><span class=secno>4.8.10.11 </span>Time ranges</a></li> - <li><a href=#byte-ranges><span class=secno>4.8.10.12 </span>Byte ranges</a></li> - <li><a href=#mediaevents><span class=secno>4.8.10.13 </span>Event summary</a></li> - <li><a href=#security-and-privacy-considerations><span class=secno>4.8.10.14 </span>Security and privacy considerations</a></ol></li> + <li><a href=#media-types><span class=secno>4.8.10.3 </span>Media types</a></li> + <li><a href=#network-states><span class=secno>4.8.10.4 </span>Network states</a></li> + <li><a href=#loading-the-media-resource><span class=secno>4.8.10.5 </span>Loading the media resource</a></li> + <li><a href=#offsets-into-the-media-resource><span class=secno>4.8.10.6 </span>Offsets into the media resource</a></li> + <li><a href=#the-ready-states><span class=secno>4.8.10.7 </span>The ready states</a></li> + <li><a href=#cue-ranges><span class=secno>4.8.10.8 </span>Cue ranges</a></li> + <li><a href=#playing-the-media-resource><span class=secno>4.8.10.9 </span>Playing the media resource</a></li> + <li><a href=#seeking><span class=secno>4.8.10.10 </span>Seeking</a></li> + <li><a href=#user-interface><span class=secno>4.8.10.11 </span>User interface</a></li> + <li><a href=#time-ranges><span class=secno>4.8.10.12 </span>Time ranges</a></li> + <li><a href=#byte-ranges><span class=secno>4.8.10.13 </span>Byte ranges</a></li> + <li><a href=#mediaevents><span class=secno>4.8.10.14 </span>Event summary</a></li> + <li><a href=#security-and-privacy-considerations><span class=secno>4.8.10.15 </span>Security and privacy considerations</a></ol></li> <li><a href=#the-canvas-element><span class=secno>4.8.11 </span>The <code>canvas</code> element</a> <ol> <li><a href=#the-2d-context><span class=secno>4.8.11.1 </span>The 2D context</a> @@ -595,8 +596,7 @@ <li><a href=#custom-handlers><span class=secno>5.6.2 </span>Custom protocol and content handlers</a> <ol> <li><a href=#security-and-privacy><span class=secno>5.6.2.1 </span>Security and privacy</a></li> - <li><a href=#sample-handler-impl><span class=secno>5.6.2.2 </span>Sample user interface</a></ol></li> - <li><a href=#client-abilities><span class=secno>5.6.3 </span>Client abilities</a></ol></li> + <li><a href=#sample-handler-impl><span class=secno>5.6.2.2 </span>Sample user interface</a></ol></ol></li> <li><a href=#offline><span class=secno>5.7 </span>Offline Web applications</a> <ol> <li><a href=#introduction-0><span class=secno>5.7.1 </span>Introduction</a></li> @@ -13601,10 +13601,10 @@ be a <a href=#valid-url>valid URL</a>. This attribute must be present.<p>The <dfn id=attr-source-type title=attr-source-type><code>type</code></dfn> attribute gives the type of the <a href=#media-resource>media resource</a>, to help the user agent determine if it can play this <a href=#media-resource>media - resource</a> before fetching it. Its value must be a MIME - type. The <code title="">codecs</code> parameter may be specified - and might be necessary to specify exactly how the resource is - encoded. <a href=#references>[RFC2046]</a> <a href=#references>[RFC4281]</a><div class=example> + resource</a> before fetching it. If specified, its value must be + a MIME type. The <code title="">codecs</code> parameter may be + specified and might be necessary to specify exactly how the resource + is encoded. <a href=#references>[RFC2046]</a> <a href=#references>[RFC4281]</a><div class=example> <p>The following list shows some examples of how to use the <code title="">codecs=</code> MIME parameter in the <code title=attr-source-type><a href=#attr-source-type>type</a></code> attribute.</p> @@ -13693,10 +13693,7 @@ attribute gives the intended media type of the <a href=#media-resource>media resource</a>, to help the user agent determine if this <a href=#media-resource>media resource</a> is useful to the user before fetching - it. Its value must be a valid <a href=#mq>media query</a>. <a href=#references>[MQ]</a><p>Either the <code title=attr-source-type><a href=#attr-source-type>type</a></code> attribute, - the <code title=attr-source-media><a href=#attr-source-media>media</a></code> attribute or both, - must be specified, unless this is the last <code><a href=#the-source-element>source</a></code> - element child of the parent element.<p>The <dfn id=attr-source-pixelratio title=attr-source-pixelratio><code>pixelratio</code></dfn> + it. Its value must be a valid <a href=#mq>media query</a>. <a href=#references>[MQ]</a><p>The <dfn id=attr-source-pixelratio title=attr-source-pixelratio><code>pixelratio</code></dfn> attribute allows the author to specify the pixel ratio of anamorphic <a href=#media-resource title="media resource">media resources</a> that do not self-describe their <a href=#concept-video-adjusted-ratio title=concept-video-adjusted-ratio>pixel @@ -13740,6 +13737,7 @@ readonly attribute <a href=#byteranges>ByteRanges</a> <a href=#dom-media-bufferedbytes title=dom-media-bufferedBytes>bufferedBytes</a>; readonly attribute unsigned long <a href=#dom-media-totalbytes title=dom-media-totalBytes>totalBytes</a>; void <a href=#dom-media-load title=dom-media-load>load</a>(); + DOMString <a href=#dom-navigator-canplaytype title=dom-navigator-canPlayType>canPlayType</a>(in DOMString type); // ready state const unsigned short <a href=#dom-media-have_nothing title=dom-media-HAVE_NOTHING>HAVE_NOTHING</a> = 0; @@ -13818,9 +13816,7 @@ implicit loads. Unless otherwise specified, the <a href=#task-source>task source</a> for all the tasks <a href=#queue-a-task title="queue a task">queued</a> in this section and its subsections is the - <a href=#media-element-event-task-source>media element event task source</a>.<p>The <code title=dom-navigator-canPlayType><a href=#dom-navigator-canplaytype>canPlayType()</a></code> - method can be used to probe the user agent to determine what types - are supported.<h5 id=error-codes><span class=secno>4.8.10.1 </span>Error codes</h5><p>All <a href=#media-element title="media element">media elements</a> have an + <a href=#media-element-event-task-source>media element event task source</a>.<h5 id=error-codes><span class=secno>4.8.10.1 </span>Error codes</h5><p>All <a href=#media-element title="media element">media elements</a> have an associated error status, which records the last error the element encountered since the <code title=dom-media-load><a href=#dom-media-load>load()</a></code> method was last invoked. The <dfn id=dom-media-error title=dom-media-error><code>error</code></dfn> attribute, on @@ -13928,21 +13924,22 @@ <p>If all the following conditions are true:</p> - <ul><li>The <var title="">candidate</var> element has a <code title=attr-source-src><a href=#attr-source-src>src</a></code> attribute</li> + <ul><li>The <var title="">candidate</var> element has a <code title=attr-source-src><a href=#attr-source-src>src</a></code> attribute.</li> <li><a href=#resolve-a-url title="resolve a url">Resolving</a> the <a href=#url>URL</a> given by the <var title="">candidate</var> element's <code title=attr-source-src><a href=#attr-source-src>src</a></code> attribute does - not fail</li> + not fail.</li> - <li>The <var title="">candidate</var> element has a <code title=attr-source-type><a href=#attr-source-type>type</a></code> attribute and that - attribute's value, when parsed as a MIME type (including any - codecs described by the <code title="">codec</code> parameter), - does not represent a type that the user agent knows it cannot - render <a href=#references>[RFC2046]</a> <a href=#references>[RFC4281]</a></li> + <li>The <var title="">candidate</var> element either has no <code title=attr-source-type><a href=#attr-source-type>type</a></code> attribute, or its <code title=attr-source-type><a href=#attr-source-type>type</a></code> attribute's value, when + parsed as a MIME type (including any codecs described by the + <code title="">codec</code> parameter), does not represent + <a href=#a-type-that-the-user-agent-knows-it-cannot-render>a type that the user agent knows it cannot + render</a>.</li> - <li>The <var title="">candidate</var> element has a <code title=attr-source-media><a href=#attr-source-media>media</a></code> attribute and that - attribute's value, when processed according to the rules for <a href=#mq>media queries</a>, matches the current environment <a href=#references>[MQ]</a></li> + <li>The <var title="">candidate</var> element either has no <code title=attr-source-media><a href=#attr-source-media>media</a></code> attribute, or its <code title=attr-source-media><a href=#attr-source-media>media</a></code> attribute's value, when + processed according to the rules for <a href=#mq>media + queries</a>, matches the current environment. <a href=#references>[MQ]</a></li> </ul><p>...then append an item to the <var title="">result</var> list consisting of the <a href=#absolute-url>absolute URL</a> resulting from <a href=#resolve-a-url title="resolve a url">resolving</a> the <a href=#url>URL</a> given @@ -13962,7 +13959,61 @@ <li><p>Return <var title="">result</var>.</li> - </ol><h5 id=network-states><span class=secno>4.8.10.3 </span>Network states</h5><p>As <a href=#media-element title="media element">media elements</a> interact + </ol><h5 id=media-types><span class=secno>4.8.10.3 </span>Media types</h5><p>A <a href=#media-resource>media resource</a> can be described in terms of its + <em>type</em>, specifically a MIME type, optionally with a <code title="">codecs</code> parameter. <a href=#references>[RFC2046]</a> <a href=#references>[RFC4281]</a>.<p>Types are usually somewhat incomplete descriptions; for example + "<code title="">video/mpeg</code>" doesn't say anything except what + the container type is, and even a type like "<code title="">video/mp4; codecs="avc1.42E01E, + mp4a.40.2"</code>" doesn't include information like the actual + bitrate (only the maximum bitrate). Thus, given a type, a user agent + can often only know whether it <em>might</em> be able to play + media of that type (with varying levels of confidence), or whether + it definitely <em>cannot</em> play media of that type.<p><dfn id=a-type-that-the-user-agent-knows-it-cannot-render>A type that the user agent knows it cannot render</dfn> is + one that describes a resource that the user agent definitely does + not support, for example because it doesn't recognise the container + type, or it doesn't support the listed codecs.<p>The <dfn id=dom-navigator-canplaytype title=dom-navigator-canPlayType><code>canPlayType(<var title="">type</var>)</code></dfn> method must return the string + "<code title="">no</code>" if <var title="">type</var> is <a href=#a-type-that-the-user-agent-knows-it-cannot-render>a + type that the user agent knows it cannot render</a>; it must + return "<code title="">probably</code>" if the user agent is + confident that the type represents a <a href=#media-resource>media resource</a> + that it can render if used in with this <code><a href=#audio>audio</a></code> or + <code><a href=#video>video</a></code> element; and it must return "<code title="">maybe</code>" otherwise. Implementors are encouraged to + return "<code title="">maybe</code>" unless the type can be + confidently established as being supported or not. Generally, a user + agent should never return "<code title="">probably</code>" if the + type doesn't have a <code title="">codecs</code> parameter.<div class=example> + + <p>This script tests to see if the user agent supports a + (fictional) new format to dynamically decide whether to use a + <code><a href=#video>video</a></code> element or a plugin:</p> + + <pre><section id="video"> + <p><a href="playing-cats.nfv">Download video</a></p> +</section> +<script> + var videoSection = document.getElementById('video'); + var videoElement = document.createElement('video'); + var support = videoElement.canPlayType('video/x-new-fictional-format;codecs="kittens,bunnies"'); + if (support != "probably" && "New Fictional Video Plug-in" in navigator.plugins) { + // not confident of browser support + // but we have a plugin + // so use plugin instead + videoElement = document.createElement("embed"); + } else if (support == "no") { + // no support from browser and no plugin + // do nothing + videoElement = null; + } + if (videoElement) { + while (videoSection.hasChildNodes()) + videoSection.removeChild(videoSection.firstChild); + videoElement.setAttribute("src", "playing-cats.nfv"); + videoSection.appendChild(videoElement); + } +</script></pre> + + </div><p class=note>To express the type of a <a href=#media-resource>media resource</a> + to allow the user agent to avoid downloading resources it can't + render, authors can use the <code><a href=#the-source-element>source</a></code> element's <code title=attr-source-type><a href=#attr-source-type>type</a></code> attribute.<h5 id=network-states><span class=secno>4.8.10.4 </span>Network states</h5><p>As <a href=#media-element title="media element">media elements</a> interact with the network, their current network activity is represented by the <dfn id=dom-media-networkstate title=dom-media-networkState><code>networkState</code></dfn> attribute. On getting, it must return the current network state of @@ -13990,7 +14041,7 @@ </dl><p>The algorithm for the <code title=dom-media-load><a href=#dom-media-load>load()</a></code> method defined below describes exactly when the <code title=dom-media-networkState><a href=#dom-media-networkstate>networkState</a></code> attribute changes value and what events fire to indicate changes in this state.<p class=note>Some resources, e.g. streaming Web radio, can never - reach the <code title=dom-media-NETWORK_LOADED><a href=#dom-media-network_loaded>NETWORK_LOADED</a></code> state.<h5 id=loading-the-media-resource><span class=secno>4.8.10.4 </span>Loading the media resource</h5><p>All <a href=#media-element title="media element">media elements</a> have a + reach the <code title=dom-media-NETWORK_LOADED><a href=#dom-media-network_loaded>NETWORK_LOADED</a></code> state.<h5 id=loading-the-media-resource><span class=secno>4.8.10.5 </span>Loading the media resource</h5><p>All <a href=#media-element title="media element">media elements</a> have a <dfn id=begun-flag>begun flag</dfn>, which must begin in the false state, and an <dfn id=autoplaying-flag>autoplaying flag</dfn>, which must begin in the true state.<p>When the <dfn id=dom-media-load title=dom-media-load><code>load()</code></dfn> method on a <a href=#media-element>media element</a> is invoked, the user agent @@ -14074,6 +14125,10 @@ <li><p>Set the <code title=dom-media-networkState><a href=#dom-media-networkstate>networkState</a></code> to <code title=dom-media-NETWORK_LOADING><a href=#dom-media-network_loading>NETWORK_LOADING</a></code>.</li> + <li><p>Set the <a href=#begun-flag>begun flag</a> to true and <a href=#queue-a-task>queue a + task</a> to <a href=#fire-a-progress-event>fire a progress event</a> called <code title=event-loadstart><a href=#event-loadstart>loadstart</a></code> at the <a href=#media-element>media + element</a>.</li> + <li> <p>The method must return, but these steps must continue.</p> @@ -14087,10 +14142,6 @@ <!-- SYNCHRONOUS / ASYNCHRONOUS BOUNDARY FOR EVENT DISPATCH --> - <li><p>Set the <a href=#begun-flag>begun flag</a> to true and <a href=#queue-a-task>queue a - task</a> to <a href=#fire-a-progress-event>fire a progress event</a> called <code title=event-loadstart><a href=#event-loadstart>loadstart</a></code> at the <a href=#media-element>media - element</a>.</li> - <li> <p><i>Candidate loop</i>: For each item in <var title="">candidates</var>, if any, and in the same order as they @@ -14405,7 +14456,7 @@ available, the attribute must return 0.<p>User agents may discard previously buffered data.<p class=note>Thus, a time or byte position included within a range of the objects return by the <code title=dom-media-buffered><a href=#dom-media-buffered>buffered</a></code> or <code title=dom-media-bufferedBytes><a href=#dom-media-bufferedbytes>bufferedBytes</a></code> attributes at one time can end up being not included in the range(s) of objects - returned by the same attributes at a later time.<h5 id=offsets-into-the-media-resource><span class=secno>4.8.10.5 </span>Offsets into the media resource</h5><p>The <dfn id=dom-media-duration title=dom-media-duration><code>duration</code></dfn> + returned by the same attributes at a later time.<h5 id=offsets-into-the-media-resource><span class=secno>4.8.10.6 </span>Offsets into the media resource</h5><p>The <dfn id=dom-media-duration title=dom-media-duration><code>duration</code></dfn> attribute must return the length of the <a href=#media-resource>media resource</a>, in seconds. If no <a href=#media-data>media data</a> is available, then the attributes must return 0. If <a href=#media-data>media data</a> is available @@ -14436,7 +14487,7 @@ indicates that the <a href=#media-element>media element</a> is to seek back to the start of the <a href=#media-resource>media resource</a> upon reaching the end.<p>The <dfn id=dom-media-loop title=dom-media-loop><code>loop</code></dfn> DOM attribute must <a href=#reflect>reflect</a> the content attribute of the - same name.<h5 id=the-ready-states><span class=secno>4.8.10.6 </span>The ready states</h5><p><a href=#media-element title="media element">Media elements</a> have a + same name.<h5 id=the-ready-states><span class=secno>4.8.10.7 </span>The ready states</h5><p><a href=#media-element title="media element">Media elements</a> have a <i>ready state</i>, which describes to what degree they are ready to be rendered at the <a href=#current-playback-position>current playback position</a>. The possible values are as follows; the ready state of a media element @@ -14576,7 +14627,7 @@ automatically begin playback of the <a href=#media-resource>media resource</a> as soon as it can do so without stopping.<p>The <dfn id=dom-media-autoplay title=dom-media-autoplay><code>autoplay</code></dfn> DOM attribute must <a href=#reflect>reflect</a> the content attribute of the - same name.<h5 id=cue-ranges><span class=secno>4.8.10.7 </span>Cue ranges</h5><p><a href=#media-element title="media element">Media elements</a> have a set of + same name.<h5 id=cue-ranges><span class=secno>4.8.10.8 </span>Cue ranges</h5><p><a href=#media-element title="media element">Media elements</a> have a set of <dfn id=cue-range title="cue range">cue ranges</dfn>. Each cue range is made up of the following information:<dl><dt>A class name</dt> <dd>A group of related ranges can be given the same class name so @@ -14615,7 +14666,7 @@ than the start time and less than the end time, and false otherwise.<p>The <dfn id=dom-media-removecueranges title=dom-media-removeCueRanges><code>removeCueRanges(<var title="">className</var>)</code></dfn> method must, when called, remove all the <a href=#cue-range title="cue range">cue ranges</a> of the - <a href=#media-element>media element</a> which have the class name <var title="">className</var>.<h5 id=playing-the-media-resource><span class=secno>4.8.10.8 </span>Playing the media resource</h5><p>The <dfn id=dom-media-paused title=dom-media-paused><code>paused</code></dfn> + <a href=#media-element>media element</a> which have the class name <var title="">className</var>.<h5 id=playing-the-media-resource><span class=secno>4.8.10.9 </span>Playing the media resource</h5><p>The <dfn id=dom-media-paused title=dom-media-paused><code>paused</code></dfn> attribute represents whether the <a href=#media-element>media element</a> is paused or not. The attribute must initially be true.<p>A <a href=#media-element>media element</a> is said to be <dfn id=potentially-playing>potentially playing</dfn> when its <code title=dom-media-paused><a href=#dom-media-paused>paused</a></code> @@ -14746,7 +14797,7 @@ <li><p>If the fourth step above changed the value of <code title=dom-media-paused><a href=#dom-media-paused>paused</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> - called <code title=event-pause><a href=#event-pause>play</a></code> at the + called <code title=event-play><a href=#event-play>play</a></code> at the element.</li> </ol><hr><p>When the <dfn id=dom-media-pause title=dom-media-pause><code>pause()</code></dfn> @@ -14871,7 +14922,7 @@ agent must act as if the <code title=dom-media-pause><a href=#dom-media-pause>pause()</a></code> method had been invoked.<p class=note>If the <a href=#media-element>media element</a>'s <code>Document</code> stops being an active document, then the playback will <a href=#media-playback>stop</a> until the document - is active again.<h5 id=seeking><span class=secno>4.8.10.9 </span>Seeking</h5><p>The <dfn id=dom-media-seeking title=dom-media-seeking><code>seeking</code></dfn> + is active again.<h5 id=seeking><span class=secno>4.8.10.10 </span>Seeking</h5><p>The <dfn id=dom-media-seeking title=dom-media-seeking><code>seeking</code></dfn> attribute must initially have the value false.<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:<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 @@ -14950,7 +15001,7 @@ element</a> could play in a non-linear fashion. If this happens, the user agent must act as if the algorithm for <a href=#dom-media-seek title=dom-media-seek>seeking</a> was used whenever the <a href=#current-playback-position>current playback position</a> changes in a discontinuous - fashion (so that the relevant events fire).<h5 id=user-interface><span class=secno>4.8.10.10 </span>User interface</h5><p>The <dfn id=attr-media-controls title=attr-media-controls><code>controls</code></dfn> + fashion (so that the relevant events fire).<h5 id=user-interface><span class=secno>4.8.10.11 </span>User interface</h5><p>The <dfn id=attr-media-controls title=attr-media-controls><code>controls</code></dfn> attribute is a <a href=#boolean-attribute>boolean attribute</a>. If the attribute is present, or if the <a href=#media-element>media element</a> is <a href=#without-script>without script</a>, then the user agent should <dfn id=expose-a-user-interface-to-the-user>expose a user @@ -14999,7 +15050,7 @@ <code title=dom-media-volume><a href=#dom-media-volume>volume</a></code> attributes are changed, 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> called <code title=event-volumechange><a href=#event-volumechange>volumechange</a></code> at the <a href=#media-element>media - element</a>.<h5 id=time-ranges><span class=secno>4.8.10.11 </span>Time ranges</h5><p>Objects implementing the <code><a href=#timeranges>TimeRanges</a></code> interface + element</a>.<h5 id=time-ranges><span class=secno>4.8.10.12 </span>Time ranges</h5><p>Objects implementing the <code><a href=#timeranges>TimeRanges</a></code> interface represent a list of ranges (periods) of time.<pre class=idl>interface <dfn id=timeranges>TimeRanges</dfn> { readonly attribute unsigned long <a href=#dom-timeranges-length title=dom-TimeRanges-length>length</a>; float <a href=#dom-timeranges-start title=dom-TimeRanges-start>start</a>(in unsigned long index); @@ -15024,7 +15075,7 @@ </ul><p>In other words, the ranges in such an object are ordered, don't overlap, aren't empty, and don't touch (adjacent ranges are folded into one bigger range).<p>The timelines used by the objects returned by the <code title=dom-media-buffered><a href=#dom-media-buffered>buffered</a></code>, <code title=dom-media-seekable><a href=#dom-media-seekable>seekable</a></code> and <code title=dom-media-played><a href=#dom-media-played>played</a></code> DOM attributes of <a href=#media-element title="media element">media elements</a> must be the same as that - element's <a href=#media-resource>media resource</a>'s timeline.<h5 id=byte-ranges><span class=secno>4.8.10.12 </span>Byte ranges</h5><p>Objects implementing the <code><a href=#byteranges>ByteRanges</a></code> interface + element's <a href=#media-resource>media resource</a>'s timeline.<h5 id=byte-ranges><span class=secno>4.8.10.13 </span>Byte ranges</h5><p>Objects implementing the <code><a href=#byteranges>ByteRanges</a></code> interface represent a list of ranges of bytes.<pre class=idl>interface <dfn id=byteranges>ByteRanges</dfn> { readonly attribute unsigned long <a href=#dom-byteranges-length title=dom-ByteRanges-length>length</a>; unsigned long <a href=#dom-byteranges-start title=dom-ByteRanges-start>start</a>(in unsigned long index); @@ -15050,7 +15101,7 @@ </ul><p>In other words, the ranges in such an object are ordered, don't overlap, aren't empty, and don't touch (adjacent ranges are folded - into one bigger range).<h5 id=mediaevents><span class=secno>4.8.10.13 </span>Event summary</h5><p>The following events fire on <a href=#media-element title="media element">media + into one bigger range).<h5 id=mediaevents><span class=secno>4.8.10.14 </span>Event summary</h5><p>The following events fire on <a href=#media-element title="media element">media elements</a> as part of the processing model described above:<table><thead><tr><th>Event name <th>Interface <th>Dispatched when... @@ -15150,7 +15201,7 @@ <td><code>Event</code> <td>Either the <code title=dom-media-volume><a href=#dom-media-volume>volume</a></code> attribute or the <code title=dom-media-muted><a href=#dom-media-muted>muted</a></code> attribute has changed. Fired after the relevant attribute's setter has returned. <td> - </table><h5 id=security-and-privacy-considerations><span class=secno>4.8.10.14 </span>Security and privacy considerations</h5><p class=XXX>Talk about making sure interactive media files + </table><h5 id=security-and-privacy-considerations><span class=secno>4.8.10.15 </span>Security and privacy considerations</h5><p class=XXX>Talk about making sure interactive media files (e.g. SVG) don't have access to the container DOM (XSS potential); talk about not exposing any sensitive data like metadata from tracks in the media files (intranet snooping risk)<h4 id=the-canvas-element><span class=secno>4.8.11 </span>The <dfn id=canvas><code>canvas</code></dfn> element</h4><dl class=element><dt>Categories</dt> @@ -27421,18 +27472,18 @@ readonly attribute boolean <a href=#dom-navigator-online title=dom-navigator-onLine>onLine</a>; }; -[NoInterfaceObject] interface <dfn id=navigatorbrowsingcontextabilities>NavigatorBrowsingContextAbilities</dfn> { +[NoInterfaceObject] interface <dfn id=navigatorabilities>NavigatorAbilities</dfn> { // content handler registration void <a href=#dom-navigator-registerprotocolhandler title=dom-navigator-registerProtocolHandler>registerProtocolHandler</a>(in DOMString protocol, in DOMString url, in DOMString title); void <a href=#dom-navigator-registercontenthandler title=dom-navigator-registerContentHandler>registerContentHandler</a>(in DOMString mimeType, in DOMString url, in DOMString title); -<!-- XXX cookieEnabled geolocator javaEnabled mozIsLocallyAvailable plugins preference - readonly attribute <span>MimeTypeArray</span> <span title="dom-navigator-mimeTypes">mimeTypes</span>;--> - // abilities - short <a href=#dom-navigator-canplaytype title=dom-navigator-canPlayType>canPlayType</a>(in DOMString type); -};</pre><p>Objects implementing the <code><a href=#navigator>Navigator</a></code> interface must +<!-- XXX cookieEnabled geolocator javaEnabled mozIsLocallyAvailable preference + readonly attribute <span>MimeTypeArray</span> <span title="dom-navigator-mimeTypes">mimeTypes</span>; + readonly attribute <span>PluginArray</span> <span title="dom-navigator-plugins">plugins</span>; + (the latter is used in a <video> element demo now) +-->};</pre><p>Objects implementing the <code><a href=#navigator>Navigator</a></code> interface must also implement the <a href=#navigatorid>NavigatorID</a>, <a href=#navigatoronline>NavigatorOnLine</a>, and - <a href=#navigatorbrowsingcontextabilities>NavigatorBrowsingContextAbilities</a> interfaces. (These + <a href=#navigatorabilities>NavigatorAbilities</a> interfaces. (These interfaces are defined separately so that other specifications can re-use parts of the <code><a href=#navigator>Navigator</a></code> interface.)</p><!-- XXX also, see window.external.AddSearchProvider() and similar DOM APIs from IE --><!-- XXX also, could expose languages: <dt><dfn title="dom-navigator-browserLanguage"><code>browserLanguage</code></dfn></dt> <!- - Opera and IE only - -> @@ -27720,12 +27771,7 @@ sections, will redirect the user to "http://kittens.example.org/?show=x-meow%3AS2l0dGVucyBhcmUgdGhlIGN1dGVzdCE%253D".<p>The <code title=dom-navigator-registerContentHandler><a href=#dom-navigator-registercontenthandler>registerContentHandler()</a></code> method would work equivalently, but for unknown MIME types instead - of unknown protocols.<h4 id=client-abilities><span class=secno>5.6.3 </span>Client abilities</h4><p>The <dfn id=dom-navigator-canplaytype title=dom-navigator-canPlayType><code>canPlayType(<var title="">type</var>)</code></dfn> method must return 1 if <var title="">type</var> is a MIME type that the user agent is confident - represents a <a href=#media-resource>media resource</a> that it can render if used - in a <code><a href=#audio>audio</a></code> or <code><a href=#video>video</a></code> element, 0 if it - cannot determine whether it could do so, and −1 if it is - confident that it would not be able to render resources of that - type.<h3 id=offline><span class=secno>5.7 </span>Offline Web applications</h3><h4 id=introduction-0><span class=secno>5.7.1 </span>Introduction</h4><p><em>This section is non-normative.</em><p class=XXX>...<h4 id=appcache><span class=secno>5.7.2 </span>Application caches</h4><p>An <dfn id=application-cache>application cache</dfn> is a collection of resources. An + of unknown protocols.<h3 id=offline><span class=secno>5.7 </span>Offline Web applications</h3><h4 id=introduction-0><span class=secno>5.7.1 </span>Introduction</h4><p><em>This section is non-normative.</em><p class=XXX>...<h4 id=appcache><span class=secno>5.7.2 </span>Application caches</h4><p>An <dfn id=application-cache>application cache</dfn> is a collection of resources. An application cache is identified by the <a href=#absolute-url>absolute URL</a> of a resource manifest which is used to populate the cache.<p>Application caches are versioned, and there can be different instances of caches for the same manifest URL, each having a
Received on Saturday, 15 November 2008 19:29:04 UTC