Home | History | Annotate | Download | only in manual_tests
      1 <html>
      2 <body onload="onLoad()">
      3 <script>
      4 
      5 function log(message) {
      6   var div = document.createElement('div');
      7   div.innerText = message;
      8   document.getElementById('console').appendChild(div);
      9 }
     10 
     11 function strike(id) {
     12   document.getElementById(id).style.textDecoration = "line-through"
     13 }
     14 
     15 function onLoad() {
     16   if (!Worker.prototype.postMessage) { // fake workers
     17       strike('s1');
     18       strike('s2');
     19       log('[using fake workers]');
     20   } else {
     21       log('[using real workers]');
     22   }
     23 }
     24 
     25 var primeWorker;
     26 var invalidWorker;
     27 var count;
     28 var timer;
     29 
     30 function startWorkers() {
     31   startButton.disabled = true;
     32 
     33   primeWorker = new Worker('resources/worker-primes.js');                         	
     34   primeWorker.onmessage = onMessage;
     35   primeWorker.onerror = onError;
     36   primeWorker.postMessage(2);
     37   count = 3;
     38 
     39   timer = setInterval(onTimer, 1000);
     40   try {
     41     invalidWorker = new Worker('non-existent-worker.js');
     42   } catch(e) {
     43   }
     44   log('Started worker');
     45 }
     46 
     47 function onTimer() {
     48   primeWorker.postMessage(count);
     49   count+=2;
     50 }
     51 
     52 function onMessage(event) {
     53   if (event.data[1]) {
     54     log(event.data[0]);
     55     if (event.data[0] === 5)
     56       strike('s6');
     57   }
     58 }
     59 
     60 function onError(event) {
     61   log('Error in worker: ' + event.message);
     62   strike('s8');
     63 }
     64 
     65 function causeError() {
     66   primeWorker.postMessage('forty two');
     67 }
     68 
     69 function stopWorker() {
     70   log('Stopping worker...');
     71   if (timer) {
     72     clearInterval(timer);
     73     timer = 0;
     74   }
     75   primeWorker.terminate();
     76   startButton.disabled = false;
     77 }
     78 
     79 </script>
     80 
     81 <h1>Tests debugging of HTML5 Workers</h1>
     82 
     83 <ol>
     84 
     85 <li id="s1">Open DevTools, Scripts Panel; Tick Debug on Workers sidebar.</li>
     86 <li id="s2">Reload the page.</li>
     87 <li id="s3"><button onclick="startWorkers()" id="startButton">Start Worker</button></li>
     88 <li id="s4">Observe 2 workers appear in the worker sidebar pane (including non-existent-worker.js)"</li>
     89 <li id="s5">Observe worker-primes.js and primes.js appear in scripts drop-down box.</li>
     90 <li id="s6">Assure primes are being logged to test console below.</li>
     91 <li id="s7">Set a breakpoint on one of worker scripts, assure it's hit.</li>
     92 <li id="s8">Try causing an error in worker, observe it's logged in DevTools console and in test console below.
     93   <button onclick="causeError()">Cause Error</button>
     94 <li id="s9"><button onclick="stopWorker()">Stop Worker</button></li>
     95 
     96 </ol>
     97 
     98 <div id="console" style="font-family: courier; background-color: black; color: green; width: 80em; height: 25em; overflow: scroll">
     99 </div>
    100 
    101 </body>
    102 </html>
    103