<!DOCTYPE html>
<html>
<title>Service Workers: Request Objects</title>
    <head>
        <link rel="help" href="https://w3c.github.io/ServiceWorker/#request-objects">
        <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 type=text/plain id="idl_0">
[Constructor(optional RequestInit init)]
interface Request {
  attribute unsigned long timeout;
  attribute DOMString url;
  attribute ByteString method;
  readonly attribute DOMString origin;
  readonly attribute Mode mode;
  attribute boolean synchronous;
  attribute boolean forcePreflight;
  attribute boolean omitCredentials;
  readonly attribute DOMString referrer;
  readonly attribute HeaderMap headers; // alternative: sequence<Header> headers;
  attribute any body;
};

dictionary RequestInit {
  unsigned long timeout = 0;
  DOMString url;
  boolean synchronous = false;
  boolean forcePreflight = false;
  boolean omitCredentials = false;
  ByteString method = "GET";
  HeaderMap headers;
  any body;
};

enum Mode {
  "same origin",
  "tainted cross-origin",
  "CORS",
  "CORS-with-forced-preflight"
};

[MapClass(DOMString, DOMString)]
interface HeaderMap {
};
</script>




    <script>
        var idl_array = new IdlArray();
        idl_array.add_untested_idls(document.getElementById("untested_idls").textContent);
        idl_array.add_idls(document.getElementById("idl_0").textContent);
        idl_array.add_objects({
            Request: ["throw new Error ('No object defined for the Request interface')"],
            RequestInit: ["throw new Error ('No object defined for the RequestInit dictionary')"],
            Mode: ["throw new Error ('No object defined for the Mode enum')"],
            HeaderMap: ["throw new Error ('No object defined for the HeaderMap interface')"]
        });
        idl_array.test();
    </script>

    </body>
</html>

