constants.sub.js (2593B)
1 const __SERVER__NAME = "{{host}}"; 2 const __PATH = "echo"; 3 4 let __SCHEME; 5 let __PORT; 6 if (url_has_flag('h2')) { 7 __SCHEME = 'wss'; 8 __PORT = "{{ports[h2][0]}}"; 9 } else if (url_has_variant('wss') || location.protocol === 'https:') { 10 __SCHEME = 'wss'; 11 __PORT = "{{ports[wss][0]}}"; 12 } else { 13 __SCHEME = 'ws'; 14 __PORT = "{{ports[ws][0]}}"; 15 } 16 17 const SCHEME_DOMAIN_PORT = __SCHEME + '://' + __SERVER__NAME + ':' + __PORT; 18 const SCHEME_CROSSDOMAIN_PORT = __SCHEME + '://' + '{{hosts[alt][www]}}' + ':' + __PORT; 19 20 function url_has_variant(variant) { 21 const params = new URLSearchParams(location.search); 22 return params.get(variant) === ""; 23 } 24 25 function url_has_flag(flag) { 26 const params = new URLSearchParams(location.search); 27 return params.getAll("wpt_flags").indexOf(flag) !== -1; 28 } 29 30 function IsWebSocket() { 31 if (!self.WebSocket) { 32 assert_true(false, "Browser does not support WebSocket"); 33 } 34 } 35 36 function CreateWebSocketNonAsciiProtocol(nonAsciiProtocol) { 37 IsWebSocket(); 38 const url = SCHEME_DOMAIN_PORT + "/" + __PATH; 39 return new WebSocket(url, nonAsciiProtocol); 40 } 41 42 function CreateWebSocketWithAsciiSep(asciiWithSep) { 43 IsWebSocket(); 44 const url = SCHEME_DOMAIN_PORT + "/" + __PATH; 45 return new WebSocket(url, asciiWithSep); 46 } 47 48 function CreateWebSocketWithBlockedPort(blockedPort) { 49 IsWebSocket(); 50 const url = __SCHEME + "://" + __SERVER__NAME + ":" + blockedPort + "/" + __PATH; 51 return new WebSocket(url); 52 } 53 54 function CreateWebSocketWithSpaceInUrl(urlWithSpace) { 55 IsWebSocket(); 56 const url = __SCHEME + "://" + urlWithSpace + ":" + __PORT + "/" + __PATH; 57 return new WebSocket(url); 58 } 59 60 function CreateWebSocketWithSpaceInProtocol(protocolWithSpace) { 61 IsWebSocket(); 62 const url = SCHEME_DOMAIN_PORT + "/" + __PATH; 63 return new WebSocket(url, protocolWithSpace); 64 } 65 66 function CreateWebSocketWithRepeatedProtocols() { 67 IsWebSocket(); 68 const url = SCHEME_DOMAIN_PORT + "/" + __PATH; 69 return new WebSocket(url, ["echo", "echo"]); 70 } 71 72 function CreateWebSocketWithRepeatedProtocolsCaseInsensitive() { 73 IsWebSocket(); 74 const url = SCHEME_DOMAIN_PORT + "/" + __PATH; 75 wsocket = new WebSocket(url, ["echo", "eCho"]); 76 } 77 78 function CreateInsecureWebSocket() { 79 IsWebSocket(); 80 const url = `ws://${__SERVER__NAME}:{{ports[ws][0]}}/${__PATH}`; 81 return new WebSocket(url); 82 } 83 84 function CreateWebSocket(isProtocol, isProtocols) { 85 IsWebSocket(); 86 const url = SCHEME_DOMAIN_PORT + "/" + __PATH; 87 88 if (isProtocol) { 89 return new WebSocket(url, "echo"); 90 } 91 if (isProtocols) { 92 return new WebSocket(url, ["echo", "chat"]); 93 } 94 return new WebSocket(url); 95 }