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
5 : * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 :
7 : #ifndef mozilla_dom_Request_h
8 : #define mozilla_dom_Request_h
9 :
10 : #include "nsIContentPolicy.h"
11 : #include "nsISupportsImpl.h"
12 : #include "nsWrapperCache.h"
13 :
14 : #include "mozilla/dom/Fetch.h"
15 : #include "mozilla/dom/FetchSignal.h"
16 : #include "mozilla/dom/InternalRequest.h"
17 : // Required here due to certain WebIDL enums/classes being declared in both
18 : // files.
19 : #include "mozilla/dom/RequestBinding.h"
20 :
21 : namespace mozilla {
22 : namespace dom {
23 :
24 : class Headers;
25 : class InternalHeaders;
26 : class RequestOrUSVString;
27 :
28 : class Request final : public nsISupports
29 : , public FetchBody<Request>
30 : , public nsWrapperCache
31 : {
32 : NS_DECL_CYCLE_COLLECTING_ISUPPORTS
33 14 : NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(Request)
34 :
35 : public:
36 : Request(nsIGlobalObject* aOwner, InternalRequest* aRequest);
37 :
38 : static bool
39 : RequestContextEnabled(JSContext* aCx, JSObject* aObj);
40 :
41 : JSObject*
42 0 : WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override
43 : {
44 0 : return RequestBinding::Wrap(aCx, this, aGivenProto);
45 : }
46 :
47 : void
48 0 : GetUrl(nsAString& aUrl) const
49 : {
50 0 : nsAutoCString url;
51 0 : mRequest->GetURL(url);
52 0 : CopyUTF8toUTF16(url, aUrl);
53 0 : }
54 :
55 : void
56 0 : GetMethod(nsCString& aMethod) const
57 : {
58 0 : aMethod = mRequest->mMethod;
59 0 : }
60 :
61 : RequestMode
62 0 : Mode() const
63 : {
64 0 : return mRequest->mMode;
65 : }
66 :
67 : RequestCredentials
68 0 : Credentials() const
69 : {
70 0 : return mRequest->mCredentialsMode;
71 : }
72 :
73 : RequestCache
74 0 : Cache() const
75 : {
76 0 : return mRequest->GetCacheMode();
77 : }
78 :
79 : RequestRedirect
80 0 : Redirect() const
81 : {
82 0 : return mRequest->GetRedirectMode();
83 : }
84 :
85 : void
86 0 : GetIntegrity(nsAString& aIntegrity) const
87 : {
88 0 : aIntegrity = mRequest->GetIntegrity();
89 0 : }
90 :
91 : RequestContext
92 0 : Context() const
93 : {
94 0 : return mRequest->Context();
95 : }
96 :
97 : void
98 0 : OverrideContentPolicyType(nsContentPolicyType aContentPolicyType)
99 : {
100 0 : mRequest->OverrideContentPolicyType(aContentPolicyType);
101 0 : }
102 :
103 : bool
104 0 : IsContentPolicyTypeOverridden() const
105 : {
106 0 : return mRequest->IsContentPolicyTypeOverridden();
107 : }
108 :
109 : void
110 0 : GetReferrer(nsAString& aReferrer) const
111 : {
112 0 : mRequest->GetReferrer(aReferrer);
113 0 : }
114 :
115 : ReferrerPolicy
116 0 : ReferrerPolicy_() const
117 : {
118 0 : return mRequest->ReferrerPolicy_();
119 : }
120 :
121 : InternalHeaders*
122 4 : GetInternalHeaders() const
123 : {
124 4 : return mRequest->Headers();
125 : }
126 :
127 : Headers* Headers_();
128 :
129 : void
130 0 : GetBody(nsIInputStream** aStream) { return mRequest->GetBody(aStream); }
131 :
132 : void
133 0 : SetBody(nsIInputStream* aStream) { return mRequest->SetBody(aStream); }
134 :
135 : static already_AddRefed<Request>
136 : Constructor(const GlobalObject& aGlobal, const RequestOrUSVString& aInput,
137 : const RequestInit& aInit, ErrorResult& rv);
138 :
139 0 : nsIGlobalObject* GetParentObject() const
140 : {
141 0 : return mOwner;
142 : }
143 :
144 : already_AddRefed<Request>
145 : Clone(ErrorResult& aRv) const;
146 :
147 : already_AddRefed<InternalRequest>
148 : GetInternalRequest();
149 :
150 : const UniquePtr<mozilla::ipc::PrincipalInfo>&
151 0 : GetPrincipalInfo() const
152 : {
153 0 : return mRequest->GetPrincipalInfo();
154 : }
155 :
156 : private:
157 : ~Request();
158 :
159 : RefPtr<InternalRequest> mRequest;
160 : // Lazily created.
161 : RefPtr<Headers> mHeaders;
162 : };
163 :
164 : } // namespace dom
165 : } // namespace mozilla
166 :
167 : #endif // mozilla_dom_Request_h
|