<!doctype html>
<title>WebSockets: Cookie in request</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=../constants.js?pipe=sub></script>
<div id=log></div>
<script>
var cookie_id = ((new Date())-0) + '.' + Math.random();
async_test(function(t) {
  if (window.WebSocket) {
    document.cookie = 'ws_test_'+cookie_id+'=test; Path=/';
  }
  t.add_cleanup(function() {
    // remove cookie
    document.cookie = 'ws_test_'+cookie_id+'=; Path=/; Expires=Sun, 06 Nov 1994 08:49:37 GMT';
  });
  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo-cookie');
  ws.onmessage = t.step_func(function(e) {
    assert_regexp_match(e.data, new RegExp('ws_test_'+cookie_id+'=test'));
    ws.close();
    t.done();
  });
  ws.onerror = ws.onclose = t.step_func(function(e) {assert_unreached(e.type)});
});
</script>
