websockets-test-helpers.sub.js (2154B)
1 // The file including this must also include `/websockets/constants.sub.js to 2 // pick up the necessary constants. 3 4 // Opens a new WebSocket connection. 5 async function openWebSocket(remoteContextHelper) { 6 let return_value = await remoteContextHelper.executeScript((domain) => { 7 return new Promise((resolve) => { 8 var webSocketInNotRestoredReasonsTests = new WebSocket(domain + '/echo'); 9 webSocketInNotRestoredReasonsTests.onopen = () => { resolve(42); }; 10 }); 11 }, [SCHEME_DOMAIN_PORT]); 12 assert_equals(return_value, 42); 13 } 14 15 // Opens a new WebSocket connection and then close it. 16 async function openThenCloseWebSocket(remoteContextHelper) { 17 let return_value = await remoteContextHelper.executeScript((domain) => { 18 return new Promise((resolve) => { 19 var testWebSocket = new WebSocket(domain + '/echo'); 20 testWebSocket.onopen = () => { testWebSocket.close() }; 21 testWebSocket.onclose = () => { resolve(42) }; 22 }); 23 }, [SCHEME_DOMAIN_PORT]); 24 assert_equals(return_value, 42); 25 } 26 27 // Opens a new WebSocket connection and close it in pagehide event listener. 28 async function openWebSocketAndCloseItInPageHide(remoteContextHelper) { 29 let return_value = await remoteContextHelper.executeScript((domain) => { 30 window.wsErrorOccurred = false; 31 window.wsCloseOccurred = false; 32 33 return new Promise((resolve) => { 34 var testWebSocket = new WebSocket(domain + '/echo'); 35 testWebSocket.onopen = () => { 36 // Close WebSocket during pagehide (BFCache entry) 37 window.addEventListener( 38 'pagehide', 39 () => testWebSocket.close() 40 ); 41 resolve(42); 42 }; 43 testWebSocket.onerror = () => { window.wsErrorOccurred = true; }; 44 testWebSocket.onclose = () => { window.wsCloseOccurred = true; }; 45 }); 46 }, [SCHEME_DOMAIN_PORT]); 47 assert_equals(return_value, 42); 48 } 49 50 // Reads wsErrorOccurred and wsCloseOccurred from the remote context. 51 async function readWebSocketCloseAndErrorFlags(remoteContext) { 52 return await remoteContext.executeScript(() => { 53 return { 54 wsError: window.wsErrorOccurred, 55 wsClose: window.wsCloseOccurred 56 }; 57 }); 58 }