tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>