summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/fetch/api/request/request-idl.html
blob: 4f1590c75609dd48356a03006668adce71f076bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Request 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="body-idl" type="text/plain">
      typedef any JSON;
      typedef (Blob or BufferSource or FormData or URLSearchParams or USVString) BodyInit;

      [NoInterfaceObject,
      Exposed=(Window,Worker)]
      interface Body {
        readonly attribute boolean bodyUsed;
        [NewObject] Promise<ArrayBuffer> arrayBuffer();
        [NewObject] Promise<Blob> blob();
        [NewObject] Promise<FormData> formData();
        [NewObject] Promise<JSON> json();
        [NewObject] Promise<USVString> text();
      };
    </script>
    <script id="request-idl" type="text/plain">
      typedef (Request or USVString) RequestInfo;

      [Constructor(RequestInfo input, optional RequestInit init),
      Exposed=(Window,Worker)]
      interface Request {
        readonly attribute ByteString method;
        readonly attribute USVString url;
        [SameObject] readonly attribute Headers headers;

        readonly attribute RequestType type;
        readonly attribute RequestDestination destination;
        readonly attribute USVString referrer;
        readonly attribute ReferrerPolicy referrerPolicy;
        readonly attribute RequestMode mode;
        readonly attribute RequestCredentials credentials;
        readonly attribute RequestCache cache;
        readonly attribute RequestRedirect redirect;
        readonly attribute DOMString integrity;

        [NewObject] Request clone();
      };
      Request implements Body;

      dictionary RequestInit {
        ByteString method;
        HeadersInit headers;
        BodyInit? body;
        USVString referrer;
        ReferrerPolicy referrerPolicy;
        RequestMode mode;
        RequestCredentials credentials;
        RequestCache cache;
        RequestRedirect redirect;
        DOMString integrity;
        any window; // can only be set to null
      };

      enum RequestType { "", "audio", "font", "image", "script", "style", "track", "video" };
      enum RequestDestination { "", "document", "sharedworker", "subresource", "unknown", "worker" };
      enum RequestMode { "navigate", "same-origin", "no-cors", "cors" };
      enum RequestCredentials { "omit", "same-origin", "include" };
      enum RequestCache { "default", "no-store", "reload", "no-cache", "force-cache", "only-if-cached" };
      enum RequestRedirect { "follow", "error", "manual" };
      enum ReferrerPolicy { "", "no-referrer", "no-referrer-when-downgrade", "origin-only", "origin-when-cross-origin", "unsafe-url" };
    </script>
    <script>
      var idlsArray = new IdlArray();
      var idl = document.getElementById("body-idl").innerHTML
      idl += document.getElementById("request-idl").innerHTML

      idlsArray.add_idls(idl);
      idlsArray.add_untested_idls("interface Headers {};");
      idlsArray.add_objects({ Request: ['new Request("")'] });
      idlsArray.test();
    </script>
  </body>
</html>