mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-07 04:05:49 +00:00
47c59f235a
As the documentation in InternalRequest.h in this patch shows, the mapping between nsContentPolicyType and RequestContext is not complete yet. Because the InternalRequest object needs to know the actual nsContentPolicyType in order for FetchDriver to be able to use that information, we can't just store the RequestContext. Therefore, this patch adds both of these to InternalRequest. Once we get to a stage where we have a complete mapping of these values, we can store only one of them and compute the other from it. That requires addressing all of the TODO comments in the InternalRequest.h documentation.
141 lines
2.9 KiB
C++
141 lines
2.9 KiB
C++
/* -*- Mode: C++; tab-width: 2; 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_Request_h
|
|
#define mozilla_dom_Request_h
|
|
|
|
#include "nsIContentPolicy.h"
|
|
#include "nsISupportsImpl.h"
|
|
#include "nsWrapperCache.h"
|
|
|
|
#include "mozilla/dom/Fetch.h"
|
|
#include "mozilla/dom/InternalRequest.h"
|
|
// Required here due to certain WebIDL enums/classes being declared in both
|
|
// files.
|
|
#include "mozilla/dom/RequestBinding.h"
|
|
|
|
class nsPIDOMWindow;
|
|
|
|
namespace mozilla {
|
|
namespace dom {
|
|
|
|
class Headers;
|
|
class InternalHeaders;
|
|
class Promise;
|
|
class RequestOrUSVString;
|
|
|
|
class Request final : public nsISupports
|
|
, public FetchBody<Request>
|
|
, public nsWrapperCache
|
|
{
|
|
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
|
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(Request)
|
|
|
|
public:
|
|
Request(nsIGlobalObject* aOwner, InternalRequest* aRequest);
|
|
|
|
JSObject*
|
|
WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override
|
|
{
|
|
return RequestBinding::Wrap(aCx, this, aGivenProto);
|
|
}
|
|
|
|
void
|
|
GetUrl(nsAString& aUrl) const
|
|
{
|
|
CopyUTF8toUTF16(mRequest->mURL, aUrl);
|
|
}
|
|
|
|
void
|
|
GetMethod(nsCString& aMethod) const
|
|
{
|
|
aMethod = mRequest->mMethod;
|
|
}
|
|
|
|
RequestMode
|
|
Mode() const
|
|
{
|
|
if (mRequest->mMode == RequestMode::Cors_with_forced_preflight) {
|
|
return RequestMode::Cors;
|
|
}
|
|
return mRequest->mMode;
|
|
}
|
|
|
|
RequestCredentials
|
|
Credentials() const
|
|
{
|
|
return mRequest->mCredentialsMode;
|
|
}
|
|
|
|
RequestCache
|
|
Cache() const
|
|
{
|
|
return mRequest->GetCacheMode();
|
|
}
|
|
|
|
RequestContext
|
|
Context() const
|
|
{
|
|
return mRequest->Context();
|
|
}
|
|
|
|
// [ChromeOnly]
|
|
void
|
|
SetContext(RequestContext aContext)
|
|
{
|
|
mRequest->SetContext(aContext);
|
|
}
|
|
|
|
void
|
|
SetContentPolicyType(nsContentPolicyType aContentPolicyType)
|
|
{
|
|
mRequest->SetContentPolicyType(aContentPolicyType);
|
|
}
|
|
|
|
void
|
|
GetReferrer(nsAString& aReferrer) const
|
|
{
|
|
mRequest->GetReferrer(aReferrer);
|
|
}
|
|
|
|
InternalHeaders*
|
|
GetInternalHeaders() const
|
|
{
|
|
return mRequest->Headers();
|
|
}
|
|
|
|
Headers* Headers_();
|
|
|
|
void
|
|
GetBody(nsIInputStream** aStream) { return mRequest->GetBody(aStream); }
|
|
|
|
static already_AddRefed<Request>
|
|
Constructor(const GlobalObject& aGlobal, const RequestOrUSVString& aInput,
|
|
const RequestInit& aInit, ErrorResult& rv);
|
|
|
|
nsIGlobalObject* GetParentObject() const
|
|
{
|
|
return mOwner;
|
|
}
|
|
|
|
already_AddRefed<Request>
|
|
Clone(ErrorResult& aRv) const;
|
|
|
|
already_AddRefed<InternalRequest>
|
|
GetInternalRequest();
|
|
private:
|
|
~Request();
|
|
|
|
nsCOMPtr<nsIGlobalObject> mOwner;
|
|
nsRefPtr<InternalRequest> mRequest;
|
|
// Lazily created.
|
|
nsRefPtr<Headers> mHeaders;
|
|
};
|
|
|
|
} // namespace dom
|
|
} // namespace mozilla
|
|
|
|
#endif // mozilla_dom_Request_h
|