1// Track the number of clients for this worker - tests can use this to ensure
2// that shared workers are actually shared, not distinct.
3var num_clients = 0;
4
5if (!self.postMessage) {
6  // This is a shared worker - mimic dedicated worker APIs
7  onconnect = function(event) {
8    num_clients++;
9    event.ports[0].onmessage = function(e) {
10      self.postMessage = function(msg) {
11        event.ports[0].postMessage(msg);
12      };
13      self.onmessage(e);
14    };
15  };
16} else {
17  num_clients++;
18}
19onmessage = function(evt) {
20  if (evt.data == "ping")
21    postMessage("pong");
22  else if (evt.data == "auth")
23    importScripts("/auth-basic");
24  else if (evt.data == "close")
25    close();
26  else if (/eval.+/.test(evt.data)) {
27    try {
28      postMessage(eval(evt.data.substr(5)));
29    } catch (ex) {
30      postMessage(ex);
31    }
32  }
33}
34