- From: Tran, Dzung D <dzung.d.tran@intel.com>
 - Date: Tue, 20 Oct 2009 20:24:37 -0700
 - To: "public-device-apis@w3.org" <public-device-apis@w3.org>
 
Hello all,
Following Robin's advice to put some concrete APIs on paper, so I gave it a stab: 
http://dev.w3.org/2009/dap/system-info/Overview.html
Also some thinking around about extensibility and how implement for known capabilities versus unknown future capabilities.
A) use concrete APIs for well known existing capabilities
B) have a 'sequence' of objects defined that have extension capabilities. This allows future apps to find them and make use of them *between&* major revisions of the specification. These extensions can be brought into the specification at major revisions and they will then become concrete APIs.
Example interfaces:
interface CapabilityExtensions : Object {
    readonly attribute sequence DAPExtension Cap;
};
interface EventExtenstions : Object {
    readonly attribute sequence DAPExtension events;
};
interface DAPExtension: Object {
    readonly attribute DOMString name;
    readonly attribute DOMString vendor;
    readonly attribute DOMString version;
    attribute Object extOb;
};
Javascript to find / use an extension capability:
var futureExt;
for(var x = 0; x < device.capabilityExtensions.length; x++){
  currExt = device.capabilityExtensions[x];
  if(currExt.name == "cool new capability"){
    futureExt = device.capabilityExtensions[x];
  }
}
if(futureExt === undefined){
  /* extention not available */
}
else{
  /* use it based on vendor specification*/
  futureExt.XYZApi()
}
Received on Wednesday, 21 October 2009 03:25:24 UTC