1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
<!doctype html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Custom messaging proxy test</title>
</head>
<body>
<div>
<canvas id="canvas"></canvas>
</div>
<textarea id="output" rows="8"></textarea>
<script type="text/javascript">
var WebGLCLient;
function sendResult(success) {
if (window.sentTestResult) return;
window.sentTestResult = true;
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://localhost:8888/report_result?' + (success ? 1 : 0));
xhr.send();
setTimeout(function() { window.close() }, 1000);
}
var Module = {
print: (function() {
var element = document.getElementById('output');
if (element) element.value = ''; // clear browser cache
return function(text) {
console.log(text);
if (element) {
element.value += text + "\n";
element.scrollTop = element.scrollHeight; // focus on bottom
}
};
})(),
printErr: function(text) {
if (arguments.length > 1) text = Array.prototype.slice.call(arguments).join(' ');
if (0) { // XXX disabled for safety typeof dump == 'function') {
dump(text + '\n'); // fast, straight to the real console
} else {
console.error(text);
}
},
canvas: (function() {
var canvas = document.getElementById('canvas');
// As a default initial behavior, pop up an alert when webgl context is lost. To make your
// application robust, you may want to override this behavior before shipping!
// See http://www.khronos.org/registry/webgl/specs/latest/1.0/#5.15.2
canvas.addEventListener("webglcontextlost", function(e) { alert('WebGL context lost. You will need to reload the page.'); e.preventDefault(); }, false);
return canvas;
})(),
onCustomMessage: function(message) {
var data = message.data.userData;
switch (data.op) {
case 'runningMain': {
Module.print('runningMain with data: ' + data.data);
if (data.data !== '[preMain]') {
sendResult(false);
}
break;
}
case 'fromMain': {
postCustomMessage({ op: 'finish' });
break;
}
case 'finishing': {
Module.print('terminating with data: ' + data.data);
sendResult(data.data === '[preMain][main][postMain][finish]');
break;
}
default: {
Module.print('unknown custom message');
sendResult(false);
}
}
}
};
</script>
{{{ SCRIPT }}}
<script type="text/javascript">
postCustomMessage({ op: 'postMainCustomMessage', data: '[postMain]' });
postCustomMessage({ op: 'preMainCustomMessage', data: '[preMain]' }, { preMain: true });
postCustomMessage({ op: 'runMain' }, { preMain: true });
</script>
</body>
</html>
|