зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1231211 P15 Make xhr pass worker ClientInfo and ServiceWorkerDescriptor to NS_NewChannel(). r=asuth
This commit is contained in:
Родитель
ede8f70716
Коммит
a88ba0dac1
|
@ -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++;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче