dom/workers/test/multi_sharedWorker_sharedWorker.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     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);
     9 }
    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     var data = {
    20       type: "connect"
    21     };
    23     registeredPorts.forEach(function(registeredPort) {
    24       registeredPort.postMessage(data);
    25     });
    26   }
    28   port.onmessage = function(event) {
    29     switch (event.data.command) {
    30       case "start":
    31         break;
    33       case "error":
    34         throw new Error("Expected");
    36       case "store":
    37         storedData = event.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);
    54 };
    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     };
    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 };

mercurial