El método estático getCapabilities() de la clase CapabilitiesGrabber añade cada propiedad de la clase flash.system.Capabilities a un conjunto (capDP). Después llama al método estático getBrowserObjects() de la clase CapabilitiesGrabber. El método getBrowserObjects() utiliza la API externa para recorrer el objeto navigator del navegador, que contiene las características del navegador. El código del método getCapabilities() es:
public static function getCapabilities():Array
{
var capDP:Array = new Array();
capDP.push({name:"Capabilities.avHardwareDisable", value:Capabilities.avHardwareDisable});
capDP.push({name:"Capabilities.hasAccessibility", value:Capabilities.hasAccessibility});
capDP.push({name:"Capabilities.hasAudio", value:Capabilities.hasAudio});
...
capDP.push({name:"Capabilities.version", value:Capabilities.version});
var navArr:Array = CapabilitiesGrabber.getBrowserObjects();
if (navArr.length > 0)
{
capDP = capDP.concat(navArr);
}
capDP.sortOn("name", Array.CASEINSENSITIVE);
return capDP;
}
El método getBrowserObjects() devuelve un conjunto que contiene cada una de las propiedades del objeto navigator del navegador. Si este conjunto tiene una longitud de uno o más elementos, el conjunto de características del navegador (navArr) se añade a la matriz de características de Flash Player (capDP) y se ordena alfabéticamente el conjunto completo. Por último, el conjunto ordenado se devuelve al archivo de aplicación principal, que llena a continuación la cuadrícula de datos. El código del método getBrowserObjects() es el siguiente:
private static function getBrowserObjects():Array
{
var itemArr:Array = new Array();
var itemVars:URLVariables;
if (ExternalInterface.available)
{
try
{
var tempStr:String = ExternalInterface.call("JS_getBrowserObjects");
itemVars = new URLVariables(tempStr);
for (var i:String in itemVars)
{
itemArr.push({name:i, value:itemVars[i]});
}
}
catch (error:SecurityError)
{
// ignore
}
}
return itemArr;
}
Si la API externa está disponible en el entorno de usuario actual, el motor de ejecución de Flash llama al método JS_getBrowserObjects() de JavaScript, que recorre el objeto navigator del navegador y devuelve a ActionScript una cadena de valores codificados en URL. Esta cadena se convierte en un objeto URLVariables (itemVars) y se añade al conjunto itemArr, que se devuelve al script que hizo la llamada.