123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- /* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- #ifndef mozilla_dom_Response_h
- #define mozilla_dom_Response_h
- #include "nsWrapperCache.h"
- #include "nsISupportsImpl.h"
- #include "mozilla/dom/Fetch.h"
- #include "mozilla/dom/ResponseBinding.h"
- #include "InternalHeaders.h"
- #include "InternalResponse.h"
- namespace mozilla {
- namespace ipc {
- class PrincipalInfo;
- } // namespace ipc
- namespace dom {
- class Headers;
- class Response final : public nsISupports
- , public FetchBody<Response>
- , public nsWrapperCache
- {
- NS_DECL_CYCLE_COLLECTING_ISUPPORTS
- NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(Response)
- public:
- Response(nsIGlobalObject* aGlobal, InternalResponse* aInternalResponse, AbortSignal* aSignal);
- Response(const Response& aOther) = delete;
- JSObject*
- WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override
- {
- return ResponseBinding::Wrap(aCx, this, aGivenProto);
- }
- ResponseType
- Type() const
- {
- return mInternalResponse->Type();
- }
- void
- GetUrl(nsAString& aUrl) const
- {
- CopyUTF8toUTF16(mInternalResponse->GetURL(), aUrl);
- }
- bool
- Redirected() const
- {
- return mInternalResponse->IsRedirected();
- }
- uint16_t
- Status() const
- {
- return mInternalResponse->GetStatus();
- }
- bool
- Ok() const
- {
- return mInternalResponse->GetStatus() >= 200 &&
- mInternalResponse->GetStatus() <= 299;
- }
- void
- GetStatusText(nsCString& aStatusText) const
- {
- aStatusText = mInternalResponse->GetStatusText();
- }
- InternalHeaders*
- GetInternalHeaders() const
- {
- return mInternalResponse->Headers();
- }
- void
- InitChannelInfo(nsIChannel* aChannel)
- {
- mInternalResponse->InitChannelInfo(aChannel);
- }
- const ChannelInfo&
- GetChannelInfo() const
- {
- return mInternalResponse->GetChannelInfo();
- }
- const UniquePtr<mozilla::ipc::PrincipalInfo>&
- GetPrincipalInfo() const
- {
- return mInternalResponse->GetPrincipalInfo();
- }
- Headers* Headers_();
- void
- GetBody(nsIInputStream** aStream) { return mInternalResponse->GetBody(aStream); }
- static already_AddRefed<Response>
- Error(const GlobalObject& aGlobal);
- static already_AddRefed<Response>
- Redirect(const GlobalObject& aGlobal, const nsAString& aUrl, uint16_t aStatus, ErrorResult& aRv);
- static already_AddRefed<Response>
- Constructor(const GlobalObject& aGlobal,
- const Optional<Nullable<ArrayBufferOrArrayBufferViewOrBlobOrFormDataOrUSVStringOrURLSearchParams>>& aBody,
- const ResponseInit& aInit, ErrorResult& rv);
- nsIGlobalObject* GetParentObject() const
- {
- return mOwner;
- }
- already_AddRefed<Response>
- Clone(ErrorResult& aRv) const;
- already_AddRefed<Response>
- CloneUnfiltered(ErrorResult& aRv) const;
- void
- SetBody(nsIInputStream* aBody, int64_t aBodySize);
- already_AddRefed<InternalResponse>
- GetInternalResponse() const;
- AbortSignal*
- GetSignal() const override
- {
- return mSignal;
- }
- private:
- ~Response();
- nsCOMPtr<nsIGlobalObject> mOwner;
- RefPtr<InternalResponse> mInternalResponse;
- // Lazily created
- RefPtr<Headers> mHeaders;
- RefPtr<AbortSignal> mSignal;
- };
- } // namespace dom
- } // namespace mozilla
- #endif // mozilla_dom_Response_h
|