<!--
var prt;
function handleCall(e) {
  var log = [];
  for (var i = 0; i < e.data.length; ++i) {
    if (!(e.data[i] in self))
      log.push(e.data[i]);
  }
  prt.postMessage('These were missing: '+log.join(', '));
}
onconnect = function(e) {
  prt = e.ports[0];
  prt.onmessage = handleCall;
};
/*
-->
<!doctype html>
<title>expected interface objects/constructors</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
(async_test()).step(function() {
  var expected = 'XMLHttpRequest WebSocket EventSource MessageChannel Worker SharedWorker ApplicationCache'.split(' ');
  var supported = [];
  for (var i = 0; i < expected.length; ++i) {
  if (expected[i] in window)
     supported.push(expected[i]);
  }
  var worker = new SharedWorker('#');
  worker.port.start();
  worker.port.postMessage(supported);
  worker.port.addEventListener('message', this.step_func(function(e) {
    assert_equals(e.data, '');
    this.done();
  }), false);
});
</script>
<!--
*/
//-->
