diff options
author | yurys@chromium.org <yurys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-30 11:37:05 +0000 |
---|---|---|
committer | yurys@chromium.org <yurys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-30 11:37:05 +0000 |
commit | 3c1ce942d28d89ecc25938f6e79b80e002f5bfa6 (patch) | |
tree | 25c7455051c7b6267a4e474d977c9e4e92d4661e /chrome/browser/debugger | |
parent | 9e2dc98e280a4eaaeb7ad07acc89633816c776fb (diff) | |
download | chromium_src-3c1ce942d28d89ecc25938f6e79b80e002f5bfa6.zip chromium_src-3c1ce942d28d89ecc25938f6e79b80e002f5bfa6.tar.gz chromium_src-3c1ce942d28d89ecc25938f6e79b80e002f5bfa6.tar.bz2 |
Manual test for debugging workers in Dev Tools. Original patch by caseq: http://codereview.chromium.org/1731019
TBR=pfeldman
Review URL: http://codereview.chromium.org/1758019
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@46062 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/debugger')
3 files changed, 125 insertions, 0 deletions
diff --git a/chrome/browser/debugger/manual_tests/debugger-fake-workers.html b/chrome/browser/debugger/manual_tests/debugger-fake-workers.html new file mode 100644 index 0000000..6a7cb03 --- /dev/null +++ b/chrome/browser/debugger/manual_tests/debugger-fake-workers.html @@ -0,0 +1,102 @@ +<html> +<body onload="onLoad()"> +<script> + +function log(message) { + var div = document.createElement('div'); + div.innerText = message; + document.getElementById('console').appendChild(div); +} + +function strike(id) { + document.getElementById(id).style.textDecoration = "line-through" +} + +function onLoad() { + if (!Worker.prototype.postMessage) { // fake workers + strike('s1'); + strike('s2'); + log('[using fake workers]'); + } else { + log('[using real workers]'); + } +} + +var primeWorker; +var invalidWorker; +var count; +var timer; + +function startWorkers() { + startButton.disabled = true; + + primeWorker = new Worker('resources/worker-primes.js'); + primeWorker.onmessage = onMessage; + primeWorker.onerror = onError; + primeWorker.postMessage(2); + count = 3; + + timer = setInterval(onTimer, 1000); + try { + invalidWorker = new Worker('non-existent-worker.js'); + } catch(e) { + } + log('Started worker'); +} + +function onTimer() { + primeWorker.postMessage(count); + count+=2; +} + +function onMessage(event) { + if (event.data[1]) { + log(event.data[0]); + if (event.data[0] === 5) + strike('s6'); + } +} + +function onError(event) { + log('Error in worker: ' + event.message); + strike('s8'); +} + +function causeError() { + primeWorker.postMessage('forty two'); +} + +function stopWorker() { + log('Stopping worker...'); + if (timer) { + clearInterval(timer); + timer = 0; + } + primeWorker.terminate(); + startButton.disabled = false; +} + +</script> + +<h1>Tests debugging of HTML5 Workers</h1> + +<ol> + +<li id="s1">Open DevTools, Scripts Panel; Tick Debug on Workers sidebar.</li> +<li id="s2">Reload the page.</li> +<li id="s3"><button onclick="startWorkers()" id="startButton">Start Worker</button></li> +<li id="s4">Observe 2 workers appear in the worker sidebar pane (including non-existent-worker.js)"</li> +<li id="s5">Observe worker-primes.js and primes.js appear in scripts drop-down box.</li> +<li id="s6">Assure primes are being logged to test console below.</li> +<li id="s7">Set a breakpoint on one of worker scripts, assure it's hit.</li> +<li id="s8">Try causing an error in worker, observe it's logged in DevTools console and in test console below. + <button onclick="causeError()">Cause Error</button> +<li id="s9"><button onclick="stopWorker()">Stop Worker</button></li> + +</ol> + +<div id="console" style="font-family: courier; background-color: black; color: green; width: 80em; height: 25em; overflow: scroll"> +</div> + +</body> +</html> diff --git a/chrome/browser/debugger/manual_tests/resources/primes.js b/chrome/browser/debugger/manual_tests/resources/primes.js new file mode 100644 index 0000000..64d38dc --- /dev/null +++ b/chrome/browser/debugger/manual_tests/resources/primes.js @@ -0,0 +1,13 @@ +function Primes() { + this.primes_ = {}; +} + +Primes.prototype.test = function(p) { + for (var divisor in this.primes_) { + if (p % divisor === 0) return false; + if (divisor * divisor > p) + break; + } + this.primes_[p] = 1; + return true; +} diff --git a/chrome/browser/debugger/manual_tests/resources/worker-primes.js b/chrome/browser/debugger/manual_tests/resources/worker-primes.js new file mode 100644 index 0000000..8be021f --- /dev/null +++ b/chrome/browser/debugger/manual_tests/resources/worker-primes.js @@ -0,0 +1,10 @@ +importScripts('primes.js'); + +var primes = new Primes(); + +onmessage = function(event) { + var p = event.data; + if (p != parseInt(p)) + throw 'invalid argument'; + postMessage([p, primes.test(p)]); +} |