no bug - Bumping Firefox l10n changesets r=release a=l10n-bump DONTBUILD CLOSED TREE
[gecko.git] / dom / workers / test / multi_sharedWorker_sharedWorker.js
blob3c3e4c5780dd8e125156003bcba7b2b26abbbe4c
1 /**
2  * Any copyright is dedicated to the Public Domain.
3  * http://creativecommons.org/publicdomain/zero/1.0/
4  */
5 "use strict";
7 if (self.name != "FrameWorker") {
8   throw new Error("Bad worker name: " + self.name);
11 var registeredPorts = [];
12 var errorCount = 0;
13 var storedData;
15 self.onconnect = function (event) {
16   var port = event.ports[0];
18   if (registeredPorts.length) {
19     let data = {
20       type: "connect",
21     };
23     registeredPorts.forEach(function (registeredPort) {
24       registeredPort.postMessage(data);
25     });
26   }
28   port.onmessage = function (msg) {
29     switch (msg.data.command) {
30       case "start":
31         break;
33       case "error":
34         throw new Error("Expected");
36       case "store":
37         storedData = msg.data.data;
38         break;
40       case "retrieve":
41         var data = {
42           type: "result",
43           data: storedData,
44         };
45         port.postMessage(data);
46         break;
48       default:
49         throw new Error("Unknown command '" + error.data.command + "'");
50     }
51   };
53   registeredPorts.push(port);
56 self.onerror = function (message, filename, lineno) {
57   if (!errorCount++) {
58     var data = {
59       type: "worker-error",
60       message,
61       filename,
62       lineno,
63     };
65     registeredPorts.forEach(function (registeredPort) {
66       registeredPort.postMessage(data);
67     });
69     // Prevent the error from propagating the first time only.
70     return true;
71   }
72   return undefined;