summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/websockets/constants.sub.js
blob: fd3c3b84b96a0a2537ac65dc4f626c4be03d9077 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
const __SERVER__NAME = "{{host}}";
const __PATH = "echo";

let __SCHEME;
let __PORT;
if (url_has_flag('h2')) {
  __SCHEME = 'wss';
  __PORT = "{{ports[h2][0]}}";
} else if (url_has_variant('wss') || location.protocol === 'https:') {
  __SCHEME = 'wss';
  __PORT = "{{ports[wss][0]}}";
} else {
  __SCHEME = 'ws';
  __PORT = "{{ports[ws][0]}}";
}

const SCHEME_DOMAIN_PORT = __SCHEME + '://' + __SERVER__NAME + ':' + __PORT;

function url_has_variant(variant) {
  const params = new URLSearchParams(location.search);
  return params.get(variant) === "";
}

function url_has_flag(flag) {
  const params = new URLSearchParams(location.search);
  return params.getAll("wpt_flags").indexOf(flag) !== -1;
}

function IsWebSocket() {
  if (!self.WebSocket) {
    assert_true(false, "Browser does not support WebSocket");
  }
}

function CreateWebSocketNonAsciiProtocol(nonAsciiProtocol) {
  IsWebSocket();
  const url = SCHEME_DOMAIN_PORT + "/" + __PATH;
  return new WebSocket(url, nonAsciiProtocol);
}

function CreateWebSocketWithAsciiSep(asciiWithSep) {
  IsWebSocket();
  const url = SCHEME_DOMAIN_PORT + "/" + __PATH;
  return new WebSocket(url, asciiWithSep);
}

function CreateWebSocketWithBlockedPort(blockedPort) {
  IsWebSocket();
  const url = __SCHEME + "://" + __SERVER__NAME + ":" + blockedPort + "/" + __PATH;
  return new WebSocket(url);
}

function CreateWebSocketWithSpaceInUrl(urlWithSpace) {
  IsWebSocket();
  const url = __SCHEME + "://" + urlWithSpace + ":" + __PORT + "/" + __PATH;
  return new WebSocket(url);
}

function CreateWebSocketWithSpaceInProtocol(protocolWithSpace) {
  IsWebSocket();
  const url = SCHEME_DOMAIN_PORT + "/" + __PATH;
  return new WebSocket(url, protocolWithSpace);
}

function CreateWebSocketWithRepeatedProtocols() {
  IsWebSocket();
  const url = SCHEME_DOMAIN_PORT + "/" + __PATH;
  return new WebSocket(url, ["echo", "echo"]);
}

function CreateWebSocketWithRepeatedProtocolsCaseInsensitive() {
  IsWebSocket();
  const url = SCHEME_DOMAIN_PORT + "/" + __PATH;
  wsocket = new WebSocket(url, ["echo", "eCho"]);
}

function CreateInsecureWebSocket() {
  IsWebSocket();
  const url = `ws://${__SERVER__NAME}:{{ports[ws][0]}}/${__PATH}`;
  return new WebSocket(url);
}

function CreateWebSocket(isProtocol, isProtocols) {
  IsWebSocket();
  const url = SCHEME_DOMAIN_PORT + "/" + __PATH;

  if (isProtocol) {
    return new WebSocket(url, "echo");
  }
  if (isProtocols) {
    return new WebSocket(url, ["echo", "chat"]);
  }
  return new WebSocket(url);
}