• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5if (!self.postMessage) {
6  // This is a shared worker - mimic dedicated worker APIs
7  onconnect = function(event) {
8    event.ports[0].onmessage = function(e) {
9      self.postMessage = function (msg) {
10        event.ports[0].postMessage(msg);
11      };
12      runTests(e.data);
13    };
14  };
15} else {
16  runTests(event.data);
17}
18
19// This test is compatible with shared-worker-simple.html layout test.
20runTests = function (url) {
21  var ws;
22  var greeting = "hello";
23  try {
24    ws = new WebSocket(url);
25    ws.onopen = function() {
26      ws.send(greeting);
27    };
28    ws.onmessage = function(e) {
29      // Receive echoed "hello".
30      if (e.data != greeting) {
31        postMessage("FAIL: received data is wrong: " + e.data);
32      } else {
33        ws.close();
34      }
35    };
36    ws.onclose = function(e) {
37      if (!e.wasClean) {
38        postMessage("FAIL: close is not clean");
39      } else {
40        postMessage("DONE");
41      }
42    };
43  } catch (e) {
44    postMessage("FAIL: worker: Unexpected exception: " + e);
45  }
46};
47