--- a/spec/Overview.html Tue Sep 11 13:28:16 2012 -0700
+++ b/spec/Overview.html Mon May 20 14:47:44 2013 -0700
@@ -51,12 +51,6 @@
color: #ff4500;
}
-
-/* --- --- */
-ol.algorithm { counter-reset:numsection; list-style-type: none; }
-ol.algorithm li { margin: 0.5em 0; }
-ol.algorithm li:before { font-weight: bold; counter-increment: numsection; content: counters(numsection, ".") ") "; }
-
/* --- TOC --- */
.toc a, .tof a {
text-decoration: none;
@@ -192,6 +186,11 @@
font-weight: bold;
color: #005a9c;
}
+a.idlEnumItem {
+ color: #000;
+ border-bottom: 1px dotted #ccc;
+ text-decoration: none;
+}
.idlSuperclass {
font-style: italic;
@@ -224,11 +223,21 @@
text-decoration: none;
}
+/*.idlCtor*/
+.idlCtorName {
+ color: #ff4500;
+}
+.idlCtorName a {
+ color: #ff4500;
+ border-bottom: 1px dotted #ff4500;
+ text-decoration: none;
+}
+
/*.idlParam*/
.idlParamType {
color: #005a9c;
}
-.idlParamName {
+.idlParamName, .idlDefaultValue {
font-style: italic;
}
@@ -236,6 +245,11 @@
color: #666;
}
+/*.idlSectionComment*/
+.idlSectionComment {
+ color: gray;
+}
+
/*.idlConst*/
.idlConstType {
color: #005a9c;
@@ -283,15 +297,15 @@
font-weight: bold;
}
-dl.attributes, dl.methods, dl.constants, dl.fields, dl.dictionary-members {
+dl.attributes, dl.methods, dl.constants, dl.constructors, dl.fields, dl.dictionary-members {
margin-left: 2em;
}
-.attributes dt, .methods dt, .constants dt, .fields dt, .dictionary-members dt {
+.attributes dt, .methods dt, .constants dt, .constructors dt, .fields dt, .dictionary-members dt {
font-weight: normal;
}
-.attributes dt code, .methods dt code, .constants dt code, .fields dt code, .dictionary-members dt code {
+.attributes dt code, .methods dt code, .constants dt code, .constructors dt code, .fields dt code, .dictionary-members dt code {
font-weight: bold;
color: #000;
font-family: monospace;
@@ -317,7 +331,11 @@
background: #ddffd2;
}
-.attributes dd, .methods dd, .constants dd, .fields dd, .dictionary-members dd {
+.constructors dt code {
+ background: #cfc;
+}
+
+.attributes dd, .methods dd, .constants dd, .constructors dd, .fields dd, .dictionary-members dd {
margin-bottom: 1em;
}
@@ -364,20 +382,20 @@
border-collapse: collapse;
width: 100%;
}
-</style><link rel="stylesheet" href="http://www.w3.org/StyleSheets/TR/W3C-ED"><!--[if lt IE 9]><script src='undefined://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--></head>
- <body><div class="head">
+</style><link rel="stylesheet" href="http://www.w3.org/StyleSheets/TR/W3C-ED"><!--[if lt IE 9]><script src='http://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--></head>
+ <body class="h-entry"><div class="head">
<p>
<a href="http://www.w3.org/"><img width="72" height="48" src="http://www.w3.org/Icons/w3c_home" alt="W3C"></a>
</p>
- <h1 class="title" id="title">Web Intents</h1>
+ <h1 class="title p-name" id="title">Web Intents</h1>
- <h2 id="w3c-editor-s-draft-11-september-2012"><abbr title="World Wide Web Consortium">W3C</abbr> Editor's Draft 11 September 2012</h2>
+ <h2 id="w3c-editor-s-draft-23-may-2013"><abbr title="World Wide Web Consortium">W3C</abbr> Editor's Draft <time class="dt-published" datetime="2013-05-23">23 May 2013</time></h2>
<dl>
<dt>This version:</dt>
- <dd><a href="https://dvcs.w3.org/hg/web-intents/raw-file/tip/spec/Overview-respec.html">https://dvcs.w3.org/hg/web-intents/raw-file/tip/spec/Overview-respec.html</a></dd>
+ <dd><a class="u-url" href="https://dvcs.w3.org/hg/web-intents/raw-file/tip/spec/Overview-respec.html">https://dvcs.w3.org/hg/web-intents/raw-file/tip/spec/Overview-respec.html</a></dd>
<dt>Latest published version:</dt>
<dd><a href="http://www.w3.org/TR/web-intents/">http://www.w3.org/TR/web-intents/</a></dd>
@@ -393,11 +411,12 @@
<dt>Editors:</dt>
- <dd><span>Greg Billock</span>, <a href="http://google.com/">Google</a></dd>
-<dd><span>James Hawkins</span>, <a href="http://google.com/">Google</a></dd>
-<dd><span>Paul Kinlan</span>, <a href="http://google.com/">Google</a></dd>
+ <dd class="p-author h-card vcard"><span class="p-name fn">Greg Billock</span>, <a class="p-org org h-org h-card" href="http://google.com/">Google</a></dd>
+<dd class="p-author h-card vcard"><span class="p-name fn">James Hawkins</span>, <a class="p-org org h-org h-card" href="http://google.com/">Google</a></dd>
+<dd class="p-author h-card vcard"><span class="p-name fn">Paul Kinlan</span>, <a class="p-org org h-org h-card" href="http://google.com/">Google</a></dd>
+
</dl>
@@ -406,12 +425,12 @@
<p class="copyright">
<a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> ©
- 2011-2012
+ 2011-2013
<a href="http://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a><sup>®</sup>
(<a href="http://www.csail.mit.edu/"><abbr title="Massachusetts Institute of Technology">MIT</abbr></a>,
<a href="http://www.ercim.eu/"><abbr title="European Research Consortium for Informatics and Mathematics">ERCIM</abbr></a>,
- <a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved.
+ <a href="http://www.keio.ac.jp/">Keio</a>, <a href="http://ev.buaa.edu.cn/">Beihang</a>), All Rights Reserved.
<abbr title="World Wide Web Consortium">W3C</abbr> <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
<a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a> and
<a href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> rules apply.
@@ -420,6 +439,15 @@
<hr>
</div>
+ <section id="note">
+ <p style="background: black; color: white; font: 900 1.2em serif; padding: 0.5em 1em; border: dotted yellow 0.3em;">
+ This document was produced by the Web Intents Task Force, a joint activity of the Device APIs Working Group and the
+ Web Applications Working Group. Members of these working groups have agreed not to progress the Web Intents specification
+ further as a Recommendation track document, electing to publish it as an informative Working Group Note.
+ The Working Groups have not performed interop testing on the material in this document. Implementers are cautioned
+ that this material is subject to change and that an alternative design may be pursued in the future.
+ </p>
+ </section>
<section id="abstract" class="introductory"><h2>Abstract</h2>
<p>
This specification defines a service discovery and light-weight RPC
@@ -450,16 +478,19 @@
<p>
This document was published by the <a href="http://www.w3.org/2009/dap/">Device Applications (DAP) Working Group</a> and <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>
+
+
+ All comments are welcome.
- <p>
+
+ </p><p>
Publication as an Editor's Draft does not imply endorsement by the <abbr title="World Wide Web Consortium">W3C</abbr> 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.
@@ -488,7 +519,7 @@
-</section><section id="toc"><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-and-services" class="tocxref"><span class="secno">2.2 </span>Life cycle of Intents and Services</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-parameters-dictionary" class="tocxref"><span class="secno">3.1 </span>Intent parameters dictionary</a><ul class="toc"><li class="tocline"><a href="#dictionary-intentparameters-members" class="tocxref"><span class="secno">3.1.1 </span>Dictionary <span class="formerLink"><code>IntentParameters</code></span> Members</a></li></ul></li><li class="tocline"><a href="#intent-object" class="tocxref"><span class="secno">3.2 </span>Intent object</a><ul class="toc"><li class="tocline"><a href="#attributes" class="tocxref"><span class="secno">3.2.1 </span>Attributes</a></li></ul></li><li class="tocline"><a href="#invocation-api" class="tocxref"><span class="secno">3.3 </span>Invocation API</a><ul class="toc"><li class="tocline"><a href="#methods" class="tocxref"><span class="secno">3.3.1 </span>Methods</a></li></ul></li><li class="tocline"><a href="#delivery-and-response-api" class="tocxref"><span class="secno">3.4 </span>Delivery and Response API</a><ul class="toc"><li class="tocline"><a href="#attributes-1" class="tocxref"><span class="secno">3.4.1 </span>Attributes</a></li></ul></li><li class="tocline"><a href="#registration-markup" class="tocxref"><span class="secno">3.5 </span>Registration Markup</a><ul class="toc"><li class="tocline"><a href="#attributes-2" class="tocxref"><span class="secno">3.5.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><ul class="toc"><li class="tocline"><a href="#service-registration" class="tocxref"><span class="secno">4.1 </span>Service Registration</a></li><li class="tocline"><a href="#invocation-and-dispatch" class="tocxref"><span class="secno">4.2 </span>Invocation and Dispatch</a></li><li class="tocline"><a href="#explicit-intents" class="tocxref"><span class="secno">4.3 </span>Explicit Intents</a></li><li class="tocline"><a href="#matching-action-and-type-for-delivery" class="tocxref"><span class="secno">4.4 </span>Matching action and type for delivery</a></li><li class="tocline"><a href="#handling-service-suggestions-from-intent-invocation" class="tocxref"><span class="secno">4.5 </span>Handling Service suggestions from Intent Invocation</a></li></ul></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="#privacy-considerations" class="tocxref"><span class="secno">6. </span>Privacy Considerations</a></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></section>
+</section><section id="toc"><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-and-services" class="tocxref"><span class="secno">2.2 </span>Life cycle of Intents and Services</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-parameters-dictionary" class="tocxref"><span class="secno">3.1 </span>Intent parameters dictionary</a><ul class="toc"><li class="tocline"><a href="#dictionary-intentparameters-members" class="tocxref"><span class="secno">3.1.1 </span>Dictionary <span class="formerLink"><code>IntentParameters</code></span> Members</a></li></ul></li><li class="tocline"><a href="#intent-object" class="tocxref"><span class="secno">3.2 </span>Intent object</a><ul class="toc"><li class="tocline"><a href="#attributes" class="tocxref"><span class="secno">3.2.1 </span>Attributes</a></li><li class="tocline"><a href="#methods" class="tocxref"><span class="secno">3.2.2 </span>Methods</a></li></ul></li><li class="tocline"><a href="#invocation-api" class="tocxref"><span class="secno">3.3 </span>Invocation API</a><ul class="toc"><li class="tocline"><a href="#methods-1" class="tocxref"><span class="secno">3.3.1 </span>Methods</a></li></ul></li><li class="tocline"><a href="#delivery-and-response-api" class="tocxref"><span class="secno">3.4 </span>Delivery and Response API</a><ul class="toc"><li class="tocline"><a href="#attributes-1" class="tocxref"><span class="secno">3.4.1 </span>Attributes</a></li></ul></li><li class="tocline"><a href="#registration-markup" class="tocxref"><span class="secno">3.5 </span>Registration Markup</a><ul class="toc"><li class="tocline"><a href="#attributes-2" class="tocxref"><span class="secno">3.5.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><ul class="toc"><li class="tocline"><a href="#service-registration" class="tocxref"><span class="secno">4.1 </span>Service Registration</a></li><li class="tocline"><a href="#invocation-and-dispatch" class="tocxref"><span class="secno">4.2 </span>Invocation and Dispatch</a></li><li class="tocline"><a href="#explicit-intents" class="tocxref"><span class="secno">4.3 </span>Explicit Intents</a></li><li class="tocline"><a href="#matching-action-and-type-for-delivery" class="tocxref"><span class="secno">4.4 </span>Matching action and type for delivery</a></li><li class="tocline"><a href="#handling-service-suggestions-from-intent-invocation" class="tocxref"><span class="secno">4.5 </span>Handling Service suggestions from Intent Invocation</a></li></ul></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="#privacy-considerations" class="tocxref"><span class="secno">6. </span>Privacy Considerations</a></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></section>
<section id="introduction">
<!--OddPage--><h2><span class="secno">1. </span>Introduction</h2>
@@ -698,13 +729,13 @@
<span class="idlMember"> <span class="idlMemberType"><a>URL</a>?</span> <span class="idlMemberName"><a href="#widl-IntentParameters-service">service</a></span>;</span>
<span class="idlMember"> <span class="idlMemberType">sequence<<a>URL</a>>?</span> <span class="idlMemberName"><a href="#widl-IntentParameters-suggestions">suggestions</a></span>;</span>
};</span></pre><section id="dictionary-intentparameters-members"><h4><span class="secno">3.1.1 </span>Dictionary <a class="idlType" href="#idl-def-IntentParameters"><code>IntentParameters</code></a> Members</h4><dl class="dictionary-members"><dt id="widl-IntentParameters-action"><code>action</code> of type <span class="idlMemberType"><a>DOMString</a></span></dt><dd>An opaque string indicating the action type of the intent. The
- string <em class="rfc2119" title="must not">must not</em> be empty.</dd><dt id="widl-IntentParameters-data"><code>data</code> of type <span class="idlMemberType"><a>any</a></span>, nullable</dt><dd>The data payload used <em class="rfc2119" title="must">must</em> be an object upon which the structured
+ string <em class="rfc2119" title="MUST NOT">MUST NOT</em> be empty.</dd><dt id="widl-IntentParameters-data"><code>data</code> of type <span class="idlMemberType"><a>any</a></span>, nullable</dt><dd>The data payload used <em class="rfc2119" title="MUST">MUST</em> be an object upon which the structured
clone algorithm can be performed, including Transferables.</dd><dt id="widl-IntentParameters-service"><code>service</code> of type <span class="idlMemberType"><a>URL</a></span>, nullable</dt><dd>When present, this field marks the intent as an explicit intent. The
- value <em class="rfc2119" title="must">must</em> be an absolute URL.</dd><dt id="widl-IntentParameters-suggestions"><code>suggestions</code> of type <span class="idlMemberType">sequence<<a>URL</a>></span>, nullable</dt><dd>When present, this field provides a list of suggested Service URLs,
+ value <em class="rfc2119" title="MUST">MUST</em> be an absolute URL.</dd><dt id="widl-IntentParameters-suggestions"><code>suggestions</code> of type <span class="idlMemberType">sequence<<a>URL</a>></span>, nullable</dt><dd>When present, this field provides a list of suggested Service URLs,
each of which is an absolute URL that the Client is aware of and which
can handle the intent.</dd><dt id="widl-IntentParameters-transfer"><code>transfer</code> of type <span class="idlMemberType">sequence<<a>Transferable</a>></span>, nullable</dt><dd>The list of Transferables, for use in the structured clone
algorithm.</dd><dt id="widl-IntentParameters-type"><code>type</code> of type <span class="idlMemberType"><a>DOMString</a></span></dt><dd>A string indicating the type of the data payload. The data payload
- <em class="rfc2119" title="must">must</em> be described by this parameter, which <em class="rfc2119" title="must not">must not</em> be empty.</dd></dl></section>
+ <em class="rfc2119" title="MUST">MUST</em> be described by this parameter, which <em class="rfc2119" title="MUST NOT">MUST NOT</em> be empty.</dd></dl></section>
</section>
<section id="intent-object">
<h3><span class="secno">3.2 </span>Intent object</h3>
@@ -716,31 +747,41 @@
<pre class="idl"><span class="idlInterface" id="idl-def-Intent">[<span class="extAttr">Constructor(IntentParameters params),<br> Constructor(DOMString action, DOMString type, optional any data, optional sequence<Transferable> transferList)</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="idlAttribute"> readonly attribute <span class="idlAttrType"><a>MessagePort</a>[]</span> <span class="idlAttrName"><a href="#widl-Intent-ports">ports</a></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>void</a></span> <span class="idlMethName"><a href="#widl-Intent-postResult-void-any-data-sequence-Transferable--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">sequence<<a>Transferable</a>></span> <span class="idlParamName">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></pre><section id="attributes"><h4><span class="secno">3.2.1 </span>Attributes</h4><dl class="attributes"><dt id="widl-Intent-action"><code>action</code> of type <span class="idlAttrType"><a>DOMString</a></span>, readonly</dt><dd>This is an opaque string. Chosen strings <em class="rfc2119" title="should">should</em> be namespaced by a
- 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-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
+};</span></pre><section id="attributes"><h4><span class="secno">3.2.1 </span>Attributes</h4><dl class="attributes"><dt id="widl-Intent-action"><code>action</code> of type <span class="idlAttrType"><a>DOMString</a></span>, readonly </dt><dd>This is an opaque string. Chosen strings <em class="rfc2119" title="SHOULD">SHOULD</em> be namespaced by a
+ 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-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 <code>transferList</code> of the constructor during invocation will be
delivered to the service page in the <code>ports</code> attribute. See
- [<cite><a class="bibref" href="#bib-POSTMSG">POSTMSG</a></cite>]</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.
+ [<cite><a class="bibref" href="#bib-POSTMSG">POSTMSG</a></cite>]</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></section>
+ 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></section><section id="methods"><h4><span class="secno">3.2.2 </span>Methods</h4><dl class="methods"><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
+ can be performed, including Transferables. [<cite><a class="bibref" href="#bib-HTML5">HTML5</a></cite>]<table class="parameters"><tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></tr><tr><td class="prmName">data</td><td class="prmType"><code><a>any</a></code></td><td class="prmNullFalse">✘</td><td class="prmOptFalse">✘</td><td class="prmDesc"></td></tr></table><div><em>Return type: </em><code><a>void</a></code></div></dd><dt id="widl-Intent-postResult-void-any-data-sequence-Transferable--transferable"><code>postResult</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 onSuccess
+ callback registered by the client page in the startActivity call (if any).
+ The payload must be an object upon which the structured clone algorithm can be
+ performed. The Transferables array, if present, will specify
+ transferable elements in the <code>data</code> payload argument, as per
+ [<cite><a class="bibref" href="#bib-HTML5">HTML5</a></cite>] [<cite><a class="bibref" href="#bib-POSTMSG">POSTMSG</a></cite>]<table class="parameters"><tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></tr><tr><td class="prmName">data</td><td class="prmType"><code><a>any</a></code></td><td class="prmNullFalse">✘</td><td class="prmOptFalse">✘</td><td class="prmDesc"></td></tr><tr><td class="prmName">transferable</td><td class="prmType"><code>sequence<<a>Transferable</a>></code></td><td class="prmNullFalse">✘</td><td class="prmOptTrue">✔</td><td class="prmDesc"></td></tr></table><div><em>Return type: </em><code><a>void</a></code></div></dd></dl></section>
<p>
Notes on the intent object: The transferList parameter is not available
post-creation. It becomes an internal implementation detail directing the
User Agent to interpret some fields of the <code>data</code> argument as Transferable. The
- <code>data</code> and <code>transferList</code> arguments <em class="rfc2119" title="must">must</em> be implemented following the <abbr title="World Wide Web Consortium">W3C</abbr>
+ <code>data</code> and <code>transferList</code> arguments <em class="rfc2119" title="MUST">MUST</em> be implemented following the <abbr title="World Wide Web Consortium">W3C</abbr>
Web Messaging spec [<cite><a class="bibref" href="#bib-POSTMSG">POSTMSG</a></cite>].
</p>
<p>
- The User Agent <em class="rfc2119" title="must">must</em> perform the structured clone algorithm on creation
+ The User Agent <em class="rfc2119" title="MUST">MUST</em> perform the structured clone algorithm on creation
of the Intent object.
</p>
</section>
@@ -757,8 +798,8 @@
</p>
<pre class="idl"><span class="idlInterface" id="idl-def-Intents">[<span class="extAttr">NoInterfaceObject</span>]
interface <span class="idlInterfaceID">Intents</span> {
-<span class="idlMethod"> <span class="idlMethType"><a>void</a></span> <span class="idlMethName"><a href="#widl-Intents-startActivity-void-Intent-intent-IntentSuccessCallback-onSuccess-optional-IntentFailureCallback-onFailure">startActivity</a></span> (<span class="idlParam"><span class="idlParamType"><a href="#idl-def-Intent" class="idlType"><code>Intent</code></a></span> <span class="idlParamName">intent</span></span>, <span class="idlParam">optional <span class="idlParamType"><a href="#idl-def-IntentSuccessCallback" class="idlType"><code>IntentSuccessCallback</code></a></span> <span class="idlParamName">onSuccess</span></span>, <span class="idlParam">optional <span class="idlParamType"><a>optional IntentFailureCallback</a></span> <span class="idlParamName">onFailure</span></span>);</span>
-};</span></pre><section id="methods"><h4><span class="secno">3.3.1 </span>Methods</h4><dl class="methods"><dt id="widl-Intents-startActivity-void-Intent-intent-IntentSuccessCallback-onSuccess-optional-IntentFailureCallback-onFailure"><code>startActivity</code></dt><dd>Called to invoke an intent Service. The Intent object is described
+<span class="idlMethod"> <span class="idlMethType"><a>void</a></span> <span class="idlMethName"><a href="#widl-Intents-startActivity-void-Intent-intent-IntentSuccessCallback-onSuccess-IntentFailureCallback-onFailure">startActivity</a></span> (<span class="idlParam"><span class="idlParamType"><a href="#idl-def-Intent" class="idlType"><code>Intent</code></a></span> <span class="idlParamName">intent</span></span>, <span class="idlParam">optional <span class="idlParamType"><a href="#idl-def-IntentSuccessCallback" class="idlType"><code>IntentSuccessCallback</code></a></span> <span class="idlParamName">onSuccess</span></span>, <span class="idlParam">optional <span class="idlParamType"><a href="#idl-def-IntentFailureCallback" class="idlType"><code>IntentFailureCallback</code></a></span> <span class="idlParamName">onFailure</span></span>);</span>
+};</span></pre><section id="methods-1"><h4><span class="secno">3.3.1 </span>Methods</h4><dl class="methods"><dt id="widl-Intents-startActivity-void-Intent-intent-IntentSuccessCallback-onSuccess-IntentFailureCallback-onFailure"><code>startActivity</code></dt><dd>Called to invoke an intent Service. The Intent object is described
above. The onSuccess handler, if any, will be called by the user agent if
the service is dispatched, processes the intent, and calls postResult on
the Intent object it receives. The handler will be invoked with one
@@ -768,18 +809,18 @@
process, or if a service was chosen, received the intent, processes the intent,
and calls postFailure on the Intent object it receives. The handler will be invoked with one
parameter: the data received from the service.
- User Agents <em class="rfc2119" title="should">should</em> restrict this method to only be successfully callable within the
+ User Agents <em class="rfc2119" title="SHOULD">SHOULD</em> restrict this method to only be successfully callable within the
context of an explicit user gesture.
- An exception <em class="rfc2119" title="should">should</em> be thrown if the Intent is invalid (i.e. <code>null</code>), or if
+ An exception <em class="rfc2119" title="SHOULD">SHOULD</em> be thrown if the Intent is invalid (i.e. <code>null</code>), or if
the method is invoked without being the result of an explicit user gesture.
- <table class="parameters"><tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></tr><tr><td class="prmName">intent</td><td class="prmType"><code><a href="#idl-def-Intent" class="idlType"><code>Intent</code></a></code></td><td class="prmNullFalse">✘</td><td class="prmOptFalse">✘</td><td class="prmDesc"></td></tr><tr><td class="prmName">onSuccess</td><td class="prmType"><code><a href="#idl-def-IntentSuccessCallback" class="idlType"><code>IntentSuccessCallback</code></a></code></td><td class="prmNullFalse">✘</td><td class="prmOptTrue">✔</td><td class="prmDesc"></td></tr><tr><td class="prmName">onFailure</td><td class="prmType"><code><a>optional IntentFailureCallback</a></code></td><td class="prmNullFalse">✘</td><td class="prmOptTrue">✔</td><td class="prmDesc"></td></tr></table><div><em>Return type: </em><code><a>void</a></code></div></dd></dl></section>
+ <table class="parameters"><tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></tr><tr><td class="prmName">intent</td><td class="prmType"><code><a href="#idl-def-Intent" class="idlType"><code>Intent</code></a></code></td><td class="prmNullFalse">✘</td><td class="prmOptFalse">✘</td><td class="prmDesc"></td></tr><tr><td class="prmName">onSuccess</td><td class="prmType"><code><a href="#idl-def-IntentSuccessCallback" class="idlType"><code>IntentSuccessCallback</code></a></code></td><td class="prmNullFalse">✘</td><td class="prmOptTrue">✔</td><td class="prmDesc"></td></tr><tr><td class="prmName">onFailure</td><td class="prmType"><code><a href="#idl-def-IntentFailureCallback" class="idlType"><code>IntentFailureCallback</code></a></code></td><td class="prmNullFalse">✘</td><td class="prmOptTrue">✔</td><td class="prmDesc"></td></tr></table><div><em>Return type: </em><code><a>void</a></code></div></dd></dl></section>
<p>
The invocation API is implemented by the <code>window.navigator</code> object.
</p>
<pre class="idl"><span class="idlImplements"><a>Navigator</a> implements <a href="#idl-def-Intents" class="idlType"><code>Intents</code></a>;</span></pre><div class="idlImplementsDesc"><p>All instances of the <code><a>Navigator</a></code> type are defined to also implement the <a href="#idl-def-Intents" class="idlType"><code>Intents</code></a> interface.</p></div>
<section>
- <p>The callbacks passed to startActivity <em class="rfc2119" title="must">must</em> provide these signatures:</p>
+ <p>The callbacks passed to startActivity <em class="rfc2119" title="MUST">MUST</em> provide these signatures:</p>
<pre class="idl"><span class="idlCallback" id="idl-def-IntentSuccessCallback">callback <span class="idlCallbackID">IntentSuccessCallback</span> = <span class="idlCallbackType"><a>void</a></span> (<span class="idlParam">optional <span class="idlParamType"><a>any</a></span> <span class="idlParamName">data</span></span>, <span class="idlParam">optional <span class="idlParamType"><a>MessagePort</a>[]</span> <span class="idlParamName">ports</span></span>);</span></pre><section><h5 id="callback-intentsuccesscallback-parameters">Callback <a class="idlType" href="#idl-def-IntentSuccessCallback"><code>IntentSuccessCallback</code></a> Parameters</h5><dl class="callback-members"><dt id="widl-IntentSuccessCallback-data"><code>data</code> of type <span class="idlMemberType"><a>any</a></span></dt><dd>
The <code>data</code> passed will be the payload data from the structured
@@ -805,24 +846,24 @@
<pre class="idl"><span class="idlInterface" id="idl-def-IntentProvider">[<span class="extAttr">NoInterfaceObject</span>]
interface <span class="idlInterfaceID">IntentProvider</span> {
-<span class="idlAttribute"> readonly attribute <span class="idlAttrType"><a href="#idl-def-Intent" class="idlType"><code>Intent</code></a></span> <span class="idlAttrName"><a href="#widl-IntentProvider-intent">intent</a></span>;</span>
-};</span></pre><section id="attributes-1"><h4><span class="secno">3.4.1 </span>Attributes</h4><dl class="attributes"><dt id="widl-IntentProvider-intent"><code>intent</code> of type <span class="idlAttrType"><a href="#idl-def-Intent" class="idlType"><code>Intent</code></a></span>, readonly</dt><dd>The intent object as delivered to the service page (includes
+<span class="idlAttribute"> readonly attribute <span class="idlAttrType"><a href="#idl-def-Intent" class="idlType"><code>Intent</code></a></span> <span class="idlAttrName"><a href="#widl-IntentProvider-intent">intent</a></span>;</span>
+};</span></pre><section id="attributes-1"><h4><span class="secno">3.4.1 </span>Attributes</h4><dl class="attributes"><dt id="widl-IntentProvider-intent"><code>intent</code> of type <span class="idlAttrType"><a href="#idl-def-Intent" class="idlType"><code>Intent</code></a></span>, readonly </dt><dd>The intent object as delivered to the service page (includes
postResult and postFailure methods).</dd></dl></section>
<pre class="idl"><span class="idlImplements"><a>Window</a> implements <a href="#idl-def-IntentProvider" class="idlType"><code>IntentProvider</code></a>;</span></pre><div class="idlImplementsDesc"><p>All instances of the <code><a>Window</a></code> type are defined to also implement the <a href="#idl-def-IntentProvider" class="idlType"><code>IntentProvider</code></a> interface.</p></div>
<p>
This object will only be made available to Service pages when they are
loaded in the context of an intent invocation. Even if the same URL is
- loaded in other situations, the User Agent <em class="rfc2119" title="must not">must not</em> make
+ loaded in other situations, the User Agent <em class="rfc2119" title="MUST NOT">MUST NOT</em> make
<code>Window</code> implement <a href="#idl-def-IntentProvider" class="idlType"><code>IntentProvider</code></a>. Similarly, if
a Service page is registered, but the User Agent loads it and it does not
contain the declarative markup marking it as expecting to handle the Intent
- the User Agent is delivering, the User Agent <em class="rfc2119" title="must not">must not</em> make
+ the User Agent is delivering, the User Agent <em class="rfc2119" title="MUST NOT">MUST NOT</em> make
<code>Window</code> implement <a href="#idl-def-IntentProvider" class="idlType"><code>IntentProvider</code></a>.
</p>
<p>
- The <code>window.intent</code> object <em class="rfc2119" title="must">must</em> be made available across
- same-origin redirects of the service page. It <em class="rfc2119" title="must not">must not</em> be made available if
+ The <code>window.intent</code> object <em class="rfc2119" title="MUST">MUST</em> be made available across
+ same-origin redirects of the service page. It <em class="rfc2119" title="MUST NOT">MUST NOT</em> be made available if
redirects cross an origin boundary.
</p>
<p>
@@ -843,7 +884,7 @@
http://login.example.com
</p>
<p>
- The <code>window.intent</code> object <em class="rfc2119" title="must">must</em> be made available to a page on
+ The <code>window.intent</code> object <em class="rfc2119" title="MUST">MUST</em> be made available to a page on
the same-origin as the originally-delivered page if the user initiates a
navigation on the browsing context in which that Service page is displayed,
AND the new page has declarative syntax marking it as a handler for the
@@ -851,16 +892,16 @@
</p>
<p>
In other words, in the browsing context in which the Intent is originally
- delivered, the intent data <em class="rfc2119" title="must">must</em> be made available to pages in a redirect or
+ delivered, the intent data <em class="rfc2119" title="MUST">MUST</em> be made available to pages in a redirect or
navigation sequence when they are in the same origin as that to which it was originally
- delivered (and have the enabling markup), but <em class="rfc2119" title="must not">must not</em> be made available to any other pages.
+ delivered (and have the enabling markup), but <em class="rfc2119" title="MUST NOT">MUST NOT</em> be made available to any other pages.
This allows Service pages to delegate handling, to redirect to login screens,
and so forth, but does not make the Intent data available to any such pages encountered which
are not in the same origin.
</p>
<p>
- Multiple invocation by code in the service page <em class="rfc2119" title="must">must</em> throw a Javascript
- exception. The User Agent <em class="rfc2119" title="must not">must not</em> allow a particular Intent to be replied to multiple times.
+ Multiple invocation by code in the service page <em class="rfc2119" title="MUST">MUST</em> throw a Javascript
+ exception. The User Agent <em class="rfc2119" title="MUST NOT">MUST NOT</em> allow a particular Intent to be replied to multiple times.
</p>
</section>
@@ -870,33 +911,33 @@
Web pages declaratively mark themselves (or other same-origin Service pages)
as providing handling functionality for particular intent actions and types
using the <code><intent></code> tag.
- A User Agent <em class="rfc2119" title="must not">must not</em> deliver an Intent to a web app service page which
+ 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 (See the section on Matching action and type for
delivery).
</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"> attribute <span class="idlAttrType"><a>DOMString</a></span> <span class="idlAttrName"><a href="#widl-HTMLIntentElement-action">action</a></span>;</span>
-<span class="idlAttribute"> attribute <span class="idlAttrType"><a>DOMString</a></span> <span class="idlAttrName"><a href="#widl-HTMLIntentElement-type">type</a></span>;</span>
-<span class="idlAttribute"> attribute <span class="idlAttrType"><a>DOMString</a></span> <span class="idlAttrName"><a href="#widl-HTMLIntentElement-href">href</a></span>;</span>
-<span class="idlAttribute"> attribute <span class="idlAttrType"><a>DOMString</a></span> <span class="idlAttrName"><a href="#widl-HTMLIntentElement-title">title</a></span>;</span>
-<span class="idlAttribute"> attribute <span class="idlAttrType"><a>DOMString</a></span> <span class="idlAttrName"><a href="#widl-HTMLIntentElement-disposition">disposition</a></span>;</span>
-};</span></pre><section id="attributes-2"><h4><span class="secno">3.5.1 </span>Attributes</h4><dl class="attributes"><dt id="widl-HTMLIntentElement-action"><code>action</code> of type <span class="idlAttrType"><a>DOMString</a></span></dt><dd>An opaque string indicating the behavior class the service supports.
+<span class="idlAttribute"> attribute <span class="idlAttrType"><a>DOMString</a></span> <span class="idlAttrName"><a href="#widl-HTMLIntentElement-action">action</a></span>;</span>
+<span class="idlAttribute"> attribute <span class="idlAttrType"><a>DOMString</a></span> <span class="idlAttrName"><a href="#widl-HTMLIntentElement-type">type</a></span>;</span>
+<span class="idlAttribute"> attribute <span class="idlAttrType"><a>DOMString</a></span> <span class="idlAttrName"><a href="#widl-HTMLIntentElement-href">href</a></span>;</span>
+<span class="idlAttribute"> attribute <span class="idlAttrType"><a>DOMString</a></span> <span class="idlAttrName"><a href="#widl-HTMLIntentElement-title">title</a></span>;</span>
+<span class="idlAttribute"> attribute <span class="idlAttrType"><a>DOMString</a></span> <span class="idlAttrName"><a href="#widl-HTMLIntentElement-disposition">disposition</a></span>;</span>
+};</span></pre><section id="attributes-2"><h4><span class="secno">3.5.1 </span>Attributes</h4><dl class="attributes"><dt id="widl-HTMLIntentElement-action"><code>action</code> of type <span class="idlAttrType"><a>DOMString</a></span>, </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>DOMString</a></span></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
+ attributes.</dd><dt id="widl-HTMLIntentElement-disposition"><code>disposition</code> of type <span class="idlAttrType"><a>DOMString</a></span>, </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
+ <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>DOMString</a></span></dt><dd>Should be a fully qualified URI. If the <code>href</code> attribute
+ 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>DOMString</a></span>, </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>DOMString</a></span></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>
- use 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>DOMString</a></span></dt><dd>A string specifying the type of payload data the service can
+ found.</dd><dt id="widl-HTMLIntentElement-title"><code>title</code> of type <span class="idlAttrType"><a>DOMString</a></span>, </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>
+ use 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>DOMString</a></span>, </dt><dd>A string specifying the type of payload data the service can
accept. Must be a space separated list of type specifiers. If these parse
as MIME types, or the MIME wildcard types "*/*" or "*", they will be
interpreted as such (see the section on matching action and type for delivery).
@@ -912,29 +953,29 @@
</p>
<h3 id="same-origin-registration">Same-origin registration</h3>
<p>
- The User Agent <em class="rfc2119" title="must not">must not</em> obey any registration markup which is not
+ The User Agent <em class="rfc2119" title="MUST NOT">MUST NOT</em> obey any registration markup which is not
same-origin. That is, a page may only register <code>href</code> attributes
for other service handlers on its same origin. A page may register itself
as a Service handler, by leaving the <code>href</code> attribute empty.
</p>
<p>
For cross-page registration, when the <code>href</code> attribute points to a different
- resource, the User Agent <em class="rfc2119" title="should">should</em> interpret intent registrations additively.
+ resource, the User Agent <em class="rfc2119" title="SHOULD">SHOULD</em> interpret intent registrations additively.
That is, an intent descriptor from the tag would be added to the registry
if it is not present (if the user approves the addition).
</p>
<h4 id="unregistering">Unregistering</h4>
<p>
- The User Agent <em class="rfc2119" title="should">should</em> treat any registration markup which has both
+ The User Agent <em class="rfc2119" title="SHOULD">SHOULD</em> treat any registration markup which has both
<code>action</code> and <code>type</code> attributes missing as if the
markup specified no intent capability on the <code>href</code> page. That is, a page may
unregister itself implicitly by removing all intent tags, or explicitly
by keeping the tag present, but without <code>action</code> or
- <code>type</code> attributes. Such explicit unregistration <em class="rfc2119" title="should">should</em>
+ <code>type</code> attributes. Such explicit unregistration <em class="rfc2119" title="SHOULD">SHOULD</em>
be honored for any tag with a same-origin <code>href</code> attribute.
</p>
<p>
- The intent tags on the service handler page itself <em class="rfc2119" title="should">should</em> be interpreted by
+ The intent tags on the service handler page itself <em class="rfc2119" title="SHOULD">SHOULD</em> be interpreted by
the User Agent as authoritative. That is, if the User Agent loads a service
page, and sees that its intent descriptors do not match the set currently
registered for that page, it would replace the currently-registered
@@ -943,24 +984,24 @@
<h4 id="http-status-codes-on-service-pages">HTTP Status Codes on Service Pages</h4>
<p>
If a registered service page is retrieved and has a non-20x error code
- [<cite><a class="bibref" href="#bib-HTTP11">HTTP11</a></cite>], the User Agent <em class="rfc2119" title="should">should</em> take the following actions:</p>
+ [<cite><a class="bibref" href="#bib-HTTP11">HTTP11</a></cite>], the User Agent <em class="rfc2119" title="SHOULD">SHOULD</em> take the following actions:</p>
<p>
30x: redirect to the indicated page. If the page is on-domain, and has
intent markup, the intent will be made available to the redirect page.
- If the redirect is permanent (301), the User Agent <em class="rfc2119" title="may">may</em> update its service
+ If the redirect is permanent (301), the User Agent <em class="rfc2119" title="MAY">MAY</em> update its service
registration records to reflect that.
</p>
<p>
4xx: indicate to the user that the page cannot be loaded, along with any
remediation capabilities (i.e. authentication for 403 or payments for 402).
- In the case of error 410, the User Agent <em class="rfc2119" title="should">should</em> unregister the handler from
+ In the case of error 410, the User Agent <em class="rfc2119" title="SHOULD">SHOULD</em> unregister the handler from
its internal registry.
</p>
<p>
50x: indicate to the user that the page cannot be loaded.
</p>
<p>
- If the desired registered service page cannot be loaded, the User Agent <em class="rfc2119" title="should">should</em>
+ If the desired registered service page cannot be loaded, the User Agent <em class="rfc2119" title="SHOULD">SHOULD</em>
display UI allowing the user to select another service.
</p>
</section>
@@ -972,32 +1013,32 @@
<section id="service-registration">
<h3><span class="secno">4.1 </span>Service Registration</h3>
<p>
- When the User Agent loads a page with registration markup, it <em class="rfc2119" title="should">should</em> allow
+ When the User Agent loads a page with registration markup, it <em class="rfc2119" title="SHOULD">SHOULD</em> allow
the user to configure that page as a web intents service. The details of
this process is left up to the User Agent. The model is that the page
advises of the ability to handle intents, and the User Agent may remember
- that. The User Agent <em class="rfc2119" title="must not">must not</em> deliver an intent to a Service discovered in
+ that. The User Agent <em class="rfc2119" title="MUST NOT">MUST NOT</em> deliver an intent to a Service discovered in
this way before the user has made a specific action allowing it.
</p>
<p>
- The User Agent <em class="rfc2119" title="must not">must not</em> allow web pages the ability to discover passively
+ The User Agent <em class="rfc2119" title="MUST NOT">MUST NOT</em> allow web pages the ability to discover passively
which services the user has configured to handle particular intents,
or any intents, whether by enumeration or exact query. There may be
mechanisms for the user to actively grant this information to web pages,
- but it <em class="rfc2119" title="must not">must not</em> be made available passively.
+ but it <em class="rfc2119" title="MUST NOT">MUST NOT</em> be made available passively.
</p>
<p>
- The User Agent <em class="rfc2119" title="may">may</em> provide additional mechanisms for web intents service
+ The User Agent <em class="rfc2119" title="MAY">MAY</em> provide additional mechanisms for web intents service
registration. For example, by external applications, through a separate
API, as a result of a permissions bundle in a downloaded web application,
or pre-bundled. (TODO: add example of a local network service)
</p>
<p>
- The User Agent <em class="rfc2119" title="may">may</em> act as a Client or a Service. For example, the User
+ The User Agent <em class="rfc2119" title="MAY">MAY</em> act as a Client or a Service. For example, the User
Agent may implement particular affordances which directly launch Intents
that may be handled by registered Services, or present UI allowing its own
functionality to be used alongside other registered Services to handle
- Intents. For instance, User Agents <em class="rfc2119" title="may">may</em> also dispatch intents directly based
+ Intents. For instance, User Agents <em class="rfc2119" title="MAY">MAY</em> also dispatch intents directly based
on data-specific controls derived from microdata in pages, or based on other
User Agent-level features.
</p>
@@ -1005,9 +1046,9 @@
<section id="invocation-and-dispatch">
<h3><span class="secno">4.2 </span>Invocation and Dispatch</h3>
<p>
- For intents invoked by client web applications, the User Agent <em class="rfc2119" title="must">must</em>
+ For intents invoked by client web applications, the User Agent <em class="rfc2119" title="MUST">MUST</em>
require that such invocations be in the context of a user gesture. User
- Agents <em class="rfc2119" title="may">may</em> also dispatch intents invoked through other mechanisms. For
+ Agents <em class="rfc2119" title="MAY">MAY</em> also dispatch intents invoked through other mechanisms. For
example, hardware events (i.e. plugging in a USB storage device) or
software events (i.e. downloading a file).
</p>
@@ -1016,21 +1057,21 @@
chosen service. The details of this process are left up to the User Agent.
The User Agent may dispatch intents to web application service pages,
helper applications, proxy them through connections to other hardware,
- etc. In general, though, the User Agent <em class="rfc2119" title="must">must</em> provide a way for the user
+ etc. In general, though, the User Agent <em class="rfc2119" title="MUST">MUST</em> provide a way for the user
to configure which intents are delivered to which services. This process
- <em class="rfc2119" title="should">should</em> be configurable on a per-invocation basis. Defaulting rules,
+ <em class="rfc2119" title="SHOULD">SHOULD</em> be configurable on a per-invocation basis. Defaulting rules,
as long as they are configurable by the user, are expected to result in
the User Agent not presenting full UI controls on every invocation.
</p>
<p>
When the User Agent delivers an intent payload to a web application, it
- <em class="rfc2119" title="must">must</em> make the <code>window.intent</code> object available as the document
+ <em class="rfc2119" title="MUST">MUST</em> make the <code>window.intent</code> object available as the document
is loaded and parsed, so that scripts on the page may process the intent
- data as they load. User agents <em class="rfc2119" title="must not">must not</em> make available a <code>window.intent</code>
+ data as they load. User agents <em class="rfc2119" title="MUST NOT">MUST NOT</em> make available a <code>window.intent</code>
object in the scope of pages which do not have registration metadata
declaring themselves as intent handlers. This means that any use of
<code>window.intent</code> in pages which do not explicitly declare
- themselves as web intents handlers <em class="rfc2119" title="must not">must not</em> be overwritten by the User
+ themselves as web intents handlers <em class="rfc2119" title="MUST NOT">MUST NOT</em> be overwritten by the User
Agent. It also means that Service pages cannot access
<code>window.intent</code> in scripts which occur before the page parses
the intents registration markup. If such scripts are simply declaring
@@ -1040,22 +1081,22 @@
and so are likely broken.
</p>
<p>
- When a new context is opened for the service page, the User Agent <em class="rfc2119" title="must">must</em>
+ When a new context is opened for the service page, the User Agent <em class="rfc2119" title="MUST">MUST</em>
connect the <code>postResult</code> and <code>postFailure</code> methods
of the <code>window.intent</code> object so that they return their
serializable payloads to the registered handlers the User Agent received
in the invoking <code>navigator.startActivity</code> call. If the user
- closes the service page before it has responded, the User Agent <em class="rfc2119" title="must">must</em>
+ closes the service page before it has responded, the User Agent <em class="rfc2119" title="MUST">MUST</em>
invoke the <code>onFailure</code> callback in the client page invocation,
if any. If the user cancels a service selection UI control the User Agent
- displays in the course of dispatching an intent, the User Agent <em class="rfc2119" title="must">must</em>
+ displays in the course of dispatching an intent, the User Agent <em class="rfc2119" title="MUST">MUST</em>
invoke the <code>onFailure</code> callback in the client page invocation,
if any.
</p>
<p>
- The User Agent <em class="rfc2119" title="should">should</em> allow any serializable and/or Transferable object
+ The User Agent <em class="rfc2119" title="SHOULD">SHOULD</em> allow any serializable and/or Transferable object
to be passed between client to service and back from service to client.
- This includes Blobs [<cite><a class="bibref" href="#bib-BLOB">BLOB</a></cite>], MessagePorts, etc. The User Agent <em class="rfc2119" title="may">may</em> inspect
+ This includes Blobs [<cite><a class="bibref" href="#bib-BLOB">BLOB</a></cite>], MessagePorts, etc. The User Agent <em class="rfc2119" title="MAY">MAY</em> inspect
the payload of intents and present specialized UI corresponding to
well-known intent types. As an example, the User Agent may present
specialized messaging to the user indicating that an intent is of the
@@ -1063,12 +1104,12 @@
</p>
<p>
If the user has no services registered for a particular type of intent,
- the User Agent <em class="rfc2119" title="may">may</em> display options from other sources of data about
+ the User Agent <em class="rfc2119" title="MAY">MAY</em> display options from other sources of data about
services it knows can handle that intent type so that the user can
complete the activity.
</p>
<p>
- The User Agent <em class="rfc2119" title="must not">must not</em> categorically prohibit
+ The User Agent <em class="rfc2119" title="MUST NOT">MUST NOT</em> categorically prohibit
dispatch of unknown intent types. This is not meant to prohibit the User
Agent from performing filtering functions on intents, such as suppressing
unwanted intent invocations, intents as used as an attack vector, and
@@ -1081,22 +1122,22 @@
When handling an Intent marked as explicit (that is, constructed with the
object literal constructor with a non-empty <b>service</b> field), the
expected User Agent behavior is that if this "service" attribute is
- present, it <em class="rfc2119" title="should not">should not</em> display a service selection mechanism to the user.
- Instead, the service url <em class="rfc2119" title="should">should</em> be loaded directly to handle the intent.
- (This is not a hard restriction. The User Agent <em class="rfc2119" title="may">may</em> provide a way for the
+ present, it <em class="rfc2119" title="SHOULD NOT">SHOULD NOT</em> display a service selection mechanism to the user.
+ Instead, the service url <em class="rfc2119" title="SHOULD">SHOULD</em> be loaded directly to handle the intent.
+ (This is not a hard restriction. The User Agent <em class="rfc2119" title="MAY">MAY</em> provide a way for the
user to intercept even an explicit invocation.)
</p>
<p>
During delivery, all restrictions are still in place. That is, the User
- Agent <em class="rfc2119" title="must">must</em> follow the above requirements on placing the
+ Agent <em class="rfc2119" title="MUST">MUST</em> follow the above requirements on placing the
<code>window.intent</code> object in the scope of the page, and respect
any declarative metadata in that service page. If the user agent needs
information about the service (i.e. disposition, title, etc) for use
- in preparing its UI, it <em class="rfc2119" title="may">may</em> load the service URL and examine the page
+ in preparing its UI, it <em class="rfc2119" title="MAY">MAY</em> load the service URL and examine the page
for any declarative metadata.
</p>
<p>
- The User Agent <em class="rfc2119" title="may">may</em> ask the user if they wish to install this service,
+ The User Agent <em class="rfc2119" title="MAY">MAY</em> ask the user if they wish to install this service,
just like for any other visit of the page.
</p>
</section>
@@ -1148,8 +1189,8 @@
record.</li>
</ol>
</li><li>If no satisfying match is found in the registrations of the Service
- page, the Intent <em class="rfc2119" title="must not">must not</em> be delivered. If any satisfying match is
- found, the Intent <em class="rfc2119" title="must">must</em> be delivered to the Service page.</li>
+ page, the Intent <em class="rfc2119" title="MUST NOT">MUST NOT</em> be delivered. If any satisfying match is
+ found, the Intent <em class="rfc2119" title="MUST">MUST</em> be delivered to the Service page.</li>
</ol>
</section>
@@ -1158,21 +1199,21 @@
<p>
If the user has no persistent information about a qualifying service
for a particular intent registered with the User Agent, the User Agent
- <em class="rfc2119" title="should">should</em> present the user with the option to select from the default
+ <em class="rfc2119" title="SHOULD">SHOULD</em> present the user with the option to select from the default
services proposed by the client at invocation (from the <i>suggestions</i>
parameter).
</p>
<p>
If the user agent needs information about the all or any of the
suggested services (i.e. disposition, title, icon, etc) for use in
- preparing its UI, it <em class="rfc2119" title="may">may</em> load the suggested default service URL(s) and
+ preparing its UI, it <em class="rfc2119" title="MAY">MAY</em> load the suggested default service URL(s) and
examine the page(s) for the <intent> tag, reading off such information,
- or load the favicon for the site(s). The User Agent <em class="rfc2119" title="may">may</em> ask the user if
+ or load the favicon for the site(s). The User Agent <em class="rfc2119" title="MAY">MAY</em> ask the user if
they wish to install all or any of the suggested services, just as for
any other visit of those pages.
</p>
<p>
- The User Agent <em class="rfc2119" title="must">must</em> follow the matching algorithm of the "Matching action
+ The User Agent <em class="rfc2119" title="MUST">MUST</em> follow the matching algorithm of the "Matching action
and type for delivery" section before delivering
the Intent to a suggested service, just as for any Intent delivery.
</p>
@@ -1298,11 +1339,11 @@
-<section id="references" class="appendix"><!--OddPage--><h2><span class="secno">B. </span>References</h2><section id="normative-references"><h3><span class="secno">B.1 </span>Normative references</h3><dl class="bibliography"><dt id="bib-BLOB">[BLOB]</dt><dd>Arun Ranganathan. <a href="http://www.w3.org/TR/2009/WD-FileAPI-20091117/#dfn-Blob"><cite>Blob.</cite></a> 17 November 2009. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/WD-FileAPI-20091117/">http://www.w3.org/TR/2009/WD-FileAPI-20091117/#dfn-Blob</a>
-</dd><dt id="bib-HTML5">[HTML5]</dt><dd>Ian Hickson; David Hyatt. <a href="http://www.w3.org/TR/html5"><cite>HTML5.</cite></a> 29 March 2012. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/html5">http://www.w3.org/TR/html5</a>
-</dd><dt id="bib-HTTP11">[HTTP11]</dt><dd>R. Fielding; et al. <a href="http://www.ietf.org/rfc/rfc2616.txt"><cite>Hypertext Transfer Protocol - HTTP/1.1.</cite></a> June 1999. Internet RFC 2616. URL: <a href="http://www.ietf.org/rfc/rfc2616.txt">http://www.ietf.org/rfc/rfc2616.txt</a>
-</dd><dt id="bib-POSTMSG">[POSTMSG]</dt><dd>Ian Hickson. <a href="http://dev.w3.org/html5/postmsg"><cite>HTML5 Web Messaging.</cite></a> URL: <a href="http://dev.w3.org/html5/postmsg">http://dev.w3.org/html5/postmsg</a>
-</dd><dt id="bib-RFC2046">[RFC2046]</dt><dd>N. Freed; N. Borenstein. <a href="http://www.ietf.org/rfc/rfc2046.txt"><cite>Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types.</cite></a> November 1996. Internet RFC 2046. URL: <a href="http://www.ietf.org/rfc/rfc2046.txt">http://www.ietf.org/rfc/rfc2046.txt</a>
-</dd></dl></section><section id="informative-references"><h3><span class="secno">B.2 </span>Informative references</h3><dl class="bibliography"><dt id="bib-DAP-PRIVACY-REQS">[DAP-PRIVACY-REQS]</dt><dd>Alissa Cooper, Frederick Hirsch, John Morris. <a href="http://www.w3.org/TR/2010/NOTE-dap-privacy-reqs-20100629/"><cite>Device API Privacy Requirements</cite></a> 29 June 2010. W3C Note URL: <a href="http://www.w3.org/TR/2010/NOTE-dap-privacy-reqs-20100629/">http://www.w3.org/TR/2010/NOTE-dap-privacy-reqs-20100629/</a>
+<section id="references" class="appendix"><!--OddPage--><h2><span class="secno">B. </span>References</h2><section id="normative-references"><h3><span class="secno">B.1 </span>Normative references</h3><dl class="bibliography"><dt id="bib-BLOB">[BLOB]</dt><dd>Arun Ranganathan. <a href="http://www.w3.org/TR/2009/WD-FileAPI-20091117/#dfn-Blob"><cite>Blob</cite></a>. 17 November 2009. W3C Working Draft. URL: <a href="http://www.w3.org/TR/2009/WD-FileAPI-20091117/#dfn-Blob">http://www.w3.org/TR/2009/WD-FileAPI-20091117/#dfn-Blob</a>
+</dd><dt id="bib-HTML5">[HTML5]</dt><dd>Robin Berjon et al. <a href="http://www.w3.org/TR/html5/"><cite>HTML5</cite></a>. 17 December 2012. W3C Candidate Recommendation. URL: <a href="http://www.w3.org/TR/html5/">http://www.w3.org/TR/html5/</a>
+</dd><dt id="bib-HTTP11">[HTTP11]</dt><dd>R. Fielding et al. <a href="http://www.ietf.org/rfc/rfc2616.txt"><cite>Hypertext Transfer Protocol - HTTP/1.1</cite></a>. June 1999. RFC 2616. URL: <a href="http://www.ietf.org/rfc/rfc2616.txt">http://www.ietf.org/rfc/rfc2616.txt</a>
+</dd><dt id="bib-POSTMSG">[POSTMSG]</dt><dd>Ian Hickson. <a href="http://www.w3.org/TR/2012/CR-webmessaging-20120501"><cite>HTML5 Web Messaging</cite></a>. 01 May 2012. W3C Candidate Recommendation. URL: <a href="http://www.w3.org/TR/2012/CR-webmessaging-20120501">http://www.w3.org/TR/2012/CR-webmessaging-20120501</a>
+</dd><dt id="bib-RFC2046">[RFC2046]</dt><dd>N. Freed; N. Borenstein. <a href="http://www.ietf.org/rfc/rfc2046.txt"><cite>Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types (RFC 2046)</cite></a>. November 1996. RFC. URL: <a href="http://www.ietf.org/rfc/rfc2046.txt">http://www.ietf.org/rfc/rfc2046.txt</a>
+</dd></dl></section><section id="informative-references"><h3><span class="secno">B.2 </span>Informative references</h3><dl class="bibliography"><dt id="bib-DAP-PRIVACY-REQS">[DAP-PRIVACY-REQS]</dt><dd>Alissa Cooper; Frederick Hirsch; John Morris. <a href="http://www.w3.org/TR/2010/NOTE-dap-privacy-reqs-20100629/"><cite>Device API Privacy Requirements</cite></a>. 29 June 2010. W3C Note. URL: <a href="http://www.w3.org/TR/2010/NOTE-dap-privacy-reqs-20100629/">http://www.w3.org/TR/2010/NOTE-dap-privacy-reqs-20100629/</a>
</dd><dt id="bib-WEBAPP-PRIVACY-BESTPRACTICES">[WEBAPP-PRIVACY-BESTPRACTICES]</dt><dd>Frederick Hirsch. <a href="http://www.w3.org/TR/app-privacy-bp/"><cite>Web Application Privacy Best Practices</cite></a>. W3C Working Group Note. URL: <a href="http://www.w3.org/TR/app-privacy-bp/">http://www.w3.org/TR/app-privacy-bp/</a>
</dd></dl></section></section></body></html>