<!doctype html>
<title>WebSockets: setting HttpOnly cookies in ws response, checking ws request</title>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=../constants.js?pipe=sub></script>
<div id=log></div>
<script>
setup({explicit_done:true})
var cookie_id = ((new Date())-0) + '.' + Math.random();

var t = async_test(function(t) {
  var iframe = document.createElement('iframe');
  t.add_cleanup(function() {
    // remove cookie
    iframe.src = 'support/set-cookie.py?'+encodeURIComponent('ws_test_'+cookie_id+'=; Path=/; HttpOnly; Expires=Sun, 06 Nov 1994 08:49:37 GMT');
    iframe.onload = done;
  });
  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/set-cookie_http?'+cookie_id);
  ws.onopen = t.step_func(function(e) {
    var ws2 = new WebSocket(SCHEME_DOMAIN_PORT+'/echo-cookie');
    ws2.onmessage = t.step_func(function(e) {
      ws.close();
      ws2.close();
      assert_regexp_match(e.data, new RegExp('ws_test_'+cookie_id+'=test'));
      t.done();
    });
  });
  ws.onerror = ws.onclose = t.step_func(function(e) {assert_unreached(e.type)});
  document.body.appendChild(iframe);
})
</script>
