--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/proximity/FPWD.html Tue Jul 10 11:32:00 2012 -0400
@@ -0,0 +1,801 @@
+<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>
+<html lang="en" dir="ltr">
+<head>
+ <title>Proximity Events</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+
+ <!--script src='http://dev.w3.org/2009/dap/ReSpec.js/js/respec.js' class='remove'></script-->
+
+ <style type="text/css">/*****************************************************************
+ * ReSpec 3 CSS
+ * Robin Berjon - http://berjon.com/
+ *****************************************************************/
+
+/* --- INLINES --- */
+em.rfc2119 {
+ text-transform: lowercase;
+ font-variant: small-caps;
+ font-style: normal;
+ color: #900;
+}
+
+h1 acronym, h2 acronym, h3 acronym, h4 acronym, h5 acronym, h6 acronym, a acronym,
+h1 abbr, h2 abbr, h3 abbr, h4 abbr, h5 abbr, h6 abbr, a abbr {
+ border: none;
+}
+
+dfn {
+ font-weight: bold;
+}
+
+a.internalDFN {
+ color: inherit;
+ border-bottom: 1px solid #99c;
+ text-decoration: none;
+}
+
+a.externalDFN {
+ color: inherit;
+ border-bottom: 1px dotted #ccc;
+ text-decoration: none;
+}
+
+a.bibref {
+ text-decoration: none;
+}
+
+cite .bibref {
+ font-style: normal;
+}
+
+code {
+ 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;
+}
+
+a .secno, a .figno {
+ color: #000;
+}
+
+ul.tof, ol.tof {
+ list-style: none outside none;
+}
+
+.caption {
+ margin-top: 0.5em;
+ font-style: italic;
+}
+
+/* --- TABLE --- */
+table.simple {
+ border-spacing: 0;
+ border-collapse: collapse;
+ border-bottom: 3px solid #005a9c;
+}
+
+.simple th {
+ background: #005a9c;
+ color: #fff;
+ padding: 3px 5px;
+ text-align: left;
+}
+
+.simple th[scope="row"] {
+ background: inherit;
+ color: inherit;
+ border-top: 1px solid #ddd;
+}
+
+.simple td {
+ padding: 3px 10px;
+ border-top: 1px solid #ddd;
+}
+
+.simple tr:nth-child(even) {
+ background: #f0f6ff;
+}
+
+/* --- DL --- */
+.section dd > p:first-child {
+ margin-top: 0;
+}
+
+.section dd > p:last-child {
+ margin-bottom: 0;
+}
+
+.section dd {
+ margin-bottom: 1em;
+}
+
+.section dl.attrs dd, .section dl.eldef dd {
+ margin-bottom: 0;
+}
+</style><style type="text/css">/* --- ISSUES/NOTES --- */
+div.issue-title, div.note-title {
+ padding-right: 1em;
+ min-width: 7.5em;
+ color: #b9ab2d;
+}
+div.issue-title { color: #e05252; }
+div.note-title { color: #52e052; }
+div.issue-title span, div.note-title span {
+ text-transform: uppercase;
+}
+div.note, div.issue {
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+.note > p:first-child, .issue > p:first-child { margin-top: 0 }
+.issue, .note {
+ padding: .5em;
+ border-left-width: .5em;
+ border-left-style: solid;
+}
+div.issue, div.note {
+ padding: 0.5em;
+ margin: 1em 0;
+ position: relative;
+ clear: both;
+}
+span.note, span.issue { padding: .1em .5em .15em; }
+
+.issue {
+ border-color: #e05252;
+ background: #fbe9e9;
+}
+.note {
+ border-color: #52e052;
+ background: #e9fbe9;
+}
+
+
+</style><style type="text/css">/* --- WEB IDL --- */
+pre.idl {
+ border-top: 1px solid #90b8de;
+ border-bottom: 1px solid #90b8de;
+ padding: 1em;
+ line-height: 120%;
+}
+
+pre.idl::before {
+ content: "WebIDL";
+ display: block;
+ width: 150px;
+ background: #90b8de;
+ color: #fff;
+ font-family: initial;
+ padding: 3px;
+ font-weight: bold;
+ margin: -1em 0 1em -1em;
+}
+
+.idlType {
+ color: #ff4500;
+ font-weight: bold;
+ text-decoration: none;
+}
+
+/*.idlModule*/
+/*.idlModuleID*/
+/*.idlInterface*/
+.idlInterfaceID, .idlDictionaryID, .idlCallbackID, .idlEnumID {
+ font-weight: bold;
+ color: #005a9c;
+}
+
+.idlSuperclass {
+ font-style: italic;
+ color: #005a9c;
+}
+
+/*.idlAttribute*/
+.idlAttrType, .idlFieldType, .idlMemberType {
+ color: #005a9c;
+}
+.idlAttrName, .idlFieldName, .idlMemberName {
+ color: #ff4500;
+}
+.idlAttrName a, .idlFieldName a, .idlMemberName a {
+ color: #ff4500;
+ border-bottom: 1px dotted #ff4500;
+ text-decoration: none;
+}
+
+/*.idlMethod*/
+.idlMethType, .idlCallbackType {
+ color: #005a9c;
+}
+.idlMethName {
+ color: #ff4500;
+}
+.idlMethName a {
+ color: #ff4500;
+ border-bottom: 1px dotted #ff4500;
+ text-decoration: none;
+}
+
+/*.idlParam*/
+.idlParamType {
+ color: #005a9c;
+}
+.idlParamName {
+ font-style: italic;
+}
+
+.extAttr {
+ color: #666;
+}
+
+/*.idlConst*/
+.idlConstType {
+ color: #005a9c;
+}
+.idlConstName {
+ color: #ff4500;
+}
+.idlConstName a {
+ color: #ff4500;
+ border-bottom: 1px dotted #ff4500;
+ text-decoration: none;
+}
+
+/*.idlException*/
+.idlExceptionID {
+ font-weight: bold;
+ color: #c00;
+}
+
+.idlTypedefID, .idlTypedefType {
+ color: #005a9c;
+}
+
+.idlRaises, .idlRaises a.idlType, .idlRaises a.idlType code, .excName a, .excName a code {
+ color: #c00;
+ font-weight: normal;
+}
+
+.excName a {
+ font-family: monospace;
+}
+
+.idlRaises a.idlType, .excName a.idlType {
+ border-bottom: 1px dotted #c00;
+}
+
+.excGetSetTrue, .excGetSetFalse, .prmNullTrue, .prmNullFalse, .prmOptTrue, .prmOptFalse {
+ width: 45px;
+ text-align: center;
+}
+.excGetSetTrue, .prmNullTrue, .prmOptTrue { color: #0c0; }
+.excGetSetFalse, .prmNullFalse, .prmOptFalse { color: #c00; }
+
+.idlImplements a {
+ font-weight: bold;
+}
+
+dl.attributes, dl.methods, dl.constants, dl.fields, dl.dictionary-members {
+ margin-left: 2em;
+}
+
+.attributes dt, .methods dt, .constants 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 {
+ font-weight: bold;
+ color: #000;
+ font-family: monospace;
+}
+
+.attributes dt code, .fields dt code, .dictionary-members dt code {
+ background: #ffffd2;
+}
+
+.attributes dt .idlAttrType code, .fields dt .idlFieldType code, .dictionary-members dt .idlMemberType code {
+ color: #005a9c;
+ background: transparent;
+ font-family: inherit;
+ font-weight: normal;
+ font-style: italic;
+}
+
+.methods dt code {
+ background: #d9e6f8;
+}
+
+.constants dt code {
+ background: #ddffd2;
+}
+
+.attributes dd, .methods dd, .constants dd, .fields dd, .dictionary-members dd {
+ margin-bottom: 1em;
+}
+
+table.parameters, table.exceptions {
+ border-spacing: 0;
+ border-collapse: collapse;
+ margin: 0.5em 0;
+ width: 100%;
+}
+table.parameters { border-bottom: 1px solid #90b8de; }
+table.exceptions { border-bottom: 1px solid #deb890; }
+
+.parameters th, .exceptions th {
+ color: #fff;
+ padding: 3px 5px;
+ text-align: left;
+ font-family: initial;
+ font-weight: normal;
+ text-shadow: #666 1px 1px 0;
+}
+.parameters th { background: #90b8de; }
+.exceptions th { background: #deb890; }
+
+.parameters td, .exceptions td {
+ padding: 3px 10px;
+ border-top: 1px solid #ddd;
+ vertical-align: top;
+}
+
+.parameters tr:first-child td, .exceptions tr:first-child td {
+ border-top: none;
+}
+
+.parameters td.prmName, .exceptions td.excName, .exceptions td.excCodeName {
+ width: 100px;
+}
+
+.parameters td.prmType {
+ width: 120px;
+}
+
+table.exceptions table {
+ border-spacing: 0;
+ border-collapse: collapse;
+ width: 100%;
+}
+</style><link href="http://www.w3.org/StyleSheets/TR/W3C-WD" rel="stylesheet"></head>
+ <body><div class="head">
+ <p>
+
+ <a href="http://www.w3.org/"><img src="http://www.w3.org/Icons/w3c_home" alt="W3C" height="48" width="72"></a>
+
+ </p>
+ <h1 class="title" id="title">Proximity Events</h1>
+
+ <h2 id="w3c-working-draft-12-july-2012"><abbr title="World Wide Web Consortium">W3C</abbr> Working Draft 12 July 2012</h2>
+ <dl>
+
+ <dt>This version:</dt>
+ <dd><a href="http://www.w3.org/TR/2012/WD-proximity-20120712/">http://www.w3.org/TR/2012/WD-proximity-20120712/</a></dd>
+ <dt>Latest published version:</dt>
+ <dd><a href="http://www.w3.org/TR/proximity/">http://www.w3.org/TR/proximity/</a></dd>
+
+
+ <dt>Latest editor's draft:</dt>
+ <dd><a href="http://dvcs.w3.org/hg/dap/raw-file/tip/proximity/Overview.html">http://dvcs.w3.org/hg/dap/raw-file/tip/proximity/Overview.html</a></dd>
+
+
+
+
+
+
+ <dt>Editors:</dt>
+ <dd><span>Anssi Kostiainen</span>, <a href="http://nokia.com/">Nokia</a></dd>
+<dd><span>Dzung D Tran</span>, <a href="http://intel.com/">Intel</a></dd>
+
+
+ </dl>
+
+
+
+
+
+ <p class="copyright">
+ <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> ©
+ 2012
+
+ <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.
+ <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.
+ </p>
+
+
+ <hr>
+</div>
+ <div class="introductory section" id="abstract"><h2>Abstract</h2><p>
+ This specification defines a means to receive events that correspond to
+ a proximity sensor detecting the presence of a physical object.
+ </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 <abbr title="World Wide Web Consortium">W3C</abbr> publications and the latest revision
+ of this technical report can be found in the <a href="http://www.w3.org/TR/"><abbr title="World Wide Web Consortium">W3C</abbr> technical reports
+ index</a> at http://www.w3.org/TR/.</em>
+ </p>
+
+ <p>
+ The functionality described in this specification was initially
+ specified as part of the
+ <a href="http://dvcs.w3.org/hg/dap/raw-file/tip/sensor-api/Overview.html">
+ Sensor API</a> but has been extracted in order to be more
+ straightforward to implement, and in order to produce a specification
+ that could be implemented on its own merits without interference with
+ other features.
+ </p>
+
+ <p>
+ This document was published by the <a href="http://www.w3.org/2009/dap/">Device APIs Working Group</a> as a First Public Working Draft.
+
+ This document is intended to become a <abbr title="World Wide Web Consortium">W3C</abbr> Recommendation.
+
+ If you wish to make comments regarding this document, please send them to
+ <a href="mailto:public-device-apis@w3.org">public-device-apis@w3.org</a>
+ (<a href="mailto:public-device-apis-request@w3.org?subject=subscribe">subscribe</a>,
+ <a href="http://lists.w3.org/Archives/Public/public-device-apis/">archives</a>).
+
+
+ All feedback is welcome.
+ </p>
+
+ <p>
+ Publication as a Working 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.
+ </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 <abbr title="World Wide Web Consortium">W3C</abbr> Patent Policy</a>.
+
+
+
+
+ <abbr title="World Wide Web Consortium">W3C</abbr> maintains a <a href="http://www.w3.org/2004/01/pp-impl/43696/status" 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 <abbr title="World Wide Web Consortium">W3C</abbr> Patent Policy</a>.
+
+
+ </p>
+
+
+
+
+</div><div class="section" id="toc"><h2 class="introductory">Table of Contents</h2><ul class="toc"><li class="tocline"><a class="tocxref" href="#introduction"><span class="secno">1. </span>Introduction</a></li><li class="tocline"><a class="tocxref" href="#conformance"><span class="secno">2. </span>Conformance</a></li><li class="tocline"><a class="tocxref" href="#terminology"><span class="secno">3. </span>Terminology</a></li><li class="tocline"><a class="tocxref" href="#security-and-privacy-considerations"><span class="secno">4. </span>Security and privacy considerations</a></li><li class="tocline"><a class="tocxref" href="#device-proximity"><span class="secno">5. </span>Device proximity</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes"><span class="secno">5.1 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#deviceproximityevent-interface"><span class="secno">5.2 </span><a class="idlType" href="#idl-def-DeviceProximityEvent"><code>DeviceProximityEvent</code></a> Interface</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-1"><span class="secno">5.2.1 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#dictionary-deviceproximityeventinit-members"><span class="secno">5.2.2 </span>Dictionary <a href="#idl-def-DeviceProximityEventInit" class="idlType"><code>DeviceProximityEventInit</code></a> Members</a></li><li class="tocline"><a class="tocxref" href="#event-handlers"><span class="secno">5.2.3 </span>Event handlers</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#user-proximity"><span class="secno">6. </span>User proximity</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-2"><span class="secno">6.1 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#userproximityevent-interface"><span class="secno">6.2 </span><a class="idlType" href="#idl-def-UserProximityEvent"><code>UserProximityEvent</code></a> Interface</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-3"><span class="secno">6.2.1 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#dictionary-userproximityeventinit-members"><span class="secno">6.2.2 </span>Dictionary <a href="#idl-def-UserProximityEventInit" class="idlType"><code>UserProximityEventInit</code></a> Members</a></li><li class="tocline"><a class="tocxref" href="#event-handlers-1"><span class="secno">6.2.3 </span>Event handlers</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#acknowledgements"><span class="secno">A. </span>Acknowledgements</a></li><li class="tocline"><a class="tocxref" href="#references"><span class="secno">B. </span>References</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#normative-references"><span class="secno">B.1 </span>Normative references</a></li><li class="tocline"><a class="tocxref" href="#informative-references"><span class="secno">B.2 </span>Informative references</a></li></ul></li></ul></div>
+
+
+
+ <div id="introduction" class="informative section">
+ <!--OddPage--><h2><span class="secno">1. </span>Introduction</h2><p><em>This section is non-normative.</em></p>
+ <p>
+ The <a class="idlType" href="#idl-def-DeviceProximityEvent"><code>DeviceProximityEvent</code></a> interface provides web developers
+ information about the distance between the hosting device and a
+ nearby object.
+ </p>
+ <p>
+ The <a class="idlType" href="#idl-def-UserProximityEvent"><code>UserProximityEvent</code></a> interface provides web developers
+ a user-agent- and platform-specific approximation that the hosting
+ device has sensed a nearby object.
+ </p>
+ <p>
+ This is achieved by interrogating a proximity sensor of a device, which
+ is a sensor that can detect the presence of a physical object without
+ physical contact. Not all devices contain a proximity sensor, and when
+ there is no proximity sensor, this API is still exposed to the
+ scripting environment but it does nothing.
+ </p>
+ <p>
+ Because most proximity sensors detect electromagnetic radiation (e.g.,
+ an infrared light or a magnetic field), certain material properties can
+ interfere with the sensor's ability to sense the presence of a physical
+ object. Things that can interfere with a sensor include, but are not
+ limited to, the material's translucency, reflectiveness, color,
+ temperature, chemical composition, and even the angle at which the
+ object is reflecting the radiation back at the sensor. As such,
+ proximity sensors should not be relied on as a means to measure
+ distance: the only thing that can be deduced from a proximity sensor is
+ that an object is somewhere in the distance between the minimum sensing
+ distance and the maximum sensing distance with some degree of
+ certainty.
+ </p>
+ </div>
+
+ <div class="section" id="conformance"><!--OddPage--><h2><span class="secno">2. </span>Conformance</h2>
+<p>
+ As well as sections marked as non-normative, all authoring guidelines, diagrams, examples,
+ and notes in this specification are non-normative. Everything else in this specification is
+ normative.
+</p>
+<p>
+ The key words <em title="must" class="rfc2119">must</em>, <em title="must not" class="rfc2119">must not</em>, <em title="required" class="rfc2119">required</em>, <em title="should" class="rfc2119">should</em>, <em title="should not" class="rfc2119">should not</em>, <em title="recommended" class="rfc2119">recommended</em>, <em title="may" class="rfc2119">may</em>,
+ and <em title="optional" class="rfc2119">optional</em> in this specification are to be interpreted as described in [<cite><a href="#bib-RFC2119" class="bibref">RFC2119</a></cite>].
+</p>
+
+ <p>
+ This specification defines conformance criteria that apply to a single
+ product: the <dfn id="dfn-user-agent">user agent</dfn> that implements the
+ interfaces that it contains.
+ </p>
+ </div>
+
+ <div class="section" id="terminology">
+ <!--OddPage--><h2><span class="secno">3. </span>Terminology</h2>
+ <p>
+ The <code><a href="http://dev.w3.org/html5/spec/webappapis.html#eventhandler">
+ EventHandler</a></code> interface represents a callback used for event
+ handlers as defined in [<cite><a href="#bib-HTML5" class="bibref">HTML5</a></cite>].
+ </p>
+ <p>
+ The concepts <dfn id="dfn-queue-a-task"><a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">
+ queue a task</a></dfn> and
+ <dfn id="dfn-fires-a-simple-event"><a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">
+ fires a simple event</a></dfn> are defined in [<cite><a href="#bib-HTML5" class="bibref">HTML5</a></cite>].
+ </p>
+ <p>
+ The terms <dfn id="dfn-event-handlers"><a href="http://dev.w3.org/html5/spec/webappapis.html#event-handlers">
+ event handlers</a></dfn> and
+ <dfn id="dfn-event-handler-event-types"><a href="http://dev.w3.org/html5/spec/webappapis.html#event-handler-event-type">
+ event handler event types</a></dfn> are defined in [<cite><a href="#bib-HTML5" class="bibref">HTML5</a></cite>].
+ </p>
+ <p>The concepts <dfn id="dfn-create-an-event">
+ <a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#constructing-events">
+ create an event</a></dfn> and <dfn id="dfn-fire-an-event">
+ <a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#firing-events">
+ fire an event</a></dfn> are defined in [<cite><a href="#bib-DOM4" class="bibref">DOM4</a></cite>].
+ </p><p>
+ The <dfn id="dfn-current-device-proximity">current device proximity</dfn> is a value that represents the
+ proximity of the hosting device to a physical object (i.e., some value
+ between the <a class="internalDFN" href="#dfn-maximum-sensing-distance">maximum sensing distance</a> and the <a class="internalDFN" href="#dfn-minimum-sensing-distance">minimum sensing
+ distance</a>), in centimeters.
+ </p>
+ <p>
+ The <dfn id="dfn-minimum-sensing-distance">minimum sensing distance</dfn> at which the sensor can detect
+ a physical object.
+ </p>
+ <p>
+ The <dfn id="dfn-maximum-sensing-distance">maximum sensing distance</dfn> at which the sensor can detect
+ a physical object.
+ </p>
+ <p>
+ The <dfn id="dfn-current-user-proximity-state">current user proximity state</dfn>, a boolean state, is a
+ user-agent- and platform-specific approximation of the closeness of a
+ physical object with the hosting device.
+ </p>
+ </div>
+
+ <div class="section" id="security-and-privacy-considerations">
+ <!--OddPage--><h2><span class="secno">4. </span>Security and privacy considerations</h2>
+ <p>
+ </p>
+ </div>
+
+ <div class="section" id="device-proximity">
+ <!--OddPage--><h2><span class="secno">5. </span>Device proximity</h2>
+ <p>
+ The HTML5 specification [<cite><a href="#bib-HTML5" class="bibref">HTML5</a></cite>] defines a <a class="idlType" href="#idl-def-Window"><code>Window</code></a> interface,
+ which this specification extends:
+ </p>
+ <pre class="idl"><span class="idlInterface" id="idl-def-Window">partial interface <span class="idlInterfaceID">Window</span> {
+<span class="idlAttribute"> attribute <span class="idlAttrType"><a>EventHandler</a></span> <span class="idlAttrName"><a href="#widl-Window-ondeviceproximity">ondeviceproximity</a></span>;</span>
+};</span></pre><div class="section" id="attributes"><h3><span class="secno">5.1 </span>Attributes</h3><dl class="attributes"><dt id="widl-Window-ondeviceproximity"><code>ondeviceproximity</code> of type <span class="idlAttrType"><a>EventHandler</a></span></dt><dd>
+ </dd></dl></div>
+ <p>
+ The <code>ondeviceproximity</code> event handler and its corresponding
+ event handler event type <code>deviceproximity</code> <em title="must" class="rfc2119">must</em> be supported
+ as an IDL attribute by all objects implementing the <a class="idlType" href="#idl-def-Window"><code>Window</code></a>
+ interface.
+ </p>
+ <div class="section" id="deviceproximityevent-interface">
+ <h3><span class="secno">5.2 </span><a class="idlType" href="#idl-def-DeviceProximityEvent"><code>DeviceProximityEvent</code></a> Interface</h3>
+ <pre class="idl"><span class="idlInterface" id="idl-def-DeviceProximityEvent">[<span class="extAttr">Constructor (DOMString type, optional DeviceProximityEventInit eventInitDict)</span>]
+interface <span class="idlInterfaceID">DeviceProximityEvent</span> : <span class="idlSuperclass"><a>Event</a></span> {
+<span class="idlAttribute"> readonly attribute <span class="idlAttrType"><a>double</a></span> <span class="idlAttrName"><a href="#widl-DeviceProximityEvent-value">value</a></span>;</span>
+<span class="idlAttribute"> readonly attribute <span class="idlAttrType"><a>double</a></span> <span class="idlAttrName"><a href="#widl-DeviceProximityEvent-min">min</a></span>;</span>
+<span class="idlAttribute"> readonly attribute <span class="idlAttrType"><a>double</a></span> <span class="idlAttrName"><a href="#widl-DeviceProximityEvent-max">max</a></span>;</span>
+};<br><span class="idlDictionary" id="idl-def-DeviceProximityEventInit">dictionary <span class="idlDictionaryID">DeviceProximityEventInit</span> : <span class="idlSuperclass"><a>EventInit</a></span> {
+<span class="idlMember"> <span class="idlMemberType"><a>double</a></span> <span class="idlMemberName"><a href="#widl-DeviceProximityEventInit-value">value</a></span>;</span>
+<span class="idlMember"> <span class="idlMemberType"><a>double</a></span> <span class="idlMemberName"><a href="#widl-DeviceProximityEventInit-min">min</a></span>;</span>
+<span class="idlMember"> <span class="idlMemberType"><a>double</a></span> <span class="idlMemberName"><a href="#widl-DeviceProximityEventInit-max">max</a></span>;</span>
+};</span></span></pre><div class="section" id="attributes-1"><h4><span class="secno">5.2.1 </span>Attributes</h4><dl class="attributes"><dt id="widl-DeviceProximityEvent-max"><code>max</code> of type <span class="idlAttrType"><a>double</a></span>, readonly</dt><dd>
+ The <a class="internalDFN" href="#dfn-maximum-sensing-distance">maximum sensing distance<strong></strong></a>.
+ </dd><dt id="widl-DeviceProximityEvent-min"><code>min</code> of type <span class="idlAttrType"><a>double</a></span>, readonly</dt><dd>
+ The <a class="internalDFN" href="#dfn-minimum-sensing-distance"> minimum sensing distance</a>.
+ </dd><dt id="widl-DeviceProximityEvent-value"><code>value</code> of type <span class="idlAttrType"><a>double</a></span>, readonly</dt><dd>
+ The <a class="internalDFN" href="#dfn-current-device-proximity">current device proximity</a>.
+ </dd></dl></div>
+ <div class="section" id="dictionary-deviceproximityeventinit-members"><h4><span class="secno">5.2.2 </span>Dictionary <a href="#idl-def-DeviceProximityEventInit" class="idlType"><code>DeviceProximityEventInit</code></a> Members</h4><dl class="dictionary-members"><dt id="widl-DeviceProximityEventInit-max"><code>max</code> of type <span class="idlMemberType"><a>double</a></span></dt><dd></dd><dt id="widl-DeviceProximityEventInit-min"><code>min</code> of type <span class="idlMemberType"><a>double</a></span></dt><dd></dd><dt id="widl-DeviceProximityEventInit-value"><code>value</code> of type <span class="idlMemberType"><a>double</a></span></dt><dd></dd></dl></div>
+ <p>
+ When a <dfn id="dfn-user-agent-1">user agent</dfn> is required to <dfn id="dfn-fire-a-device-proximity-event">fire a device
+ proximity event</dfn>, the <dfn id="dfn-user-agent-2">user agent</dfn> <em title="must" class="rfc2119">must</em> run the
+ following steps:
+ </p>
+ <ol class="rule">
+ <li>
+ <a>Create an event</a> that uses the <a class="idlType" href="#idl-def-DeviceProximityEvent"><code>DeviceProximityEvent</code></a>
+ interface, with the name <code>deviceproximity</code>, which
+ bubbles, is not cancelable, and has no default action, that also
+ meets the following conditions:
+ <ol>
+ <li>
+ If the implementation is unable to report the <a class="internalDFN" href="#dfn-current-device-proximity">current
+ device proximity</a>, initialize the <code>value</code>
+ attribute to positive Infinity, otherwise initialize the
+ attribute to the <a class="internalDFN" href="#dfn-current-device-proximity">current device proximity</a>.
+ </li>
+ <li>
+ If the implementation is unable to report the <a class="internalDFN" href="#dfn-minimum-sensing-distance">minimum
+ sensing distance</a>, initialize the <code>min</code>
+ attribute to negative Infinity, otherwise initialize the
+ attribute to the <a class="internalDFN" href="#dfn-minimum-sensing-distance">minimum sensing distance</a>.
+ </li>
+ <li>
+ If the implementation is unable to report the <a class="internalDFN" href="#dfn-maximum-sensing-distance">maximum
+ sensing distance</a>, initialize the <code>max</code>
+ attribute to positive Infinity, otherwise initialize the
+ attribute to the <a class="internalDFN" href="#dfn-maximum-sensing-distance">maximum sensing distance</a>.
+ </li>
+ </ol>
+ </li>
+ <li>
+ <a>Queue a task</a> to dispatch the newly created event at the
+ <a class="idlType" href="#idl-def-Window"><code>Window</code></a> object.
+ </li>
+ </ol>
+ <p>
+ When <a>the current proximity</a> changes, the <dfn id="dfn-user-agent-3">user
+ agent</dfn> <em title="must" class="rfc2119">must</em> <a class="internalDFN" href="#dfn-fire-a-device-proximity-event">fire a device proximity event</a>.
+ </p>
+ <div class="note"><div class="note-title"><span>Note</span></div><div class="">
+ The definition of granularity i.e. how often the event is fired is
+ left to the implementation. Implementations may fire the event if
+ they have reason to believe that the page does not have sufficiently
+ fresh data. Different devices may also support different minimum and
+ maximum sensing distances as well as different resolution, thus
+ authors are strongly advised to use the <a class="idlType" href="#idl-def-UserProximityEvent"><code>UserProximityEvent</code></a>
+ interface if the are only interested in finding out if the user is
+ near or far.
+ </div></div>
+ <div class="section" id="event-handlers">
+ <h4><span class="secno">5.2.3 </span>Event handlers</h4>
+ <p>
+ The following are the <a class="internalDFN" href="#dfn-event-handlers">event handlers</a> (and their corresponding
+ <a class="internalDFN" href="#dfn-event-handler-event-types">event handler event types</a>) that <em title="must" class="rfc2119">must</em> be supported as
+ attributes by the <code>Window</code> object:
+ </p>
+ <table class="simple">
+ <thead>
+ <tr>
+ <th>event handler</th>
+ <th>event handler event type</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><strong><code>ondeviceproximity</code></strong></td>
+ <td><code>deviceproximity</code></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+
+ <div class="section" id="user-proximity">
+ <!--OddPage--><h2><span class="secno">6. </span>User proximity</h2>
+ <p>
+ The HTML5 specification [<cite><a href="#bib-HTML5" class="bibref">HTML5</a></cite>] defines a <a class="idlType" href="#idl-def-Window"><code>Window</code></a> interface,
+ which this specification extends:
+ </p>
+ <pre class="idl"><span class="idlInterface" id="idl-def-Window-1">partial interface <span class="idlInterfaceID">Window</span> {
+<span class="idlAttribute"> attribute <span class="idlAttrType"><a>EventHandler</a></span> <span class="idlAttrName"><a href="#widl-Window-onuserproximity">onuserproximity</a></span>;</span>
+};</span></pre><div class="section" id="attributes-2"><h3><span class="secno">6.1 </span>Attributes</h3><dl class="attributes"><dt id="widl-Window-onuserproximity"><code>onuserproximity</code> of type <span class="idlAttrType"><a>EventHandler</a></span></dt><dd>
+ </dd></dl></div>
+ <p>
+ The <code>onuserproximity</code> event handler and its corresponding
+ event handler event type <code>userproximity</code> <em title="must" class="rfc2119">must</em> be supported
+ as an IDL attribute by all objects implementing the <a class="idlType" href="#idl-def-Window"><code>Window</code></a>
+ interface.
+ </p>
+ <div class="section" id="userproximityevent-interface">
+ <h3><span class="secno">6.2 </span><a class="idlType" href="#idl-def-UserProximityEvent"><code>UserProximityEvent</code></a> Interface</h3>
+ <pre class="idl"><span class="idlInterface" id="idl-def-UserProximityEvent">[<span class="extAttr">Constructor (DOMString type, optional UserProximityEventInit eventInitDict)</span>]
+interface <span class="idlInterfaceID">UserProximityEvent</span> : <span class="idlSuperclass"><a>Event</a></span> {
+<span class="idlAttribute"> readonly attribute <span class="idlAttrType"><a>boolean</a></span> <span class="idlAttrName"><a href="#widl-UserProximityEvent-near">near</a></span>;</span>
+};<br><span class="idlDictionary" id="idl-def-UserProximityEventInit">dictionary <span class="idlDictionaryID">UserProximityEventInit</span> : <span class="idlSuperclass"><a>EventInit</a></span> {
+<span class="idlMember"> <span class="idlMemberType"><a>boolean</a></span> <span class="idlMemberName"><a href="#widl-UserProximityEventInit-near">near</a></span>;</span>
+};</span></span></pre><div class="section" id="attributes-3"><h4><span class="secno">6.2.1 </span>Attributes</h4><dl class="attributes"><dt id="widl-UserProximityEvent-near"><code>near</code> of type <span class="idlAttrType"><a>boolean</a></span>, readonly</dt><dd>
+ The <a class="internalDFN" href="#dfn-current-user-proximity-state">current user proximity state</a>.
+ </dd></dl></div>
+ <div class="section" id="dictionary-userproximityeventinit-members"><h4><span class="secno">6.2.2 </span>Dictionary <a href="#idl-def-UserProximityEventInit" class="idlType"><code>UserProximityEventInit</code></a> Members</h4><dl class="dictionary-members"><dt id="widl-UserProximityEventInit-near"><code>near</code> of type <span class="idlMemberType"><a>boolean</a></span></dt><dd></dd></dl></div>
+ <p>
+ When a <dfn id="dfn-user-agent-4">user agent</dfn> is required to <dfn id="dfn-fire-a-user-proximity-event">fire a user
+ proximity event</dfn>, the <dfn id="dfn-user-agent-5">user agent</dfn> <em title="must" class="rfc2119">must</em> run the
+ following steps:
+ </p>
+ <ol class="rule">
+ <li>
+ <a>Create an event</a> that uses the <a class="idlType" href="#idl-def-UserProximityEvent"><code>UserProximityEvent</code></a>
+ interface, with the name <code>userproximity</code>, which bubbles,
+ is not cancelable, and has no default action, that also meets the
+ following conditions:
+ <ol>
+ <li>
+ If the implementation is unable to report the <a class="internalDFN" href="#dfn-current-user-proximity-state">current user
+ proximity state</a>, initialize the <code>near</code> attribute
+ to false, otherwise initialize the attribute to the <a class="internalDFN" href="#dfn-current-user-proximity-state">current
+ user proximity state</a>.
+ </li>
+ </ol>
+ </li>
+ <li>
+ <a>Queue a task</a> to dispatch the newly created event at the
+ <a class="idlType" href="#idl-def-Window"><code>Window</code></a> object.
+ </li>
+ </ol>
+ <p>
+ When the <a class="internalDFN" href="#dfn-current-user-proximity-state">current user proximity state</a> changes, the <dfn id="dfn-user-agent-6">user
+ agent</dfn> <em title="must" class="rfc2119">must</em> <a class="internalDFN" href="#dfn-fire-a-user-proximity-event">fire a user proximity event</a>.
+ </p>
+ <div class="section" id="event-handlers-1">
+ <h4><span class="secno">6.2.3 </span>Event handlers</h4>
+ <p>
+ The following are the <a class="internalDFN" href="#dfn-event-handlers">event handlers</a> (and their corresponding
+ <a class="internalDFN" href="#dfn-event-handler-event-types">event handler event types</a>) that <em title="must" class="rfc2119">must</em> be supported as
+ attributes by the <code>Window</code> object:
+ </p>
+ <table class="simple">
+ <thead>
+ <tr>
+ <th>event handler</th>
+ <th>event handler event type</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><strong><code>onuserproximity</code></strong></td>
+ <td><code>userproximity</code></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+
+ <div id="acknowledgements" class="appendix section">
+ <!--OddPage--><h2><span class="secno">A. </span>Acknowledgements</h2>
+ <p>
+ Doug Turner for the initial prototype. All Device APIs working group
+ participants who have sent helpful feedback. Marcos Caceres for his
+ excellent work on the test suite.
+ </p>
+ </div>
+
+
+<div class="appendix section" id="references"><!--OddPage--><h2><span class="secno">B. </span>References</h2><div class="section" id="normative-references"><h3><span class="secno">B.1 </span>Normative references</h3><dl class="bibliography"><dt id="bib-DOM4">[DOM4]</dt><dd>Anne van Kesteren; Aryeh Gregor; Ms2ger. <a href="http://www.w3.org/TR/dom/"><cite>DOM4.</cite></a> 5 April 2012. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/dom/">http://www.w3.org/TR/dom/</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> 25 May 2011. 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-RFC2119">[RFC2119]</dt><dd>S. Bradner. <a href="http://www.ietf.org/rfc/rfc2119.txt"><cite>Key words for use in RFCs to Indicate Requirement Levels.</cite></a> March 1997. Internet RFC 2119. URL: <a href="http://www.ietf.org/rfc/rfc2119.txt">http://www.ietf.org/rfc/rfc2119.txt</a>
+</dd></dl></div><div class="section" id="informative-references"><h3><span class="secno">B.2 </span>Informative references</h3><p>No informative references.</p></div></div></body></html>
\ No newline at end of file