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 14 class nsIJSID; 15 16 namespace mozilla { 17 namespace dom { 18 19 class Blob; 20 class DOMString; 21 class FormData; 22 class URLSearchParams; 23 class XMLHttpRequestUpload; 24 25 class XMLHttpRequest : public XMLHttpRequestEventTarget { 26 public: 27 static already_AddRefed<XMLHttpRequest> Constructor( 28 const GlobalObject& aGlobal, const MozXMLHttpRequestParameters& aParams, 29 ErrorResult& aRv); 30 Constructor(const GlobalObject & aGlobal,const nsAString & ignored,ErrorResult & aRv)31 static already_AddRefed<XMLHttpRequest> Constructor( 32 const GlobalObject& aGlobal, const nsAString& ignored, ErrorResult& aRv) { 33 // Pretend like someone passed null, so we can pick up the default values 34 MozXMLHttpRequestParameters params; 35 if (!params.Init(aGlobal.Context(), JS::NullHandleValue)) { 36 aRv.Throw(NS_ERROR_UNEXPECTED); 37 return nullptr; 38 } 39 40 return Constructor(aGlobal, params, aRv); 41 } 42 43 IMPL_EVENT_HANDLER(readystatechange) 44 45 virtual uint16_t ReadyState() const = 0; 46 47 virtual void Open(const nsACString& aMethod, const nsAString& aUrl, 48 ErrorResult& aRv) = 0; 49 50 virtual void Open(const nsACString& aMethod, const nsAString& aUrl, 51 bool aAsync, const nsAString& aUser, 52 const nsAString& aPassword, ErrorResult& aRv) = 0; 53 54 virtual void SetRequestHeader(const nsACString& aHeader, 55 const nsACString& aValue, ErrorResult& aRv) = 0; 56 57 virtual uint32_t Timeout() const = 0; 58 59 virtual void SetTimeout(uint32_t aTimeout, ErrorResult& aRv) = 0; 60 61 virtual bool WithCredentials() const = 0; 62 63 virtual void SetWithCredentials(bool aWithCredentials, ErrorResult& aRv) = 0; 64 65 virtual XMLHttpRequestUpload* GetUpload(ErrorResult& aRv) = 0; 66 67 virtual void Send( 68 JSContext* aCx, 69 const Nullable< 70 DocumentOrBlobOrArrayBufferViewOrArrayBufferOrFormDataOrURLSearchParamsOrUSVString>& 71 aData, 72 ErrorResult& aRv) = 0; 73 74 virtual void SendInputStream(nsIInputStream* aInputStream, 75 ErrorResult& aRv) = 0; 76 77 virtual void Abort(ErrorResult& aRv) = 0; 78 79 virtual void GetResponseURL(nsAString& aUrl) = 0; 80 81 virtual uint32_t GetStatus(ErrorResult& aRv) = 0; 82 83 virtual void GetStatusText(nsACString& aStatusText, ErrorResult& aRv) = 0; 84 85 virtual void GetResponseHeader(const nsACString& aHeader, nsACString& aResult, 86 ErrorResult& aRv) = 0; 87 88 virtual void GetAllResponseHeaders(nsACString& aResponseHeaders, 89 ErrorResult& aRv) = 0; 90 91 virtual void OverrideMimeType(const nsAString& aMimeType, 92 ErrorResult& aRv) = 0; 93 94 virtual XMLHttpRequestResponseType ResponseType() const = 0; 95 96 virtual void SetResponseType(XMLHttpRequestResponseType aType, 97 ErrorResult& aRv) = 0; 98 99 virtual void GetResponse(JSContext* aCx, 100 JS::MutableHandle<JS::Value> aResponse, 101 ErrorResult& aRv) = 0; 102 103 virtual void GetResponseText(DOMString& aResponseText, ErrorResult& aRv) = 0; 104 105 virtual nsIDocument* GetResponseXML(ErrorResult& aRv) = 0; 106 107 virtual bool MozBackgroundRequest() const = 0; 108 109 virtual void SetMozBackgroundRequest(bool aMozBackgroundRequest, 110 ErrorResult& aRv) = 0; 111 112 virtual nsIChannel* GetChannel() const = 0; 113 114 virtual void GetNetworkInterfaceId(nsACString& aId) const = 0; 115 116 virtual void SetNetworkInterfaceId(const nsACString& aId) = 0; 117 118 // We need a GetInterface callable from JS for chrome JS 119 virtual void GetInterface(JSContext* aCx, nsIJSID* aIID, 120 JS::MutableHandle<JS::Value> aRetval, 121 ErrorResult& aRv) = 0; 122 123 virtual void SetOriginAttributes( 124 const mozilla::dom::OriginAttributesDictionary& aAttrs) = 0; 125 126 virtual uint16_t ErrorCode() const = 0; 127 128 virtual bool MozAnon() const = 0; 129 130 virtual bool MozSystem() const = 0; 131 WrapObject(JSContext * aCx,JS::Handle<JSObject * > aGivenProto)132 virtual JSObject* WrapObject(JSContext* aCx, 133 JS::Handle<JSObject*> aGivenProto) override { 134 return mozilla::dom::XMLHttpRequestBinding::Wrap(aCx, this, aGivenProto); 135 } 136 }; 137 138 } // namespace dom 139 } // namespace mozilla 140 141 #endif // mozilla_dom_XMLHttpRequest_h 142