Fix some typos, fix up some formatting.
authorGreg Billock <gbillock@google.com>
Wed, 14 Mar 2012 14:42:42 -0700
changeset 8 cc5077126e72
parent 7 568811374db1
child 9 0fedf0bb0b10
Fix some typos, fix up some formatting.
Change formatting for intent tag to use IDL syntax.
spec/Overview-respec.html
spec/Overview.html
--- a/spec/Overview-respec.html	Wed Mar 14 12:34:10 2012 -0700
+++ b/spec/Overview-respec.html	Wed Mar 14 14:42:42 2012 -0700
@@ -308,7 +308,12 @@
         <dd>The object used MUST be an object upon which the structured clone
         algorithm can be performed, including Transferables, or the constructor MUST
         throw an exception.</dd>
-        <dt>string getExtra(in DOMSTring key)</dt>
+        <dt>readonly attribute MessagePort[] ports</dt>
+        <dd><b>Only present when the Intent object is delivered to the Service
+          page.</b> Any ports used in the |transferList| of the constructor during invocation will be
+        delivered to the service page in the |ports| attribute. See
+        [[!http://dev.w3.org/html5/postmsg/]]</dd>
+        <dt>string getExtra(in DOMString key)</dt>
         <dd>Retrieves the value (if any) from the extra data dictionary this
         intent was constructed with.</dd>
 
@@ -463,7 +468,8 @@
     <h3>Registration Markup</h3>
     <p>
     Service pages declaratively mark themselves (or other on-domain pages)
-    as providing handling functionality for particular intent actions and types.
+    as providing handling functionality for particular intent actions and types
+    using the <code>&lt;intent&gt;</code> tag.
     A User Agent MUST NOT deliver an Intent to a web app service page which
     does not include markup describing what intents it can handle which matches
     the intent being delivered. The algorithm for matching intents is that the
@@ -473,53 +479,45 @@
     will be checked and must match exactly, except for MIME-formatted strings
     with MIME subtype wildcards. MIME parameters which are included in the
     intent and which are not specified do not impact delivery.
-    <pre>
-    &lt;!ENTITY % Disposition "{window|inline}"&gt;
-
-    &lt;!ELEMENT INTENT - O EMPTY               -- a Web Intents registration →
-    &lt;!ATTLIST INTENT
-    action      %URI;               #IMPLIED    -- URI specifying action --
-    type        %ContentTypes       #IMPLIED    -- advisory content type --
-    href        %URI;               #IMPLIED    -- URI for linked resource --
-    title       %i18n;              #IMPLIED    -- service title --
-    disposition %Disposition        "window"    -- where the service is created --
-    &gt;
-    </pre>
-    </p>
-    <p>
-    If the <code>action</code> attribute is missing, the intent Service is
-    assumed to handle display of the provided type(s) in that attribute.
     </p>
-    <p>
-    If the <code>type</code> attribute is missing, the intent Service is
-    assumed to be registered specifically for a <code>text/plain</code> type.
-    </p>
-    <p>
-    If the <code>href</code> attribute is missing, the intent Service is
-    assumed to be registering for the URL of the page on which the tag is found.
-    (That is, "this page.")
-    </p>
-    <p>
-    If the <code>title</code> attribute is missing, the User Agent SHOULD
-    utilize the title of the registered Service page to guide the user-visible
-    indicator of that Service during Selection.
-    </p>
-    <p>
-    The <code>disposition</code> attribute allows a service to choose which
-    context to be opened in. The User Agent MUST NOT allow the Client page any
-    ability to change the disposition. The <code>window</code> disposition means
-    that the service is opened in a new tab or window context. The
-    <code>inline</code> disposition means that the User Agent SHOULD open the
-    service in a context directly related to the client page context in an
-    overlappable way. The User Agent MUST NOT allow this UI surface to be
-    under the control of the client page.
-    </p>
+    <dl title='interface HTMLIntentElement : HTMLElement' class='idl'>
+      <dt>readonly attribute string action</dt>
+      <dd>An opaque string indicating the behavior class the service supports.
+      It is recommended that users use a fully qualified URI.
+      If the <code>action</code> attribute is missing, the intent Service is
+      assumed to handle display of the provided type(s) in the <code>type</code>
+      attributes.</dd>
+      <dt>readonly attribute string type</dt>
+      <dd>An opaque string specifying the type of payload data the service can
+      accept. Should be a comma-separated list of MIME type specifiers.
+      If the <code>type</code> attribute is missing, the intent Service is
+      assumed to be registered specifically for a <code>text/plain</code>
+      type.</dd>
+      <dt>readonly attribute string href</dt>
+      <dd>Should be a fully qualified URI. If the <code>href</code> attribute
+      is missing, the service URI will be set to the URI in which the tag is
+      found.</dd>
+      <dt>readonly attribute string title</dt>
+      <dd>A human-readable title which the User Agent SHOULD use to indicate the
+      service to the user. If the <code>title</code> attribute is missing, the User Agent SHOULD
+      utilize the title of the registered Service page as the service title.</dd>
+      <dt>readonly attribute string disposition</dt>
+      <dd>The <code>disposition</code> attribute allows a service to choose which
+      context to be opened in. The User Agent MUST NOT allow the Client page any
+      ability to change the disposition. The <code>window</code> disposition means
+      that the service is opened in a new tab or window context. The
+      <code>inline</code> disposition means that the User Agent SHOULD open the
+      service in a context directly related to the client page context in an
+      overlappable way. The User Agent MUST NOT allow this UI surface to be
+      under the control of the client page.</dd>
+    </dl>
     <p>
     <i>This section should not be construed as limiting the ability of the User
     Agent to manage registration of non-web services. That is, the User Agent
     may handle intent invocations locally, using extensions, or with
     third-party system services. This section solely governs how web-app service pages
-    register and unregister with the User Agent.</i>
+    register and unregister with the User Agent with the
+    <code>&lt;intent&gt;</code> tag.</i>
     </p>
     <h4>Same-origin registration</h4>
     <p>
--- a/spec/Overview.html	Wed Mar 14 12:34:10 2012 -0700
+++ b/spec/Overview.html	Wed Mar 14 14:42:42 2012 -0700
@@ -491,7 +491,7 @@
       pages to create, receive, and reply to Web Intents messages, and the
       procedures the User Agent carries out to facilitate that process.
       </p>
-    </div><div id="sotd" class="introductory section"><h2>Status of This Document</h2><p><em>This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current <acronym title="World Wide Web Consortium">W3C</acronym> publications and the latest revision of this technical report can be found in the <a href="http://www.w3.org/TR/"><acronym title="World Wide Web Consortium">W3C</acronym> technical reports index</a> at http://www.w3.org/TR/.</em></p><p>This document was published by the <a href="http://www.w3.org/2008/webapps/">Web Applications (WebApps) Working Group</a> as an Editor's Draft. If you wish to make comments regarding this document, please send them to <a href="mailto:public-web-intents@w3.org">public-web-intents@w3.org</a> (<a href="mailto:public-web-intents-request@w3.org?subject=subscribe">subscribe</a>, <a href="http://lists.w3.org/Archives/Public/public-web-intents/">archives</a>). All feedback is welcome.</p><p>Publication as an Editor's Draft does not imply endorsement by the <acronym title="World Wide Web Consortium">W3C</acronym> Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.</p><p>This document was produced by a group operating under the <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 <acronym title="World Wide Web Consortium">W3C</acronym> Patent Policy</a>. <acronym title="World Wide Web Consortium">W3C</acronym> maintains a <a href="TODO" rel="disclosure">public list of any patent disclosures</a> made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential Claim(s)</a> must disclose the information in accordance with <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section 6 of the <acronym title="World Wide Web Consortium">W3C</acronym> Patent Policy</a>.</p></div><div id="toc" class="section"><h2 class="introductory">Table of Contents</h2><ul class="toc"><li class="tocline"><a href="#introduction" class="tocxref"><span class="secno">1. </span>Introduction</a><ul class="toc"><li class="tocline"><a href="#example" class="tocxref"><span class="secno">1.1 </span>Example</a></li><li class="tocline"><a href="#normative-parts" class="tocxref"><span class="secno">1.2 </span>Normative parts</a></li></ul></li><li class="tocline"><a href="#terminology" class="tocxref"><span class="secno">2. </span>Terminology</a><ul class="toc"><li class="tocline"><a href="#actors" class="tocxref"><span class="secno">2.1 </span>Actors</a></li><li class="tocline"><a href="#life-cycle-of-intents" class="tocxref"><span class="secno">2.2 </span>Life cycle of Intents</a></li></ul></li><li class="tocline"><a href="#api-description" class="tocxref"><span class="secno">3. </span>API Description</a><ul class="toc"><li class="tocline"><a href="#intent-object" class="tocxref"><span class="secno">3.1 </span>Intent object</a><ul class="toc"><li class="tocline"><a href="#attributes" class="tocxref"><span class="secno">3.1.1 </span>Attributes</a></li><li class="tocline"><a href="#methods" class="tocxref"><span class="secno">3.1.2 </span>Methods</a></li></ul></li><li class="tocline"><a href="#invocation-api" class="tocxref"><span class="secno">3.2 </span>Invocation API</a><ul class="toc"><li class="tocline"><a href="#methods-1" class="tocxref"><span class="secno">3.2.1 </span>Methods</a></li></ul></li><li class="tocline"><a href="#delivery-and-response-api" class="tocxref"><span class="secno">3.3 </span>Delivery and Response API</a><ul class="toc"><li class="tocline"><a href="#attributes-1" class="tocxref"><span class="secno">3.3.1 </span>Attributes</a></li></ul></li><li class="tocline"><a href="#registration-markup" class="tocxref"><span class="secno">3.4 </span>Registration Markup</a></li></ul></li><li class="tocline"><a href="#user-agent-behavior" class="tocxref"><span class="secno">4. </span>User Agent Behavior</a></li><li class="tocline"><a href="#use-cases-and-requirements" class="tocxref"><span class="secno">5. </span>Use Cases and Requirements</a><ul class="toc"><li class="tocline"><a href="#sharing" class="tocxref"><span class="secno">5.1 </span>Sharing</a></li><li class="tocline"><a href="#integration-with-local-web-apps" class="tocxref"><span class="secno">5.2 </span>Integration with local web apps</a></li><li class="tocline"><a href="#persistent-connections" class="tocxref"><span class="secno">5.3 </span>Persistent connections</a></li><li class="tocline"><a href="#integration-with-external-applications" class="tocxref"><span class="secno">5.4 </span>Integration with external applications</a></li><li class="tocline"><a href="#translating-existing-web-platform-features-to-intents" class="tocxref"><span class="secno">5.5 </span>Translating existing web platform features to intents</a></li><li class="tocline"><a href="#authentication" class="tocxref"><span class="secno">5.6 </span>Authentication</a></li></ul></li><li class="tocline"><a href="#acknowledgements" class="tocxref"><span class="secno">A. </span>Acknowledgements</a></li><li class="tocline"><a href="#references" class="tocxref"><span class="secno">B. </span>References</a><ul class="toc"><li class="tocline"><a href="#normative-references" class="tocxref"><span class="secno">B.1 </span>Normative references</a></li><li class="tocline"><a href="#informative-references" class="tocxref"><span class="secno">B.2 </span>Informative references</a></li></ul></li></ul></div>
+    </div><div id="sotd" class="introductory section"><h2>Status of This Document</h2><p><em>This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current <acronym title="World Wide Web Consortium">W3C</acronym> publications and the latest revision of this technical report can be found in the <a href="http://www.w3.org/TR/"><acronym title="World Wide Web Consortium">W3C</acronym> technical reports index</a> at http://www.w3.org/TR/.</em></p><p>This document was published by the <a href="http://www.w3.org/2008/webapps/">Web Applications (WebApps) Working Group</a> as an Editor's Draft. If you wish to make comments regarding this document, please send them to <a href="mailto:public-web-intents@w3.org">public-web-intents@w3.org</a> (<a href="mailto:public-web-intents-request@w3.org?subject=subscribe">subscribe</a>, <a href="http://lists.w3.org/Archives/Public/public-web-intents/">archives</a>). All feedback is welcome.</p><p>Publication as an Editor's Draft does not imply endorsement by the <acronym title="World Wide Web Consortium">W3C</acronym> Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.</p><p>This document was produced by a group operating under the <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 <acronym title="World Wide Web Consortium">W3C</acronym> Patent Policy</a>. <acronym title="World Wide Web Consortium">W3C</acronym> maintains a <a href="TODO" rel="disclosure">public list of any patent disclosures</a> made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential Claim(s)</a> must disclose the information in accordance with <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section 6 of the <acronym title="World Wide Web Consortium">W3C</acronym> Patent Policy</a>.</p></div><div id="toc" class="section"><h2 class="introductory">Table of Contents</h2><ul class="toc"><li class="tocline"><a href="#introduction" class="tocxref"><span class="secno">1. </span>Introduction</a><ul class="toc"><li class="tocline"><a href="#example" class="tocxref"><span class="secno">1.1 </span>Example</a></li><li class="tocline"><a href="#normative-parts" class="tocxref"><span class="secno">1.2 </span>Normative parts</a></li></ul></li><li class="tocline"><a href="#terminology" class="tocxref"><span class="secno">2. </span>Terminology</a><ul class="toc"><li class="tocline"><a href="#actors" class="tocxref"><span class="secno">2.1 </span>Actors</a></li><li class="tocline"><a href="#life-cycle-of-intents" class="tocxref"><span class="secno">2.2 </span>Life cycle of Intents</a></li></ul></li><li class="tocline"><a href="#api-description" class="tocxref"><span class="secno">3. </span>API Description</a><ul class="toc"><li class="tocline"><a href="#intent-object" class="tocxref"><span class="secno">3.1 </span>Intent object</a><ul class="toc"><li class="tocline"><a href="#attributes" class="tocxref"><span class="secno">3.1.1 </span>Attributes</a></li><li class="tocline"><a href="#methods" class="tocxref"><span class="secno">3.1.2 </span>Methods</a></li></ul></li><li class="tocline"><a href="#invocation-api" class="tocxref"><span class="secno">3.2 </span>Invocation API</a><ul class="toc"><li class="tocline"><a href="#methods-1" class="tocxref"><span class="secno">3.2.1 </span>Methods</a></li></ul></li><li class="tocline"><a href="#delivery-and-response-api" class="tocxref"><span class="secno">3.3 </span>Delivery and Response API</a><ul class="toc"><li class="tocline"><a href="#attributes-1" class="tocxref"><span class="secno">3.3.1 </span>Attributes</a></li></ul></li><li class="tocline"><a href="#registration-markup" class="tocxref"><span class="secno">3.4 </span>Registration Markup</a><ul class="toc"><li class="tocline"><a href="#attributes-2" class="tocxref"><span class="secno">3.4.1 </span>Attributes</a></li></ul></li></ul></li><li class="tocline"><a href="#user-agent-behavior" class="tocxref"><span class="secno">4. </span>User Agent Behavior</a></li><li class="tocline"><a href="#use-cases-and-requirements" class="tocxref"><span class="secno">5. </span>Use Cases and Requirements</a><ul class="toc"><li class="tocline"><a href="#sharing" class="tocxref"><span class="secno">5.1 </span>Sharing</a></li><li class="tocline"><a href="#integration-with-local-web-apps" class="tocxref"><span class="secno">5.2 </span>Integration with local web apps</a></li><li class="tocline"><a href="#persistent-connections" class="tocxref"><span class="secno">5.3 </span>Persistent connections</a></li><li class="tocline"><a href="#integration-with-external-applications" class="tocxref"><span class="secno">5.4 </span>Integration with external applications</a></li><li class="tocline"><a href="#translating-existing-web-platform-features-to-intents" class="tocxref"><span class="secno">5.5 </span>Translating existing web platform features to intents</a></li><li class="tocline"><a href="#authentication" class="tocxref"><span class="secno">5.6 </span>Authentication</a></li></ul></li><li class="tocline"><a href="#acknowledgements" class="tocxref"><span class="secno">A. </span>Acknowledgements</a></li><li class="tocline"><a href="#references" class="tocxref"><span class="secno">B. </span>References</a><ul class="toc"><li class="tocline"><a href="#normative-references" class="tocxref"><span class="secno">B.1 </span>Normative references</a></li><li class="tocline"><a href="#informative-references" class="tocxref"><span class="secno">B.2 </span>Informative references</a></li></ul></li></ul></div>
     
     <div id="introduction" class="section">
       <!--OddPage--><h2><span class="secno">1. </span>Introduction</h2>
@@ -689,10 +689,11 @@
       <pre class="idl"><span class="idlInterface" id="idl-def-Intent">[<span class="extAttr">Constructor(in string action, in string type, in optional any
         data, in optional sequence&lt;Transferable&gt; transferList, in optional dictionary&lt;string&gt; extraData) raises DOMException</span>]
 interface <span class="idlInterfaceID">Intent</span> {
-<span class="idlAttribute">    readonly attribute <span class="idlAttrType"><a>DOMString</a></span> <span class="idlAttrName"><a href="#widl-Intent-action">action</a></span>;</span>
-<span class="idlAttribute">    readonly attribute <span class="idlAttrType"><a>DOMString</a></span> <span class="idlAttrName"><a href="#widl-Intent-type">type</a></span>;</span>
-<span class="idlAttribute">    readonly attribute <span class="idlAttrType"><a>any</a></span>       <span class="idlAttrName"><a href="#widl-Intent-data">data</a></span>;</span>
-<span class="idlMethod">    <span class="idlMethType"><a>string</a></span> <span class="idlMethName"><a href="#widl-Intent-getExtra-string-DOMSTring-key">getExtra</a></span> (<span class="idlParam"><span class="idlParamType"><a>DOMSTring</a></span> <span class="idlParamName">key</span></span>);</span>
+<span class="idlAttribute">    readonly attribute <span class="idlAttrType"><a>DOMString</a></span>     <span class="idlAttrName"><a href="#widl-Intent-action">action</a></span>;</span>
+<span class="idlAttribute">    readonly attribute <span class="idlAttrType"><a>DOMString</a></span>     <span class="idlAttrName"><a href="#widl-Intent-type">type</a></span>;</span>
+<span class="idlAttribute">    readonly attribute <span class="idlAttrType"><a>any</a></span>           <span class="idlAttrName"><a href="#widl-Intent-data">data</a></span>;</span>
+<span class="idlAttribute">    readonly attribute <span class="idlAttrType"><a>MessagePort</a>[]</span> <span class="idlAttrName"><a href="#widl-Intent-ports">ports</a></span>;</span>
+<span class="idlMethod">    <span class="idlMethType"><a>string</a></span> <span class="idlMethName"><a href="#widl-Intent-getExtra-string-DOMString-key">getExtra</a></span> (<span class="idlParam"><span class="idlParamType"><a>DOMString</a></span> <span class="idlParamName">key</span></span>);</span>
 <span class="idlMethod">    <span class="idlMethType"><a>void</a></span>   <span class="idlMethName"><a href="#widl-Intent-postResult-void-any-data--sequence-Transferable">postResult</a></span> (<span class="idlParam"><span class="idlParamType"><a>any</a></span> <span class="idlParamName">data</span></span>, <span class="idlParam">optional <span class="idlParamType"><a></a></span> <span class="idlParamName">sequence<transferable></transferable></span></span>);</span>
 <span class="idlMethod">    <span class="idlMethType"><a>void</a></span>   <span class="idlMethName"><a href="#widl-Intent-postFailure-void-any-data">postFailure</a></span> (<span class="idlParam"><span class="idlParamType"><a>any</a></span> <span class="idlParamName">data</span></span>);</span>
 };</span>
@@ -700,10 +701,13 @@
         URL namespace convention. The string <em class="rfc2119" title="must not">must not</em> be empty, or the
         constructor <em class="rfc2119" title="must">must</em> throw an exception.</dd><dt id="widl-Intent-data"><code>data</code> of type <span class="idlAttrType"><a>any</a></span>, readonly</dt><dd>The object used <em class="rfc2119" title="must">must</em> be an object upon which the structured clone
         algorithm can be performed, including Transferables, or the constructor <em class="rfc2119" title="must">must</em>
-        throw an exception.</dd><dt id="widl-Intent-type"><code>type</code> of type <span class="idlAttrType"><a>DOMString</a></span>, readonly</dt><dd>The data payload <em class="rfc2119" title="must">must</em> be described by the type parameter.
+        throw an exception.</dd><dt id="widl-Intent-ports"><code>ports</code> of type array of <span class="idlAttrType"><a>MessagePort</a></span>, readonly</dt><dd><b>Only present when the Intent object is delivered to the Service
+          page.</b> Any ports used in the |transferList| of the constructor during invocation will be
+        delivered to the service page in the |ports| attribute. See
+        [[!http://dev.w3.org/html5/postmsg/]]</dd><dt id="widl-Intent-type"><code>type</code> of type <span class="idlAttrType"><a>DOMString</a></span>, readonly</dt><dd>The data payload <em class="rfc2119" title="must">must</em> be described by the type parameter.
         Recommended type strings are MIME strings or self-documenting urls. The
-        string <em class="rfc2119" title="must not">must not</em> be empty, or the constructor <em class="rfc2119" title="must">must</em> throw an exception.</dd></dl></div><div id="methods" class="section"><h4><span class="secno">3.1.2 </span>Methods</h4><dl class="methods"><dt id="widl-Intent-getExtra-string-DOMSTring-key"><code>getExtra</code></dt><dd>Retrieves the value (if any) from the extra data dictionary this
-        intent was constructed with.<table class="parameters"><tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></tr><tr><td class="prmName">key</td><td class="prmType"><code><a>DOMSTring</a></code></td><td class="prmNullFalse">✘</td><td class="prmOptFalse">✘</td><td class="prmDesc"></td></tr></table><div><em>Return type: </em><code><a>string</a></code></div></dd><dt id="widl-Intent-postFailure-void-any-data"><code>postFailure</code></dt><dd><b>Only present when the Intent object is delivered to the Service
+        string <em class="rfc2119" title="must not">must not</em> be empty, or the constructor <em class="rfc2119" title="must">must</em> throw an exception.</dd></dl></div><div id="methods" class="section"><h4><span class="secno">3.1.2 </span>Methods</h4><dl class="methods"><dt id="widl-Intent-getExtra-string-DOMString-key"><code>getExtra</code></dt><dd>Retrieves the value (if any) from the extra data dictionary this
+        intent was constructed with.<table class="parameters"><tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></tr><tr><td class="prmName">key</td><td class="prmType"><code><a>DOMString</a></code></td><td class="prmNullFalse">✘</td><td class="prmOptFalse">✘</td><td class="prmDesc"></td></tr></table><div><em>Return type: </em><code><a>string</a></code></div></dd><dt id="widl-Intent-postFailure-void-any-data"><code>postFailure</code></dt><dd><b>Only present when the Intent object is delivered to the Service
           page.</b> The payload passed to this method will be returned to the onFailure
         callback registered by the client page in the startActivity call (if any).
         The playload must be an object upon which the structured clone algorithm
@@ -849,7 +853,8 @@
     <h3><span class="secno">3.4 </span>Registration Markup</h3>
     <p>
     Service pages declaratively mark themselves (or other on-domain pages)
-    as providing handling functionality for particular intent actions and types.
+    as providing handling functionality for particular intent actions and types
+    using the <code>&lt;intent&gt;</code> tag.
     A User Agent <em class="rfc2119" title="must not">must not</em> deliver an Intent to a web app service page which
     does not include markup describing what intents it can handle which matches
     the intent being delivered. The algorithm for matching intents is that the
@@ -859,52 +864,41 @@
     will be checked and must match exactly, except for MIME-formatted strings
     with MIME subtype wildcards. MIME parameters which are included in the
     intent and which are not specified do not impact delivery.
-    </p><pre>    &lt;!ENTITY % Disposition "{window|inline}"&gt;
-
-    &lt;!ELEMENT INTENT - O EMPTY               -- a Web Intents registration →
-    &lt;!ATTLIST INTENT
-    action      %URI;               #IMPLIED    -- URI specifying action --
-    type        %ContentTypes       #IMPLIED    -- advisory content type --
-    href        %URI;               #IMPLIED    -- URI for linked resource --
-    title       %i18n;              #IMPLIED    -- service title --
-    disposition %Disposition        "window"    -- where the service is created --
-    &gt;
-    </pre>
-    <p></p>
-    <p>
-    If the <code>action</code> attribute is missing, the intent Service is
-    assumed to handle display of the provided type(s) in that attribute.
-    </p>
-    <p>
-    If the <code>type</code> attribute is missing, the intent Service is
-    assumed to be registered specifically for a <code>text/plain</code> type.
     </p>
-    <p>
-    If the <code>href</code> attribute is missing, the intent Service is
-    assumed to be registering for the URL of the page on which the tag is found.
-    (That is, "this page.")
-    </p>
-    <p>
-    If the <code>title</code> attribute is missing, the User Agent <em class="rfc2119" title="should">should</em>
-    utilize the title of the registered Service page to guide the user-visible
-    indicator of that Service during Selection.
-    </p>
-    <p>
-    The <code>disposition</code> attribute allows a service to choose which
-    context to be opened in. The User Agent <em class="rfc2119" title="must not">must not</em> allow the Client page any
-    ability to change the disposition. The <code>window</code> disposition means
-    that the service is opened in a new tab or window context. The
-    <code>inline</code> disposition means that the User Agent <em class="rfc2119" title="should">should</em> open the
-    service in a context directly related to the client page context in an
-    overlappable way. The User Agent <em class="rfc2119" title="must not">must not</em> allow this UI surface to be
-    under the control of the client page.
-    </p>
+    <pre class="idl"><span class="idlInterface" id="idl-def-HTMLIntentElement">interface <span class="idlInterfaceID">HTMLIntentElement</span> : <span class="idlSuperclass"><a>HTMLElement</a></span> {
+<span class="idlAttribute">    readonly attribute <span class="idlAttrType"><a>string</a></span> <span class="idlAttrName"><a href="#widl-HTMLIntentElement-action">action</a></span>;</span>
+<span class="idlAttribute">    readonly attribute <span class="idlAttrType"><a>string</a></span> <span class="idlAttrName"><a href="#widl-HTMLIntentElement-type">type</a></span>;</span>
+<span class="idlAttribute">    readonly attribute <span class="idlAttrType"><a>string</a></span> <span class="idlAttrName"><a href="#widl-HTMLIntentElement-href">href</a></span>;</span>
+<span class="idlAttribute">    readonly attribute <span class="idlAttrType"><a>string</a></span> <span class="idlAttrName"><a href="#widl-HTMLIntentElement-title">title</a></span>;</span>
+<span class="idlAttribute">    readonly attribute <span class="idlAttrType"><a>string</a></span> <span class="idlAttrName"><a href="#widl-HTMLIntentElement-disposition">disposition</a></span>;</span>
+};</span>
+</pre><div id="attributes-2" class="section"><h4><span class="secno">3.4.1 </span>Attributes</h4><dl class="attributes"><dt id="widl-HTMLIntentElement-action"><code>action</code> of type <span class="idlAttrType"><a>string</a></span>, readonly</dt><dd>An opaque string indicating the behavior class the service supports.
+      It is recommended that users use a fully qualified URI.
+      If the <code>action</code> attribute is missing, the intent Service is
+      assumed to handle display of the provided type(s) in the <code>type</code>
+      attributes.</dd><dt id="widl-HTMLIntentElement-disposition"><code>disposition</code> of type <span class="idlAttrType"><a>string</a></span>, readonly</dt><dd>The <code>disposition</code> attribute allows a service to choose which
+      context to be opened in. The User Agent <em class="rfc2119" title="must not">must not</em> allow the Client page any
+      ability to change the disposition. The <code>window</code> disposition means
+      that the service is opened in a new tab or window context. The
+      <code>inline</code> disposition means that the User Agent <em class="rfc2119" title="should">should</em> open the
+      service in a context directly related to the client page context in an
+      overlappable way. The User Agent <em class="rfc2119" title="must not">must not</em> allow this UI surface to be
+      under the control of the client page.</dd><dt id="widl-HTMLIntentElement-href"><code>href</code> of type <span class="idlAttrType"><a>string</a></span>, readonly</dt><dd>Should be a fully qualified URI. If the <code>href</code> attribute
+      is missing, the service URI will be set to the URI in which the tag is
+      found.</dd><dt id="widl-HTMLIntentElement-title"><code>title</code> of type <span class="idlAttrType"><a>string</a></span>, readonly</dt><dd>A human-readable title which the User Agent <em class="rfc2119" title="should">should</em> use to indicate the
+      service to the user. If the <code>title</code> attribute is missing, the User Agent <em class="rfc2119" title="should">should</em>
+      utilize the title of the registered Service page as the service title.</dd><dt id="widl-HTMLIntentElement-type"><code>type</code> of type <span class="idlAttrType"><a>string</a></span>, readonly</dt><dd>An opaque string specifying the type of payload data the service can
+      accept. Should be a comma-separated list of MIME type specifiers.
+      If the <code>type</code> attribute is missing, the intent Service is
+      assumed to be registered specifically for a <code>text/plain</code>
+      type.</dd></dl></div>
     <p>
     <i>This section should not be construed as limiting the ability of the User
     Agent to manage registration of non-web services. That is, the User Agent
     may handle intent invocations locally, using extensions, or with
     third-party system services. This section solely governs how web-app service pages
-    register and unregister with the User Agent.</i>
+    register and unregister with the User Agent with the
+    <code>&lt;intent&gt;</code> tag.</i>
     </p>
     <h4 id="same-origin-registration">Same-origin registration</h4>
     <p>