simpleThread_worker.js (1299B)
1 /** 2 * Any copyright is dedicated to the Public Domain. 3 * http://creativecommons.org/publicdomain/zero/1.0/ 4 */ 5 "use strict"; 6 7 function messageListener(event) { 8 var exception; 9 try { 10 event.bubbles = true; 11 } catch (e) { 12 exception = e; 13 } 14 15 if (!(exception instanceof TypeError)) { 16 throw exception; 17 } 18 19 switch (event.data) { 20 case "no-op": 21 break; 22 case "components": 23 postMessage(Components.toString()); 24 break; 25 case "start": 26 for (var i = 0; i < 1000; i++) {} 27 postMessage("started"); 28 break; 29 case "stop": 30 self.postMessage("no-op"); 31 postMessage("stopped"); 32 self.removeEventListener("message", messageListener); 33 break; 34 default: 35 throw "Bad message: " + event.data; 36 } 37 } 38 39 if (!("DedicatedWorkerGlobalScope" in self)) { 40 throw new Error("DedicatedWorkerGlobalScope should be visible!"); 41 } 42 if (!(self instanceof DedicatedWorkerGlobalScope)) { 43 throw new Error("The global should be a SharedWorkerGlobalScope!"); 44 } 45 if (!(self instanceof WorkerGlobalScope)) { 46 throw new Error("The global should be a WorkerGlobalScope!"); 47 } 48 if ("SharedWorkerGlobalScope" in self) { 49 throw new Error("SharedWorkerGlobalScope should not be visible!"); 50 } 51 52 addEventListener("message", { handleEvent: messageListener });