<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Headers idl interface</title>
    <meta name="help" href="https://fetch.spec.whatwg.org/#response">
    <meta name="author" title="Canon Research France" href="https://www.crf.canon.fr">
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <script src="/resources/WebIDLParser.js"></script>
    <script src="/resources/idlharness.js"></script>
  </head>
  <body>
    <script id="headers-idl" type="text/plain">
      typedef (sequence<sequence<ByteString>> or record<ByteString>) HeadersInit;

      [Constructor(optional HeadersInit init),
      Exposed=(Window,Worker)]
      interface Headers {
        void append(ByteString name, ByteString value);
        void delete(ByteString name);
        ByteString? get(ByteString name);
        boolean has(ByteString name);
        void set(ByteString name, ByteString value);
        iterable<ByteString, ByteString>;
      };
    </script>
    <script>
      var idlsArray = new IdlArray();
      var idl = document.getElementById("headers-idl").textContent
      idlsArray.add_idls(idl);
      idlsArray.add_objects({ Headers: ['new Headers()'] });
      idlsArray.test();
    </script>
  </body>
</html>
