Line data Source code
1 : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 : /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 : /* This Source Code Form is subject to the terms of the Mozilla Public
4 : * License, v. 2.0. If a copy of the MPL was not distributed with this file,
5 : * You can obtain one at http://mozilla.org/MPL/2.0/. */
6 :
7 : #ifndef mozilla_dom_XMLHttpRequest_h
8 : #define mozilla_dom_XMLHttpRequest_h
9 :
10 : #include "mozilla/Attributes.h"
11 : #include "mozilla/dom/XMLHttpRequestEventTarget.h"
12 : #include "mozilla/dom/XMLHttpRequestBinding.h"
13 : #include "nsIXMLHttpRequest.h"
14 :
15 : class nsIJSID;
16 :
17 : namespace mozilla {
18 : namespace dom {
19 :
20 : class Blob;
21 : class DOMString;
22 : class FormData;
23 : class URLSearchParams;
24 : class XMLHttpRequestUpload;
25 :
26 6 : class XMLHttpRequest : public XMLHttpRequestEventTarget
27 : {
28 : public:
29 : static already_AddRefed<XMLHttpRequest>
30 : Constructor(const GlobalObject& aGlobal,
31 : const MozXMLHttpRequestParameters& aParams,
32 : ErrorResult& aRv);
33 :
34 : static already_AddRefed<XMLHttpRequest>
35 0 : Constructor(const GlobalObject& aGlobal, const nsAString& ignored,
36 : ErrorResult& aRv)
37 : {
38 : // Pretend like someone passed null, so we can pick up the default values
39 0 : MozXMLHttpRequestParameters params;
40 0 : if (!params.Init(aGlobal.Context(), JS::NullHandleValue)) {
41 0 : aRv.Throw(NS_ERROR_UNEXPECTED);
42 0 : return nullptr;
43 : }
44 :
45 0 : return Constructor(aGlobal, params, aRv);
46 : }
47 :
48 0 : IMPL_EVENT_HANDLER(readystatechange)
49 :
50 : virtual uint16_t
51 : ReadyState() const = 0;
52 :
53 : virtual void
54 : Open(const nsACString& aMethod, const nsAString& aUrl, ErrorResult& aRv) = 0;
55 :
56 : virtual void
57 : Open(const nsACString& aMethod, const nsAString& aUrl, bool aAsync,
58 : const nsAString& aUser, const nsAString& aPassword, ErrorResult& aRv) = 0;
59 :
60 : virtual void
61 : SetRequestHeader(const nsACString& aHeader, const nsACString& aValue,
62 : ErrorResult& aRv) = 0;
63 :
64 : virtual uint32_t
65 : Timeout() const = 0;
66 :
67 : virtual void
68 : SetTimeout(uint32_t aTimeout, ErrorResult& aRv) = 0;
69 :
70 : virtual bool
71 : WithCredentials() const = 0;
72 :
73 : virtual void
74 : SetWithCredentials(bool aWithCredentials, ErrorResult& aRv) = 0;
75 :
76 : virtual XMLHttpRequestUpload*
77 : GetUpload(ErrorResult& aRv) = 0;
78 :
79 : virtual void
80 : Send(JSContext* aCx, ErrorResult& aRv) = 0;
81 :
82 : virtual void
83 : Send(JSContext* aCx, const ArrayBuffer& aArrayBuffer, ErrorResult& aRv) = 0;
84 :
85 : virtual void
86 : Send(JSContext* aCx, const ArrayBufferView& aArrayBufferView,
87 : ErrorResult& aRv) = 0;
88 :
89 : virtual void
90 : Send(JSContext* aCx, Blob& aBlob, ErrorResult& aRv) = 0;
91 :
92 : virtual void
93 : Send(JSContext* aCx, URLSearchParams& aURLSearchParams, ErrorResult& aRv) = 0;
94 :
95 : virtual void
96 : Send(JSContext* aCx, nsIDocument& aDoc, ErrorResult& aRv) = 0;
97 :
98 : virtual void
99 : Send(JSContext* aCx, const nsAString& aString, ErrorResult& aRv) = 0;
100 :
101 : virtual void
102 : Send(JSContext* aCx, FormData& aFormData, ErrorResult& aRv) = 0;
103 :
104 : virtual void
105 : Send(JSContext* aCx, nsIInputStream* aStream, ErrorResult& aRv) = 0;
106 :
107 : virtual void
108 : Abort(ErrorResult& aRv) = 0;
109 :
110 : virtual void
111 : GetResponseURL(nsAString& aUrl) = 0;
112 :
113 : virtual uint32_t
114 : GetStatus(ErrorResult& aRv) = 0;
115 :
116 : virtual void
117 : GetStatusText(nsACString& aStatusText, ErrorResult& aRv) = 0;
118 :
119 : virtual void
120 : GetResponseHeader(const nsACString& aHeader, nsACString& aResult,
121 : ErrorResult& aRv) = 0;
122 :
123 : virtual void
124 : GetAllResponseHeaders(nsACString& aResponseHeaders,
125 : ErrorResult& aRv) = 0;
126 :
127 : virtual void
128 : OverrideMimeType(const nsAString& aMimeType, ErrorResult& aRv) = 0;
129 :
130 : virtual XMLHttpRequestResponseType
131 : ResponseType() const = 0;
132 :
133 : virtual void
134 : SetResponseType(XMLHttpRequestResponseType aType,
135 : ErrorResult& aRv) = 0;
136 :
137 : virtual void
138 : GetResponse(JSContext* aCx, JS::MutableHandle<JS::Value> aResponse,
139 : ErrorResult& aRv) = 0;
140 :
141 : virtual void
142 : GetResponseText(DOMString& aResponseText, ErrorResult& aRv) = 0;
143 :
144 : virtual nsIDocument*
145 : GetResponseXML(ErrorResult& aRv) = 0;
146 :
147 : virtual bool
148 : MozBackgroundRequest() const = 0;
149 :
150 : virtual void
151 : SetMozBackgroundRequest(bool aMozBackgroundRequest, ErrorResult& aRv) = 0;
152 :
153 : virtual nsIChannel*
154 : GetChannel() const = 0;
155 :
156 : virtual void
157 : GetNetworkInterfaceId(nsACString& aId) const = 0;
158 :
159 : virtual void
160 : SetNetworkInterfaceId(const nsACString& aId) = 0;
161 :
162 : // We need a GetInterface callable from JS for chrome JS
163 : virtual void
164 : GetInterface(JSContext* aCx, nsIJSID* aIID,
165 : JS::MutableHandle<JS::Value> aRetval,
166 : ErrorResult& aRv) = 0;
167 :
168 : virtual void
169 : SetOriginAttributes(const mozilla::dom::OriginAttributesDictionary& aAttrs) = 0;
170 :
171 : virtual uint16_t
172 : ErrorCode() const = 0;
173 :
174 : virtual bool
175 : MozAnon() const = 0;
176 :
177 : virtual bool
178 : MozSystem() const = 0;
179 :
180 : virtual JSObject*
181 6 : WrapObject(JSContext *aCx, JS::Handle<JSObject*> aGivenProto) override
182 : {
183 6 : return mozilla::dom::XMLHttpRequestBinding::Wrap(aCx, this, aGivenProto);
184 : }
185 : };
186 :
187 : } // dom namespace
188 : } // mozilla namespace
189 :
190 : #endif // mozilla_dom_XMLHttpRequest_h
|