Bug 792808 - Migrate XMLHttpRequestWorker away from using other nsIXMLHttpRequest interfaces; r=baku

MozReview-Commit-ID: IiaaeNyNSDv

--HG--
extra : rebase_source : a164b1486f43dbe15f468539a7bae566010d9859
This commit is contained in:
Thomas Wisniewski 2017-09-27 11:35:30 -04:00
Родитель 284a7bbf1d
Коммит 73df5c19c6
1 изменённых файлов: 33 добавлений и 31 удалений

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

@ -9,7 +9,6 @@
#include "nsIDOMEvent.h"
#include "nsIDOMEventListener.h"
#include "nsIRunnable.h"
#include "nsIXMLHttpRequest.h"
#include "nsIXPConnect.h"
#include "jsfriendapi.h"
@ -301,7 +300,7 @@ const char* const sEventStrings[] = {
"progress",
"timeout",
// nsIXMLHttpRequest event types, supported only by XHR.
// XMLHttpRequest event types, supported only by XHR.
"readystatechange",
"loadend",
};
@ -1009,9 +1008,7 @@ Proxy::HandleEvent(nsIDOMEvent* aEvent)
ProgressEvent* progressEvent = aEvent->InternalDOMEvent()->AsProgressEvent();
if (mInOpen && type.EqualsASCII(sEventStrings[STRING_readystatechange])) {
uint16_t readyState = 0;
if (NS_SUCCEEDED(mXHR->GetReadyState(&readyState)) &&
readyState == nsIXMLHttpRequest::OPENED) {
if (mXHR->ReadyState() == 1) {
mInnerEventStreamId++;
}
}
@ -1135,9 +1132,9 @@ EventRunnable::PreDispatch(WorkerPrivate* /* unused */)
RefPtr<XMLHttpRequestMainThread>& xhr = mProxy->mXHR;
MOZ_ASSERT(xhr);
if (NS_FAILED(xhr->GetResponseType(mResponseType))) {
MOZ_ASSERT(false, "This should never fail!");
}
const EnumEntry& entry =
XMLHttpRequestResponseTypeValues::strings[static_cast<uint32_t>(xhr->ResponseType())];
mResponseType.AssignASCII(entry.value, entry.length);
ErrorResult rv;
xhr->GetResponseText(mResponseText, rv);
@ -1151,7 +1148,8 @@ EventRunnable::PreDispatch(WorkerPrivate* /* unused */)
}
else {
JS::Rooted<JS::Value> response(cx);
mResponseResult = xhr->GetResponse(cx, &response);
xhr->GetResponse(cx, &response, rv);
mResponseResult = rv.StealNSResult();
if (NS_SUCCEEDED(mResponseResult)) {
if (!response.isGCThing()) {
mResponse = response;
@ -1174,7 +1172,7 @@ EventRunnable::PreDispatch(WorkerPrivate* /* unused */)
if (obj) {
transferable.setObject(*obj);
// Only cache the response when the readyState is DONE.
if (xhr->ReadyState() == nsIXMLHttpRequest::DONE) {
if (xhr->ReadyState() == 4) {
mProxy->mArrayBufferResponseWasTransferred = true;
}
} else {
@ -1196,7 +1194,8 @@ EventRunnable::PreDispatch(WorkerPrivate* /* unused */)
}
}
mStatusResult = xhr->GetStatus(&mStatus);
mStatus = xhr->GetStatus(rv);
mStatusResult = rv.StealNSResult();
xhr->GetStatusText(mStatusText, rv);
MOZ_ASSERT(!rv.Failed());
@ -1412,42 +1411,45 @@ OpenRunnable::MainThreadRunInternal()
return NS_ERROR_DOM_INVALID_STATE_ERR;
}
nsresult rv;
if (mBackgroundRequest) {
rv = mProxy->mXHR->SetMozBackgroundRequest(mBackgroundRequest);
nsresult rv = mProxy->mXHR->SetMozBackgroundRequest(mBackgroundRequest);
NS_ENSURE_SUCCESS(rv, rv);
}
ErrorResult rv;
if (mWithCredentials) {
rv = mProxy->mXHR->SetWithCredentials(mWithCredentials);
NS_ENSURE_SUCCESS(rv, rv);
mProxy->mXHR->SetWithCredentials(mWithCredentials, rv);
if (NS_WARN_IF(rv.Failed())) {
return rv.StealNSResult();
}
}
if (mTimeout) {
rv = mProxy->mXHR->SetTimeout(mTimeout);
NS_ENSURE_SUCCESS(rv, rv);
mProxy->mXHR->SetTimeout(mTimeout, rv);
if (NS_WARN_IF(rv.Failed())) {
return rv.StealNSResult();
}
}
MOZ_ASSERT(!mProxy->mInOpen);
mProxy->mInOpen = true;
ErrorResult rv2;
mProxy->mXHR->Open(mMethod, mURL, true,
mUser.WasPassed() ? mUser.Value() : VoidString(),
mPassword.WasPassed() ? mPassword.Value() : VoidString(),
rv2);
rv);
MOZ_ASSERT(mProxy->mInOpen);
mProxy->mInOpen = false;
if (rv2.Failed()) {
return rv2.StealNSResult();
if (NS_WARN_IF(rv.Failed())) {
return rv.StealNSResult();
}
mProxy->mXHR->SetResponseType(mResponseType, rv2);
if (rv2.Failed()) {
return rv2.StealNSResult();
mProxy->mXHR->SetResponseType(mResponseType, rv);
if (NS_WARN_IF(rv.Failed())) {
return rv.StealNSResult();
}
return NS_OK;
@ -2186,10 +2188,10 @@ XMLHttpRequestWorker::Abort(ErrorResult& aRv)
// Set our status to 0 and statusText to "" if we
// will be aborting an ongoing fetch, so the upcoming
// abort events we dispatch have the correct info.
if ((mStateData.mReadyState == nsIXMLHttpRequest::OPENED && mStateData.mFlagSend) ||
mStateData.mReadyState == nsIXMLHttpRequest::HEADERS_RECEIVED ||
mStateData.mReadyState == nsIXMLHttpRequest::LOADING ||
mStateData.mReadyState == nsIXMLHttpRequest::DONE) {
if ((mStateData.mReadyState == State::opened && mStateData.mFlagSend) ||
mStateData.mReadyState == State::headers_received ||
mStateData.mReadyState == State::loading ||
mStateData.mReadyState == State::done) {
mStateData.mStatus = 0;
mStateData.mStatusText.Truncate();
}
@ -2282,7 +2284,7 @@ XMLHttpRequestWorker::OverrideMimeType(const nsAString& aMimeType, ErrorResult&
// method has not been called, unless the send has been aborted.
if (!mProxy || (SendInProgress() &&
(mProxy->mSeenLoadStart ||
mStateData.mReadyState > nsIXMLHttpRequest::OPENED))) {
mStateData.mReadyState > 1))) {
aRv.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
return;
}
@ -2318,7 +2320,7 @@ XMLHttpRequestWorker::SetResponseType(XMLHttpRequestResponseType aResponseType,
if (SendInProgress() &&
(mProxy->mSeenLoadStart ||
mStateData.mReadyState > nsIXMLHttpRequest::OPENED)) {
mStateData.mReadyState > 1)) {
aRv.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
return;
}