|
|
|
define([
|
|
|
|
'jquery',
|
|
|
|
'/common/common-util.js',
|
|
|
|
'/checkup/checkup-tools.js',
|
|
|
|
|
|
|
|
'/bower_components/tweetnacl/nacl-fast.min.js',
|
|
|
|
'css!/bower_components/components-font-awesome/css/font-awesome.min.css',
|
|
|
|
'less!/checkup/app-checkup.less',
|
|
|
|
], function ($, Util, Tools) {
|
|
|
|
var postMessage = function (content) {
|
|
|
|
window.parent.postMessage(JSON.stringify(content), '*');
|
|
|
|
};
|
|
|
|
postMessage({ command: "READY", });
|
|
|
|
var getHeaders = function (url, cb) { // XXX reuse XHR objects?
|
|
|
|
Tools.common_xhr(url, function (xhr) {
|
|
|
|
var allHeaders = xhr.getAllResponseHeaders();
|
|
|
|
return void cb(void 0, allHeaders, xhr);
|
|
|
|
});
|
|
|
|
};
|
|
|
|
var COMMANDS = {};
|
|
|
|
COMMANDS.GET_HEADER = function (content, cb) {
|
|
|
|
var url = content.url;
|
|
|
|
getHeaders(url, function (err, headers, xhr) {
|
|
|
|
cb(xhr.getResponseHeader(content.header));
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
COMMANDS.CHECK_JS_APIS = function (content, cb) {
|
|
|
|
var globalAPIs = content['globals'] || [];
|
|
|
|
var response = {};
|
|
|
|
globalAPIs.forEach(function (key) {
|
|
|
|
if (Array.isArray(key)) {
|
|
|
|
response[key.join('.')] = Boolean(Util.find(window, key));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
response[key] = Boolean(window[key]);
|
|
|
|
});
|
|
|
|
cb(response);
|
|
|
|
};
|
|
|
|
|
|
|
|
COMMANDS.FANCY_API_CHECKS = function (content, cb) {
|
|
|
|
cb({
|
|
|
|
SharedArrayBufferFallback: Tools.supportsSharedArrayBuffers(),
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
COMMANDS.CHECK_HTTP_STATUS = function (content, cb) {
|
|
|
|
Tools.common_xhr(content.url, function (xhr) {
|
|
|
|
cb(xhr.status);
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
window.addEventListener("message", function (event) {
|
|
|
|
var txid, command;
|
|
|
|
if (event && event.data) {
|
|
|
|
try {
|
|
|
|
//console.log(JSON.parse(event.data));
|
|
|
|
var msg = JSON.parse(event.data);
|
|
|
|
command = msg.command;
|
|
|
|
txid = msg.txid;
|
|
|
|
if (!txid) { return; }
|
|
|
|
COMMANDS[command](msg.content, function (response) {
|
|
|
|
// postMessage with same txid
|
|
|
|
postMessage({
|
|
|
|
txid: txid,
|
|
|
|
content: response,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
} catch (err) {
|
|
|
|
postMessage({
|
|
|
|
txid: txid,
|
|
|
|
content: err,
|
|
|
|
});
|
|
|
|
console.error(err, command);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
console.error(event);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|