- From: Anssi Kostiainen via cvs-syncmail <cvsmail@w3.org>
- Date: Tue, 23 Aug 2011 10:56:41 +0000
- To: public-dap-commits@w3.org
Update of /sources/public/2009/dap/system-info In directory hutz:/tmp/cvs-serv5810 Modified Files: battery-status.html Log Message: add status attribute, battery{low|critical|ok} event types Index: battery-status.html =================================================================== RCS file: /sources/public/2009/dap/system-info/battery-status.html,v retrieving revision 1.34 retrieving revision 1.35 diff -u -d -r1.34 -r1.35 --- battery-status.html 23 Aug 2011 07:30:38 -0000 1.34 +++ battery-status.html 23 Aug 2011 10:56:39 -0000 1.35 @@ -139,10 +139,11 @@ This is an example of poor resource management. </p> <p> - Using the <a>BatteryStatusEvent</a> interface, the web application is, - for example, able to throttle checking for emails if the device is low - on battery and stop checking for emails if the battery is critically - low: + Using the <a>batterylow</a>, <a>batterycritical</a> and + <a>batteryok</a> events, the web application is, for example, able to + throttle checking for emails if the device is low on battery, stop + checking for emails if the battery is critically low and resume + normal operation when the battery status is OK: </p> <pre class='example sh_javascript'> <!DOCTYPE html> @@ -173,13 +174,6 @@ mail.setTimer(!mail.interval ? mail.INTERVAL_DEFAULT : mail.interval); }, false); - window.addEventListener('batterystatus', function (battery) { - if (battery.isPlugged && (mail.interval !== mail.INTERVAL_DEFAULT)) { - mail.setTimer(mail.INTERVAL_DEFAULT); - console.log('Plugged in, checking the server normally.'); - } - }, false); - window.addEventListener('batterylow', function () { mail.setTimer(mail.INTERVAL_BATTERY_LOW); console.log('Low battery, checking the server less frequently.'); @@ -189,6 +183,11 @@ mail.setTimer(null); console.log('Critically low battery, stopped checking the server.'); }, false); + + window.addEventListener('batteryok', function () { + mail.setTimer(mail.INTERVAL_DEFAULT); + console.log('Battery ok, checking the server normally.'); + }, false); </script> </head> <body></body> @@ -207,8 +206,8 @@ <section> <h2><a>BatteryStatusEvent</a> Interface</h2> <p> - This interface defines the <a>batterystatus</a>, <a>batterylow</a> and - <a>batterycritical</a> event types. + This interface defines the <a>batterystatus</a>, <a>batterylow</a>, + <a>batterycritical</a> and <a>batteryok</a> event types. <dl title='interface BatteryStatusEvent : Event' class='idl'> <dt>readonly attribute boolean isPlugged</dt> @@ -227,6 +226,19 @@ battery's level, then <code>level</code> MUST be set to <code>null</code>. </dd> + <dt>readonly attribute string? status</dt> + <dd> + One of <code>critical</code>, <code>low</code>, <code>ok</code> + or <code>null</code>. + Represents how much of the internal power source remains, + scaled from <code>critical</code> to <code>ok</code>. The + definitions of <code>critical</code>, <code>low</code>, and + <code>ok</code> mirror the definitions of + <a>batterycritical</a>, <a>batterylow</a> and <a>batteryok</a> + events respectively. If the implementation is unable to + report battery's level, then status MUST be set to + <code>null</code>. + </dd> <dt>void initBatteryStatusEvent ()</dt> <dd> Initializes a <a>BatteryStatusEvent</a> created @@ -238,21 +250,23 @@ <dt>boolean cancelable</dt><dd></dd> <dt>boolean isPlugged</dt><dd></dd> <dt>float? level</dt><dd></dd> + <dt>float? status</dt><dd></dd> </dl> </dd> </dl> <p> - The <a>batterystatus</a>, <a>batterylow</a> and <a>batterycritical</a> - event types MUST be available when the script's global object - [[!HTML5]] is either a <code>Window</code> object or an object - implementing the <code>WorkerUtils</code> interface [[!WEBWORKERS]]. + The <a>batterystatus</a>, <a>batterylow</a>, <a>batterycritical</a> + and <a>batteryok</a> event types MUST be available when the + script's global object [[!HTML5]] is either a <code>Window</code> + object or an object implementing the <code>WorkerUtils</code> + interface [[!WEBWORKERS]]. </p> <p> The <code>initBatteryStatusEvent()</code> method MUST initialize the event in a manner analogous to the <code>initEvent()</code> method in - [[!DOM-LEVEL-3-EVENTS]]. The <code>isPlugged</code> and - <code>level</code> arguments MUST initialize the attributes with the - same names. + [[!DOM-LEVEL-3-EVENTS]]. The <code>isPlugged</code>, <code>level</code> + and <code>status</code> arguments MUST initialize the attributes with + the same names. </p> <section> @@ -269,7 +283,10 @@ <code>isPlugged</code> changes its value, or </li> <li> - <code>level</code> changes by at least 1 + <code>level</code> changes by at least 1, or + </li> + <li> + <code>status</code> changes its value </li> </ul> <p> @@ -339,6 +356,10 @@ <p> The definition of a low battery condition is left to the implementation. + <p> + The condition corresponds to the value of <code>low</code> of + the <code>status</code> attribute on the <a>BatteryStatusEvent</a> + interface. </p> <table class='event-type-battery'> <tr> @@ -402,6 +423,11 @@ than in the low battery condition. Otherwise, the definition of a critically low battery condition is left to the implementation. </p> + <p> + The condition corresponds to the value of <code>critical</code> of + the <code>status</code> attribute on the <a>BatteryStatusEvent</a> + interface. + </p> <table class='event-type-battery'> <tr> <th>Type</th> @@ -441,6 +467,68 @@ </tr> </table> </section> + + <section> + <h3 id='event-batteryok'>The <dfn class='event'>batteryok</dfn> + event</h3> + <p> + The <a class="product-ua" href="#ua">user agent</a> MUST dispatch + this event type on the <code>Window</code> [[!HTML5]] and + <code>WorkerGlobalScope</code> [[!WEBWORKERS]] objects when a change + in the battery status of the hosting device occurs as follows: + </p> + <ul> + <li> + the battery is plugged in, and + </li> + <li> + the battery is being charged or is at its full capacity + </li> + </ul> + <p> + The condition corresponds to the value of <code>ok</code> of the + <code>status</code> attribute on the <a>BatteryStatusEvent</a> + interface. + </p> + <table class='event-type-battery'> + <tr> + <th>Type</th> + <td> + <code>batteryok</code> + </td> + </tr> + <tr> + <th>Interface</th> + <td> + <a>BatteryStatusEvent</a> if generated by the user agent, + <code>Event</code> otherwise. + </td> + </tr> + <tr> + <th>Sync / Async</th> + <td>Async</td></tr> + <tr> + <th>Bubbles</th> + <td>No</td> + </tr> + <tr> + <th>Target</th> + <td><code>defaultView</code></td> + </tr> + <tr> + <th>Cancelable</th> + <td>No</td> + </tr> + <tr> + <th>Default action</th> + <td>none</td> + </tr> + <tr> + <th>Context info</th> + <td><code>Event.target: defaultView</code></td> + </tr> + </table> + </section> </section> <section class='informative'> @@ -491,8 +579,21 @@ </pre> </div> <p> + Register to receive a <a>BatteryStatusEvent</a> event when the + battery is plugged in, and the battery is being charged or is + at its full capacity: + </p> + <div class='example'> + <pre class='example sh_javascript'> + window.addEventListener('batteryok', function () { + console.log('The battery is ok.'); + }, true); + </pre> + </div> + <p> The following example updates the indicators to show whether or not - the device is plugged in and what is the current battery level: + the device is plugged in and what is the current battery level and + status: </p> <div class='example'> <pre class='example sh_javascript'> @@ -504,12 +605,14 @@ window.addEventListener('batterystatus', function (battery) { document.querySelector('#plugged').textContent = battery.isPlugged ? 'plugged' : 'not plugged'; document.querySelector('#level').textContent = battery.level; + document.querySelector('#status').textContent = battery.status; }, false); </script> </head> <body> <div id="plugged">(plugged state unknown)</div> <div id="level">(battery level unknown)</div> + <div id="status">(battery status unknown)</div> </body> </html> </pre>
Received on Tuesday, 23 August 2011 10:56:46 UTC