welsonjs/node_modules/modernizr/feature-detects/workers/dataworkers.js

49 lines
1.2 KiB
JavaScript

/*!
{
"name": "Workers from Data URIs",
"property": "dataworkers",
"tags": ["performance", "workers"],
"builderAliases": ["workers_dataworkers"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/workers/"
}],
"knownBugs": ["This test may output garbage to console."],
"authors": ["Jussi Kalliokoski"],
"async": true
}
!*/
/* DOC
Detects support for creating Web Workers from Data URIs.
*/
define(['Modernizr', 'addTest'], function(Modernizr, addTest) {
Modernizr.addAsyncTest(function() {
try {
var data = 'Modernizr',
worker = new Worker('data:text/javascript;base64,dGhpcy5vbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7cG9zdE1lc3NhZ2UoZS5kYXRhKX0=');
worker.onmessage = function(e) {
worker.terminate();
addTest('dataworkers', data === e.data);
worker = null;
};
// Just in case...
worker.onerror = function() {
addTest('dataworkers', false);
worker = null;
};
setTimeout(function() {
addTest('dataworkers', false);
}, 200);
worker.postMessage(data);
} catch (e) {
setTimeout(function() {
addTest('dataworkers', false);
}, 0);
}
});
});