<!doctype html>
<meta charset=utf-8>
<title>WebSockets: bufferedAmount for blob</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>
async_test(function(t) {
  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
  var datasize = 10;
  ws.onopen = t.step_func(function(e) {
    ws.binaryType = "blob";
    var data = new ArrayBuffer(datasize);
    ws.send(data);
    assert_equals(ws.bufferedAmount, data.byteLength);
  });
  ws.onmessage = t.step_func(function(e) {
    assert_true(e.data instanceof Blob);
    assert_equals(e.data.size, datasize);
    t.done();
  });
});
</script>
