48 lines
1.0 KiB
JavaScript
48 lines
1.0 KiB
JavaScript
/*global define*/
|
||
define(
|
||
function()
|
||
{
|
||
var tests = {
|
||
'canvas': { required: true, test: function(){ return !! document.createElement('canvas').getContext; } },
|
||
'query-selector-all': { required: false, test: function(){ return !! document.querySelectorAll; } },
|
||
'drag-drop': { required: false, test: function(){ return 'draggable' in document.createElement('span'); } },
|
||
'file-api': { required: false, test: function(){ return typeof FileReader !== 'undefined'; } }
|
||
};
|
||
|
||
function test( success, error )
|
||
{
|
||
var required_supported = true;
|
||
var results = { };
|
||
var required_features_missing = [ ];
|
||
|
||
for ( var key in tests )
|
||
{
|
||
var result = tests[key].test();
|
||
|
||
if ( ! result )
|
||
{
|
||
if ( tests[key].required )
|
||
{
|
||
required_supported = false;
|
||
|
||
required_features_missing.push( key );
|
||
}
|
||
}
|
||
|
||
results[key] = result;
|
||
}
|
||
|
||
if ( required_supported )
|
||
{
|
||
success( results );
|
||
}
|
||
|
||
else
|
||
{
|
||
error( required_features_missing, results );
|
||
}
|
||
}
|
||
|
||
return test;
|
||
}
|
||
); |