test_websocket_mixed_content_blob.html (2258B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"></meta> 5 <title>WebSocket mixed content tests - load secure and insecure websockets</title> 6 <script src="/tests/SimpleTest/SimpleTest.js"></script> 7 8 <script type="text/javascript" src="websocket_helpers.js"></script> 9 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 10 </head> 11 <body> 12 <div id="container"></div> 13 <script class="testbody" type="text/javascript"> 14 15 let testsCompleted = 0; 16 const numberOfTestCases = 2; 17 18 function markTestCaseComplete() { 19 testsCompleted++; 20 21 if (testsCompleted == numberOfTestCases) { 22 SimpleTest.finish(); 23 } 24 } 25 26 onmessage = (event) => { 27 if (event.data.method === "ws://mochi.test:8888") { 28 is(event.data.result, "SecurityError", "SecurityError should be received from insecure websocket creation in Secure Context."); 29 markTestCaseComplete(); 30 } 31 else if (event.data.method === "wss://example.com") { 32 is(event.data.result, "WS onopen", "onopen method should be run from secure websocket creation in Secure Context."); 33 markTestCaseComplete(); 34 } 35 } 36 37 function testWebSocketBlob (method) { 38 let blob = URL.createObjectURL( 39 new Blob( 40 [`<!DOCTYPE html><script> 41 try { 42 let socket = new WebSocket("${method}/tests/dom/websocket/tests/file_websocket_hello"); 43 socket.onerror = (e) => { 44 opener.postMessage({result: 'WS onerror', method: '${method}'}, '*'); 45 close(); 46 }; 47 socket.onopen = (e) => { 48 socket.close(); 49 opener.postMessage({result: 'WS onopen', method: '${method}'}, '*'); 50 close(); 51 }; 52 } 53 catch(e) { 54 if (e instanceof DOMException) { 55 opener.postMessage({result: 'SecurityError', method: '${method}'}, '*'); 56 close(); 57 } else { 58 opener.postMessage({result: 'WS Throws something else!', method: '${method}'}, '*'); 59 close(); 60 } 61 } 62 <\/script>`], 63 {type: 'text/html'} 64 ) 65 ); 66 67 window.open(blob); 68 } 69 70 SimpleTest.waitForExplicitFinish(); 71 testWebSocketBlob("ws://mochi.test:8888"); 72 testWebSocketBlob("wss://example.com"); 73 74 </script> 75 </body> 76 </html>