summaryrefslogtreecommitdiffstats
path: root/chrome/browser/debugger
diff options
context:
space:
mode:
authoryurys@chromium.org <yurys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-30 11:37:05 +0000
committeryurys@chromium.org <yurys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-30 11:37:05 +0000
commit3c1ce942d28d89ecc25938f6e79b80e002f5bfa6 (patch)
tree25c7455051c7b6267a4e474d977c9e4e92d4661e /chrome/browser/debugger
parent9e2dc98e280a4eaaeb7ad07acc89633816c776fb (diff)
downloadchromium_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')
-rw-r--r--chrome/browser/debugger/manual_tests/debugger-fake-workers.html102
-rw-r--r--chrome/browser/debugger/manual_tests/resources/primes.js13
-rw-r--r--chrome/browser/debugger/manual_tests/resources/worker-primes.js10
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)]);
+}