| OLD | NEW |
| (Empty) | |
| 1 <html> |
| 2 <head> |
| 3 <script type="text/javascript" src="../../http/tests/inspector-protocol/inspecto
r-protocol-test.js"></script> |
| 4 <script> |
| 5 |
| 6 var worker; |
| 7 var onMessageCallbacks = {}; |
| 8 |
| 9 function startWorker(callback) |
| 10 { |
| 11 worker = new Worker("../resources/worker-console-worker.js"); |
| 12 worker.onmessage = function(event) { |
| 13 worker.onmessage = onMessageFromWorker; |
| 14 if (callback) |
| 15 callback(); |
| 16 }; |
| 17 } |
| 18 |
| 19 function logInWorkerFromPage(message, callback) |
| 20 { |
| 21 onMessageCallbacks[message] = callback; |
| 22 worker.postMessage(message); |
| 23 } |
| 24 |
| 25 function onMessageFromWorker(event) |
| 26 { |
| 27 var callback = onMessageCallbacks[event.data]; |
| 28 delete onMessageCallbacks[event.data]; |
| 29 if (callback) |
| 30 callback(); |
| 31 } |
| 32 |
| 33 function stopWorker() |
| 34 { |
| 35 worker.terminate(); |
| 36 worker = null; |
| 37 } |
| 38 |
| 39 function test() |
| 40 { |
| 41 var workerEventHandler = []; |
| 42 InspectorTest.eventHandler["Console.messageAdded"] = onConsoleMessage.bind(n
ull, false); |
| 43 InspectorTest.eventHandler["Worker.workerCreated"] = onWorkerCreated; |
| 44 InspectorTest.eventHandler["Worker.dispatchMessageFromWorker"] = onWorkerMes
sage; |
| 45 workerEventHandler["Console.messageAdded"] = onConsoleMessage.bind(null, tru
e); |
| 46 |
| 47 var workerId; |
| 48 |
| 49 function onWorkerCreated(payload) |
| 50 { |
| 51 InspectorTest.log("Worker.created"); |
| 52 workerId = payload.params.workerId; |
| 53 } |
| 54 |
| 55 var requestId = 0; |
| 56 var dispatchTable = []; |
| 57 |
| 58 function sendCommandToWorker(method, params, callback) |
| 59 { |
| 60 dispatchTable[++requestId] = callback; |
| 61 var messageObject = { |
| 62 "method": method, |
| 63 "params": params, |
| 64 "id": requestId |
| 65 }; |
| 66 InspectorTest.sendCommandOrDie("Worker.sendMessageToWorker", { |
| 67 workerId: workerId, |
| 68 message: JSON.stringify(messageObject) |
| 69 }); |
| 70 } |
| 71 |
| 72 function onWorkerMessage(payload) |
| 73 { |
| 74 if (payload.params.workerId !== workerId) |
| 75 InspectorTest.log("workerId mismatch"); |
| 76 var messageObject = JSON.parse(payload.params.message); |
| 77 var messageId = messageObject["id"]; |
| 78 if (typeof messageId === "number") { |
| 79 var handler = dispatchTable[messageId]; |
| 80 dispatchTable[messageId] = null; |
| 81 if (handler && typeof handler === "function") |
| 82 handler(messageObject); |
| 83 } else { |
| 84 var eventName = messageObject["method"]; |
| 85 var eventHandler = workerEventHandler[eventName]; |
| 86 if (eventHandler) |
| 87 eventHandler(messageObject); |
| 88 } |
| 89 } |
| 90 |
| 91 function logInWorker(message, next) |
| 92 { |
| 93 InspectorTest.log("Logging in worker: " + message); |
| 94 if (next) |
| 95 InspectorTest.evaluateInPageAsync("logInWorkerFromPage(\"" + message
+ "\", %callback)", next); |
| 96 else |
| 97 InspectorTest.evaluateInPage("logInWorkerFromPage(\"" + message + "\
")"); |
| 98 } |
| 99 |
| 100 var gotMessages = []; |
| 101 var waitingForMessage; |
| 102 var waitingForMessageCallback; |
| 103 |
| 104 function onConsoleMessage(fromWorker, payload) |
| 105 { |
| 106 var message = payload.params.message.text; |
| 107 InspectorTest.log("Got console message from " + (fromWorker ? "worker" :
"page") + ": " + message); |
| 108 gotMessages.push(message); |
| 109 if (message === waitingForMessage) |
| 110 waitingForMessageCallback(); |
| 111 } |
| 112 |
| 113 function waitForMessage(message, next) |
| 114 { |
| 115 if (gotMessages.indexOf(message) !== -1) { |
| 116 next(); |
| 117 return; |
| 118 } |
| 119 waitingForMessage = message; |
| 120 waitingForMessageCallback = next; |
| 121 } |
| 122 |
| 123 var steps = [ |
| 124 function listenToConsole(next) |
| 125 { |
| 126 InspectorTest.sendCommandOrDie("Console.enable", {}, next); |
| 127 }, |
| 128 |
| 129 function start0(next) |
| 130 { |
| 131 InspectorTest.log("Starting worker"); |
| 132 InspectorTest.evaluateInPageAsync("startWorker(%callback)", next); |
| 133 }, |
| 134 |
| 135 function log0(next) |
| 136 { |
| 137 logInWorker("message0", next); |
| 138 }, |
| 139 |
| 140 function stop0(next) |
| 141 { |
| 142 InspectorTest.log("Stopping worker"); |
| 143 waitForMessage("message0", next); |
| 144 InspectorTest.evaluateInPage("stopWorker()"); |
| 145 }, |
| 146 |
| 147 function start1(next) |
| 148 { |
| 149 InspectorTest.log("Starting worker"); |
| 150 InspectorTest.evaluateInPageAsync("startWorker(%callback)", next); |
| 151 }, |
| 152 |
| 153 function log1(next) |
| 154 { |
| 155 logInWorker("message1", next); |
| 156 }, |
| 157 |
| 158 function enable1(next) |
| 159 { |
| 160 InspectorTest.log("Sending Worker.enable"); |
| 161 InspectorTest.sendCommandOrDie("Worker.enable", {}, next); |
| 162 }, |
| 163 |
| 164 function consoleEnable1(next) |
| 165 { |
| 166 InspectorTest.log("Sending Console.enable to worker"); |
| 167 waitForMessage("message1", next); |
| 168 sendCommandToWorker("Console.enable", {}); |
| 169 }, |
| 170 |
| 171 function log2(next) |
| 172 { |
| 173 waitForMessage("message2", next); |
| 174 logInWorker("message2"); |
| 175 }, |
| 176 |
| 177 function disable1(next) |
| 178 { |
| 179 InspectorTest.log("Sending Worker.disable"); |
| 180 InspectorTest.sendCommandOrDie("Worker.disable", {}, next); |
| 181 }, |
| 182 |
| 183 function log3(next) |
| 184 { |
| 185 logInWorker("message3", next); |
| 186 }, |
| 187 |
| 188 function stop1(next) |
| 189 { |
| 190 InspectorTest.log("Stopping worker"); |
| 191 InspectorTest.evaluateInPage("stopWorker()", next); |
| 192 }, |
| 193 |
| 194 |
| 195 function enable2(next) |
| 196 { |
| 197 InspectorTest.log("Sending Worker.enable"); |
| 198 InspectorTest.sendCommandOrDie("Worker.enable", {}, next); |
| 199 }, |
| 200 |
| 201 function start2(next) |
| 202 { |
| 203 InspectorTest.log("Starting worker"); |
| 204 InspectorTest.evaluateInPageAsync("startWorker(%callback)", next); |
| 205 }, |
| 206 |
| 207 function log4(next) |
| 208 { |
| 209 logInWorker("message4", next); |
| 210 }, |
| 211 |
| 212 function consoleEnable2(next) |
| 213 { |
| 214 InspectorTest.log("Sending Console.enable to worker"); |
| 215 waitForMessage("message4", next); |
| 216 sendCommandToWorker("Console.enable", {}); |
| 217 }, |
| 218 |
| 219 function log5(next) |
| 220 { |
| 221 waitForMessage("message5", next); |
| 222 logInWorker("message5"); |
| 223 }, |
| 224 |
| 225 function stop2(next) |
| 226 { |
| 227 InspectorTest.log("Stopping worker"); |
| 228 InspectorTest.evaluateInPage("stopWorker()", next); |
| 229 }, |
| 230 |
| 231 function start3(next) |
| 232 { |
| 233 InspectorTest.log("Starting worker"); |
| 234 InspectorTest.evaluateInPageAsync("startWorker(%callback)", next); |
| 235 }, |
| 236 |
| 237 function log6(next) |
| 238 { |
| 239 logInWorker("message6", next); |
| 240 }, |
| 241 |
| 242 function stop3(next) |
| 243 { |
| 244 InspectorTest.log("Stopping worker"); |
| 245 waitForMessage("message6", next); |
| 246 InspectorTest.evaluateInPage("stopWorker()"); |
| 247 }, |
| 248 |
| 249 function disable2(next) |
| 250 { |
| 251 InspectorTest.log("Sending Worker.disable"); |
| 252 InspectorTest.sendCommandOrDie("Worker.disable", {}, next); |
| 253 } |
| 254 ]; |
| 255 |
| 256 function runNextStep() |
| 257 { |
| 258 if (!steps.length) { |
| 259 InspectorTest.completeTest(); |
| 260 return; |
| 261 } |
| 262 var nextStep = steps.shift(); |
| 263 InspectorTest.safeWrap(nextStep)(runNextStep); |
| 264 } |
| 265 |
| 266 runNextStep(); |
| 267 } |
| 268 </script> |
| 269 </head> |
| 270 <body onload="runTest()"> |
| 271 </body> |
| 272 </html> |
| OLD | NEW |