gecko/dom/fetch/Request.h
Ehsan Akhgari 2bd9b287e1 Bug 1174868 - Avoid storing RequestContext inside InternalRequest; r=nsm,bkelly,smaug
We are going to infer all RequestContext types from the corresponding
nsContentPolicyType. It no longer makes sense to store both of these on
InternalRequest.  This has the extra benefit that we don't need to worry
about keeping them in sync any more.
2015-06-15 21:36:04 -04:00

132 lines
2.8 KiB
C++

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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"
namespace mozilla {
namespace dom {
class Headers;
class InternalHeaders;
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();
}
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