Bug 1231211 P15 Make xhr pass worker ClientInfo and ServiceWorkerDescriptor to NS_NewChannel(). r=asuth

This commit is contained in:
Ben Kelly 2018-01-23 10:38:54 -05:00
Родитель ede8f70716
Коммит a88ba0dac1
3 изменённых файлов: 37 добавлений и 2 удалений

Просмотреть файл

@ -319,6 +319,14 @@ XMLHttpRequestMainThread::InitParameters(bool aAnon, bool aSystem)
SetParameters(aAnon, aSystem); SetParameters(aAnon, aSystem);
} }
void
XMLHttpRequestMainThread::SetClientInfoAndController(const ClientInfo& aClientInfo,
const Maybe<ServiceWorkerDescriptor>& aController)
{
mClientInfo.emplace(aClientInfo);
mController = aController;
}
void void
XMLHttpRequestMainThread::ResetResponse() XMLHttpRequestMainThread::ResetResponse()
{ {
@ -2503,6 +2511,17 @@ XMLHttpRequestMainThread::CreateChannel()
loadGroup, loadGroup,
nullptr, // aCallbacks nullptr, // aCallbacks
loadFlags); loadFlags);
} else if (mClientInfo.isSome()) {
rv = NS_NewChannel(getter_AddRefs(mChannel),
mRequestURL,
mPrincipal,
mClientInfo.ref(),
mController,
secFlags,
nsIContentPolicy::TYPE_INTERNAL_XMLHTTPREQUEST,
loadGroup,
nullptr, // aCallbacks
loadFlags);
} else { } else {
// Otherwise use the principal. // Otherwise use the principal.
rv = NS_NewChannel(getter_AddRefs(mChannel), rv = NS_NewChannel(getter_AddRefs(mChannel),

Просмотреть файл

@ -32,13 +32,16 @@
#include "mozilla/Assertions.h" #include "mozilla/Assertions.h"
#include "mozilla/Attributes.h" #include "mozilla/Attributes.h"
#include "mozilla/DOMEventTargetHelper.h" #include "mozilla/DOMEventTargetHelper.h"
#include "mozilla/Maybe.h"
#include "mozilla/MemoryReporting.h" #include "mozilla/MemoryReporting.h"
#include "mozilla/NotNull.h" #include "mozilla/NotNull.h"
#include "mozilla/dom/MutableBlobStorage.h" #include "mozilla/dom/MutableBlobStorage.h"
#include "mozilla/dom/BodyExtractor.h" #include "mozilla/dom/BodyExtractor.h"
#include "mozilla/dom/ClientInfo.h"
#include "mozilla/dom/TypedArray.h" #include "mozilla/dom/TypedArray.h"
#include "mozilla/dom/File.h" #include "mozilla/dom/File.h"
#include "mozilla/dom/FormData.h" #include "mozilla/dom/FormData.h"
#include "mozilla/dom/ServiceWorkerDescriptor.h"
#include "mozilla/dom/URLSearchParams.h" #include "mozilla/dom/URLSearchParams.h"
#include "mozilla/dom/XMLHttpRequest.h" #include "mozilla/dom/XMLHttpRequest.h"
#include "mozilla/dom/XMLHttpRequestBinding.h" #include "mozilla/dom/XMLHttpRequestBinding.h"
@ -221,6 +224,9 @@ public:
mIsSystem = aSystem; mIsSystem = aSystem;
} }
void SetClientInfoAndController(const ClientInfo& aClientInfo,
const Maybe<ServiceWorkerDescriptor>& aController);
NS_DECL_ISUPPORTS_INHERITED NS_DECL_ISUPPORTS_INHERITED
// nsIXMLHttpRequest // nsIXMLHttpRequest
@ -690,6 +696,9 @@ protected:
nsCOMPtr<nsIURI> mBaseURI; nsCOMPtr<nsIURI> mBaseURI;
nsCOMPtr<nsILoadGroup> mLoadGroup; nsCOMPtr<nsILoadGroup> mLoadGroup;
Maybe<ClientInfo> mClientInfo;
Maybe<ServiceWorkerDescriptor> mController;
State mState; State mState;
StyleBackendType mStyleBackend; StyleBackendType mStyleBackend;

Просмотреть файл

@ -97,6 +97,8 @@ public:
// Read on multiple threads. // Read on multiple threads.
WorkerPrivate* mWorkerPrivate; WorkerPrivate* mWorkerPrivate;
XMLHttpRequestWorker* mXMLHttpRequestPrivate; XMLHttpRequestWorker* mXMLHttpRequestPrivate;
const ClientInfo mClientInfo;
const Maybe<ServiceWorkerDescriptor> mController;
// XHR Params: // XHR Params:
bool mMozAnon; bool mMozAnon;
@ -132,8 +134,11 @@ public:
bool mArrayBufferResponseWasTransferred; bool mArrayBufferResponseWasTransferred;
public: public:
Proxy(XMLHttpRequestWorker* aXHRPrivate, bool aMozAnon, bool aMozSystem) Proxy(XMLHttpRequestWorker* aXHRPrivate, const ClientInfo& aClientInfo,
const Maybe<ServiceWorkerDescriptor>& aController, bool aMozAnon,
bool aMozSystem)
: mWorkerPrivate(nullptr), mXMLHttpRequestPrivate(aXHRPrivate), : mWorkerPrivate(nullptr), mXMLHttpRequestPrivate(aXHRPrivate),
mClientInfo(aClientInfo), mController(aController),
mMozAnon(aMozAnon), mMozSystem(aMozSystem), mMozAnon(aMozAnon), mMozSystem(aMozSystem),
mInnerEventStreamId(0), mInnerChannelId(0), mOutstandingSendCount(0), mInnerEventStreamId(0), mInnerChannelId(0), mOutstandingSendCount(0),
mOuterEventStreamId(0), mOuterChannelId(0), mOpenCount(0), mLastLoaded(0), mOuterEventStreamId(0), mOuterChannelId(0), mOpenCount(0), mLastLoaded(0),
@ -871,6 +876,7 @@ Proxy::Init()
mWorkerPrivate->GetLoadGroup()); mWorkerPrivate->GetLoadGroup());
mXHR->SetParameters(mMozAnon, mMozSystem); mXHR->SetParameters(mMozAnon, mMozSystem);
mXHR->SetClientInfoAndController(mClientInfo, mController);
ErrorResult rv; ErrorResult rv;
mXHRUpload = mXHR->GetUpload(rv); mXHRUpload = mXHR->GetUpload(rv);
@ -1882,7 +1888,8 @@ XMLHttpRequestWorker::Open(const nsACString& aMethod,
} }
} }
else { else {
mProxy = new Proxy(this, mMozAnon, mMozSystem); mProxy = new Proxy(this, mWorkerPrivate->GetClientInfo(),
mWorkerPrivate->GetController(), mMozAnon, mMozSystem);
} }
mProxy->mOuterEventStreamId++; mProxy->mOuterEventStreamId++;