<!doctype html>
<title>WebSockets: setting HttpOnly cookies in ws response, checking document.cookie</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=../constants.js?pipe=sub></script>
<meta name="variant" content="">
<meta name="variant" content="?wss">
<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 url = SCHEME_DOMAIN_PORT+'/set-cookie_http?'+cookie_id;
  var ws = new WebSocket(url);
  ws.onopen = t.step_func(function(e) {
    ws.close();
    ws.onclose = null;
    assert_false(new RegExp('ws_test_'+cookie_id+'=test').test(document.cookie));
    t.done();
  });
  ws.onerror = ws.onclose = t.step_func(function(e) {assert_unreached(e.type)});
  document.body.appendChild(iframe);
});
</script>
