blob: 1401328edeb8239e1819c7307489c6a63ef2e2f9 [file] [log] [blame]
<!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>