| <!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> |