blob: e987b49695a6ffa739dd4774ed25e8800e12c53d [file] [log] [blame]
Ms2ger33d43652013-04-04 11:45:181<!doctype html>
2<meta charset=utf-8>
3<title>XMLHttpRequest IDL tests</title>
4<script src=/resources/testharness.js></script>
5<script src=/resources/testharnessreport.js></script>
6<script src=/resources/WebIDLParser.js></script>
7<script src=/resources/idlharness.js></script>
8
9<h1>XMLHttpRequest IDL tests</h1>
10<div id=log></div>
11
12<script type=text/plain class=untested>
Ms2ger9fa75202014-11-09 10:37:0013[Constructor(DOMString type, optional EventInit eventInitDict)/*,
14 Exposed=(Window,Worker)*/]
15interface Event {
16 readonly attribute DOMString type;
17 readonly attribute EventTarget? target;
18 readonly attribute EventTarget? currentTarget;
19
20 const unsigned short NONE = 0;
21 const unsigned short CAPTURING_PHASE = 1;
22 const unsigned short AT_TARGET = 2;
23 const unsigned short BUBBLING_PHASE = 3;
24 readonly attribute unsigned short eventPhase;
25
26 void stopPropagation();
27 void stopImmediatePropagation();
28
29 readonly attribute boolean bubbles;
30 readonly attribute boolean cancelable;
31 void preventDefault();
32 readonly attribute boolean defaultPrevented;
33
34 [Unforgeable] readonly attribute boolean isTrusted;
35 readonly attribute DOMTimeStamp timeStamp;
36
37 void initEvent(DOMString type, boolean bubbles, boolean cancelable);
38};
39
40dictionary EventInit {
41 boolean bubbles = false;
42 boolean cancelable = false;
43};
44
45/*[Exposed=(Window,Worker)]*/
Ms2ger33d43652013-04-04 11:45:1846interface EventTarget {
Ms2ger9fa75202014-11-09 10:37:0047 void addEventListener(DOMString type, EventListener? callback, optional boolean capture = false);
48 void removeEventListener(DOMString type, EventListener? callback, optional boolean capture = false);
Ms2ger33d43652013-04-04 11:45:1849 boolean dispatchEvent(Event event);
50};
51</script>
52<script type=text/plain class=untested>
53[TreatNonCallableAsNull]
54callback EventHandlerNonNull = any (Event event);
55typedef EventHandlerNonNull? EventHandler;
56</script>
57<script type=text/plain>
Ms2ger9fa75202014-11-09 10:37:0058[NoInterfaceObject/*,
59 Exposed=(Window,Worker)*/]
Ms2ger33d43652013-04-04 11:45:1860interface XMLHttpRequestEventTarget : EventTarget {
61 // event handlers
62 attribute EventHandler onloadstart;
63 attribute EventHandler onprogress;
64 attribute EventHandler onabort;
65 attribute EventHandler onerror;
66 attribute EventHandler onload;
67 attribute EventHandler ontimeout;
68 attribute EventHandler onloadend;
69};
70
Ms2ger9fa75202014-11-09 10:37:0071/*[Exposed=(Window,Worker)]*/
Ms2ger33d43652013-04-04 11:45:1872interface XMLHttpRequestUpload : XMLHttpRequestEventTarget {
73};
74
75enum XMLHttpRequestResponseType {
76 "",
77 "arraybuffer",
78 "blob",
79 "document",
80 "json",
81 "text"
82};
83
Ms2ger9fa75202014-11-09 10:37:0084[Constructor/*,
85 Exposed=(Window,Worker)*/]
Ms2ger33d43652013-04-04 11:45:1886interface XMLHttpRequest : XMLHttpRequestEventTarget {
87 // event handler
88 attribute EventHandler onreadystatechange;
89
90 // states
91 const unsigned short UNSENT = 0;
92 const unsigned short OPENED = 1;
93 const unsigned short HEADERS_RECEIVED = 2;
94 const unsigned short LOADING = 3;
95 const unsigned short DONE = 4;
96 readonly attribute unsigned short readyState;
97
98 // request
Ms2ger9fa75202014-11-09 10:37:0099 void open(ByteString method, USVString url);
100 void open(ByteString method, USVString url, boolean async, optional USVString? username = null, optional USVString? password = null);
Ms2ger33d43652013-04-04 11:45:18101 void setRequestHeader(ByteString name, ByteString value);
102 attribute unsigned long timeout;
103 attribute boolean withCredentials;
104 readonly attribute XMLHttpRequestUpload upload;
Ms2ger9fa75202014-11-09 10:37:00105 void send(optional (Document or BodyInit)? body = null);
Ms2ger33d43652013-04-04 11:45:18106 void abort();
107
108 // response
Ms2ger9fa75202014-11-09 10:37:00109 readonly attribute USVString responseURL;
Ms2ger33d43652013-04-04 11:45:18110 readonly attribute unsigned short status;
111 readonly attribute ByteString statusText;
112 ByteString? getResponseHeader(ByteString name);
113 ByteString getAllResponseHeaders();
114 void overrideMimeType(DOMString mime);
115 attribute XMLHttpRequestResponseType responseType;
116 readonly attribute any response;
Ms2ger9fa75202014-11-09 10:37:00117 readonly attribute USVString responseText;
118 [Exposed=Window] readonly attribute Document? responseXML;
Ms2ger33d43652013-04-04 11:45:18119};
120
Ms2ger9fa75202014-11-09 10:37:00121typedef (File or USVString) FormDataEntryValue;
122
123[Constructor(optional HTMLFormElement form)/*,
124 Exposed=(Window,Worker)*/]
Ms2ger33d43652013-04-04 11:45:18125interface FormData {
Ms2ger9fa75202014-11-09 10:37:00126 void append(USVString name, Blob value, optional USVString filename);
127 void append(USVString name, USVString value);
128 void delete(USVString name);
129 FormDataEntryValue? get(USVString name);
130 sequence<FormDataEntryValue> getAll(USVString name);
131 boolean has(USVString name);
132 void set(USVString name, Blob value, optional USVString filename);
133 void set(USVString name, USVString value);
134 /*iterable<USVString, FormDataEntryValue>;*/
135};
136
137[Constructor(DOMString type, optional ProgressEventInit eventInitDict)/*,
138 Exposed=(Window,Worker)*/]
139interface ProgressEvent : Event {
140 readonly attribute boolean lengthComputable;
141 readonly attribute unsigned long long loaded;
142 readonly attribute unsigned long long total;
143};
144
145dictionary ProgressEventInit : EventInit {
146 boolean lengthComputable = false;
147 unsigned long long loaded = 0;
148 unsigned long long total = 0;
Ms2ger33d43652013-04-04 11:45:18149};
150</script>
151<script>
152"use strict";
153var form;
154var idlArray;
155setup(function() {
156 form = document.createElement("form");
157 idlArray = new IdlArray();
158 [].forEach.call(document.querySelectorAll("script[type=text\\/plain]"), function(node) {
159 if (node.className == "untested") {
160 idlArray.add_untested_idls(node.textContent);
161 } else {
162 idlArray.add_idls(node.textContent);
163 }
164 });
165 idlArray.add_objects({
166 XMLHttpRequest: ['new XMLHttpRequest()'],
167 XMLHttpRequestUpload: ['(new XMLHttpRequest()).upload'],
168 FormData: ['new FormData()', 'new FormData(form)']
169 });
170});
171idlArray.test();
172</script>