dom/workers/test/multi_sharedWorker_sharedWorker.js

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:08495c6c1e57
1 /**
2 * Any copyright is dedicated to the Public Domain.
3 * http://creativecommons.org/publicdomain/zero/1.0/
4 */
5 "use strict";
6
7 if (self.name != "FrameWorker") {
8 throw new Error("Bad worker name: " + self.name);
9 }
10
11 var registeredPorts = [];
12 var errorCount = 0;
13 var storedData;
14
15 self.onconnect = function(event) {
16 var port = event.ports[0];
17
18 if (registeredPorts.length) {
19 var data = {
20 type: "connect"
21 };
22
23 registeredPorts.forEach(function(registeredPort) {
24 registeredPort.postMessage(data);
25 });
26 }
27
28 port.onmessage = function(event) {
29 switch (event.data.command) {
30 case "start":
31 break;
32
33 case "error":
34 throw new Error("Expected");
35
36 case "store":
37 storedData = event.data.data;
38 break;
39
40 case "retrieve":
41 var data = {
42 type: "result",
43 data: storedData
44 };
45 port.postMessage(data);
46 break;
47
48 default:
49 throw new Error("Unknown command '" + error.data.command + "'");
50 }
51 };
52
53 registeredPorts.push(port);
54 };
55
56 self.onerror = function(message, filename, lineno) {
57 if (!errorCount++) {
58 var data = {
59 type: "worker-error",
60 message: message,
61 filename: filename,
62 lineno: lineno
63 };
64
65 registeredPorts.forEach(function (registeredPort) {
66 registeredPort.postMessage(data);
67 });
68
69 // Prevent the error from propagating the first time only.
70 return true;
71 }
72 };

mercurial