| Ms2ger | 33d4365 | 2013-04-04 11:45:18 | [diff] [blame] | 1 | <!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> |
| Ms2ger | 9fa7520 | 2014-11-09 10:37:00 | [diff] [blame^] | 13 | [Constructor(DOMString type, optional EventInit eventInitDict)/*, |
| 14 | Exposed=(Window,Worker)*/] |
| 15 | interface 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 | |
| 40 | dictionary EventInit { |
| 41 | boolean bubbles = false; |
| 42 | boolean cancelable = false; |
| 43 | }; |
| 44 | |
| 45 | /*[Exposed=(Window,Worker)]*/ |
| Ms2ger | 33d4365 | 2013-04-04 11:45:18 | [diff] [blame] | 46 | interface EventTarget { |
| Ms2ger | 9fa7520 | 2014-11-09 10:37:00 | [diff] [blame^] | 47 | void addEventListener(DOMString type, EventListener? callback, optional boolean capture = false); |
| 48 | void removeEventListener(DOMString type, EventListener? callback, optional boolean capture = false); |
| Ms2ger | 33d4365 | 2013-04-04 11:45:18 | [diff] [blame] | 49 | boolean dispatchEvent(Event event); |
| 50 | }; |
| 51 | </script> |
| 52 | <script type=text/plain class=untested> |
| 53 | [TreatNonCallableAsNull] |
| 54 | callback EventHandlerNonNull = any (Event event); |
| 55 | typedef EventHandlerNonNull? EventHandler; |
| 56 | </script> |
| 57 | <script type=text/plain> |
| Ms2ger | 9fa7520 | 2014-11-09 10:37:00 | [diff] [blame^] | 58 | [NoInterfaceObject/*, |
| 59 | Exposed=(Window,Worker)*/] |
| Ms2ger | 33d4365 | 2013-04-04 11:45:18 | [diff] [blame] | 60 | interface 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 | |
| Ms2ger | 9fa7520 | 2014-11-09 10:37:00 | [diff] [blame^] | 71 | /*[Exposed=(Window,Worker)]*/ |
| Ms2ger | 33d4365 | 2013-04-04 11:45:18 | [diff] [blame] | 72 | interface XMLHttpRequestUpload : XMLHttpRequestEventTarget { |
| 73 | }; |
| 74 | |
| 75 | enum XMLHttpRequestResponseType { |
| 76 | "", |
| 77 | "arraybuffer", |
| 78 | "blob", |
| 79 | "document", |
| 80 | "json", |
| 81 | "text" |
| 82 | }; |
| 83 | |
| Ms2ger | 9fa7520 | 2014-11-09 10:37:00 | [diff] [blame^] | 84 | [Constructor/*, |
| 85 | Exposed=(Window,Worker)*/] |
| Ms2ger | 33d4365 | 2013-04-04 11:45:18 | [diff] [blame] | 86 | interface 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 |
| Ms2ger | 9fa7520 | 2014-11-09 10:37:00 | [diff] [blame^] | 99 | void open(ByteString method, USVString url); |
| 100 | void open(ByteString method, USVString url, boolean async, optional USVString? username = null, optional USVString? password = null); |
| Ms2ger | 33d4365 | 2013-04-04 11:45:18 | [diff] [blame] | 101 | void setRequestHeader(ByteString name, ByteString value); |
| 102 | attribute unsigned long timeout; |
| 103 | attribute boolean withCredentials; |
| 104 | readonly attribute XMLHttpRequestUpload upload; |
| Ms2ger | 9fa7520 | 2014-11-09 10:37:00 | [diff] [blame^] | 105 | void send(optional (Document or BodyInit)? body = null); |
| Ms2ger | 33d4365 | 2013-04-04 11:45:18 | [diff] [blame] | 106 | void abort(); |
| 107 | |
| 108 | // response |
| Ms2ger | 9fa7520 | 2014-11-09 10:37:00 | [diff] [blame^] | 109 | readonly attribute USVString responseURL; |
| Ms2ger | 33d4365 | 2013-04-04 11:45:18 | [diff] [blame] | 110 | 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; |
| Ms2ger | 9fa7520 | 2014-11-09 10:37:00 | [diff] [blame^] | 117 | readonly attribute USVString responseText; |
| 118 | [Exposed=Window] readonly attribute Document? responseXML; |
| Ms2ger | 33d4365 | 2013-04-04 11:45:18 | [diff] [blame] | 119 | }; |
| 120 | |
| Ms2ger | 9fa7520 | 2014-11-09 10:37:00 | [diff] [blame^] | 121 | typedef (File or USVString) FormDataEntryValue; |
| 122 | |
| 123 | [Constructor(optional HTMLFormElement form)/*, |
| 124 | Exposed=(Window,Worker)*/] |
| Ms2ger | 33d4365 | 2013-04-04 11:45:18 | [diff] [blame] | 125 | interface FormData { |
| Ms2ger | 9fa7520 | 2014-11-09 10:37:00 | [diff] [blame^] | 126 | 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)*/] |
| 139 | interface ProgressEvent : Event { |
| 140 | readonly attribute boolean lengthComputable; |
| 141 | readonly attribute unsigned long long loaded; |
| 142 | readonly attribute unsigned long long total; |
| 143 | }; |
| 144 | |
| 145 | dictionary ProgressEventInit : EventInit { |
| 146 | boolean lengthComputable = false; |
| 147 | unsigned long long loaded = 0; |
| 148 | unsigned long long total = 0; |
| Ms2ger | 33d4365 | 2013-04-04 11:45:18 | [diff] [blame] | 149 | }; |
| 150 | </script> |
| 151 | <script> |
| 152 | "use strict"; |
| 153 | var form; |
| 154 | var idlArray; |
| 155 | setup(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 | }); |
| 171 | idlArray.test(); |
| 172 | </script> |