Bug 1712861 - Get rid of NS_ERROR_DOM_INVALID_ACCESS_XHR_TIMEOUT_AND_RESPONSETYPE_UNSUPPORTED_FOR_SYNC; r=smaug

Differential Revision: https://phabricator.services.mozilla.com/D115946
This commit is contained in:
Edgar Chen
2021-05-26 12:12:09 +00:00
parent 55147a09f6
commit 73a032c685
5 changed files with 35 additions and 42 deletions

View File

@@ -305,7 +305,6 @@ const ErrorCodes = {
NS_ERROR_DOM_INVALID_STATE_XHR_HAS_WRONG_RESPONSETYPE_FOR_RESPONSEXML: 0x805303fe, NS_ERROR_DOM_INVALID_STATE_XHR_HAS_WRONG_RESPONSETYPE_FOR_RESPONSEXML: 0x805303fe,
NS_ERROR_DOM_INVALID_STATE_XHR_HAS_WRONG_RESPONSETYPE_FOR_RESPONSETEXT: 0x805303ff, NS_ERROR_DOM_INVALID_STATE_XHR_HAS_WRONG_RESPONSETYPE_FOR_RESPONSETEXT: 0x805303ff,
NS_ERROR_DOM_INVALID_STATE_XHR_CHUNKED_RESPONSETYPES_UNSUPPORTED_FOR_SYNC: 0x80530400, NS_ERROR_DOM_INVALID_STATE_XHR_CHUNKED_RESPONSETYPES_UNSUPPORTED_FOR_SYNC: 0x80530400,
NS_ERROR_DOM_INVALID_ACCESS_XHR_TIMEOUT_AND_RESPONSETYPE_UNSUPPORTED_FOR_SYNC: 0x80530401,
NS_ERROR_DOM_JS_DECODING_ERROR: 0x80530402, NS_ERROR_DOM_JS_DECODING_ERROR: 0x80530402,
NS_ERROR_DOM_IMAGE_INACTIVE_DOCUMENT: 0x80530403, NS_ERROR_DOM_IMAGE_INACTIVE_DOCUMENT: 0x80530403,
NS_ERROR_DOM_IMAGE_INVALID_REQUEST: 0x80530404, NS_ERROR_DOM_IMAGE_INVALID_REQUEST: 0x80530404,

View File

@@ -144,7 +144,6 @@ DOM4_MSG_DEF(InvalidStateError, "Cannot set 'responseType' property on XMLHttpRe
DOM4_MSG_DEF(InvalidStateError, "Cannot call 'overrideMimeType()' on XMLHttpRequest after 'send()' (when its state is LOADING or DONE).", NS_ERROR_DOM_INVALID_STATE_XHR_MUST_NOT_BE_LOADING_OR_DONE_OVERRIDE_MIME_TYPE) DOM4_MSG_DEF(InvalidStateError, "Cannot call 'overrideMimeType()' on XMLHttpRequest after 'send()' (when its state is LOADING or DONE).", NS_ERROR_DOM_INVALID_STATE_XHR_MUST_NOT_BE_LOADING_OR_DONE_OVERRIDE_MIME_TYPE)
DOM4_MSG_DEF(InvalidStateError, "responseXML is only available if responseType is '' or 'document'.", NS_ERROR_DOM_INVALID_STATE_XHR_HAS_WRONG_RESPONSETYPE_FOR_RESPONSEXML) DOM4_MSG_DEF(InvalidStateError, "responseXML is only available if responseType is '' or 'document'.", NS_ERROR_DOM_INVALID_STATE_XHR_HAS_WRONG_RESPONSETYPE_FOR_RESPONSEXML)
DOM4_MSG_DEF(InvalidStateError, "responseText is only available if responseType is '' or 'text'.", NS_ERROR_DOM_INVALID_STATE_XHR_HAS_WRONG_RESPONSETYPE_FOR_RESPONSETEXT) DOM4_MSG_DEF(InvalidStateError, "responseText is only available if responseType is '' or 'text'.", NS_ERROR_DOM_INVALID_STATE_XHR_HAS_WRONG_RESPONSETYPE_FOR_RESPONSETEXT)
DOM4_MSG_DEF(InvalidAccessError, "synchronous XMLHttpRequests do not support timeout and responseType.", NS_ERROR_DOM_INVALID_ACCESS_XHR_TIMEOUT_AND_RESPONSETYPE_UNSUPPORTED_FOR_SYNC)
/* Image decode errors. */ /* Image decode errors. */
DOM4_MSG_DEF(EncodingError, "Node bound to inactive document.", NS_ERROR_DOM_IMAGE_INACTIVE_DOCUMENT) DOM4_MSG_DEF(EncodingError, "Node bound to inactive document.", NS_ERROR_DOM_IMAGE_INACTIVE_DOCUMENT)

View File

@@ -169,11 +169,6 @@ static void AddLoadFlags(nsIRequest* request, nsLoadFlags newFlags) {
} }
// We are in a sync event loop. // We are in a sync event loop.
#define NOT_CALLABLE_IN_SYNC_SEND \
if (mFlagSyncLooping || mEventDispatchingSuspended) { \
return NS_ERROR_DOM_INVALID_STATE_XHR_HAS_INVALID_CONTEXT; \
}
#define NOT_CALLABLE_IN_SYNC_SEND_RV \ #define NOT_CALLABLE_IN_SYNC_SEND_RV \
if (mFlagSyncLooping || mEventDispatchingSuspended) { \ if (mFlagSyncLooping || mEventDispatchingSuspended) { \
aRv.Throw(NS_ERROR_DOM_INVALID_STATE_XHR_HAS_INVALID_CONTEXT); \ aRv.Throw(NS_ERROR_DOM_INVALID_STATE_XHR_HAS_INVALID_CONTEXT); \
@@ -662,8 +657,8 @@ void XMLHttpRequestMainThread::SetResponseType(
if (HasOrHasHadOwner() && mState != XMLHttpRequest_Binding::UNSENT && if (HasOrHasHadOwner() && mState != XMLHttpRequest_Binding::UNSENT &&
mFlagSynchronous) { mFlagSynchronous) {
LogMessage("ResponseTypeSyncXHRWarning", GetOwner()); LogMessage("ResponseTypeSyncXHRWarning", GetOwner());
aRv.Throw( aRv.ThrowInvalidAccessError(
NS_ERROR_DOM_INVALID_ACCESS_XHR_TIMEOUT_AND_RESPONSETYPE_UNSUPPORTED_FOR_SYNC); "synchronous XMLHttpRequests do not support timeout and responseType");
return; return;
} }
@@ -1386,18 +1381,15 @@ void XMLHttpRequestMainThread::Open(const nsACString& aMethod,
const nsAString& aUsername, const nsAString& aUsername,
const nsAString& aPassword, const nsAString& aPassword,
ErrorResult& aRv) { ErrorResult& aRv) {
nsresult rv = Open(aMethod, NS_ConvertUTF16toUTF8(aUrl), aAsync, aUsername, aPassword, aRv);
Open(aMethod, NS_ConvertUTF16toUTF8(aUrl), aAsync, aUsername, aPassword);
if (NS_FAILED(rv)) {
aRv.Throw(rv);
}
} }
nsresult XMLHttpRequestMainThread::Open(const nsACString& aMethod, void XMLHttpRequestMainThread::Open(const nsACString& aMethod,
const nsACString& aUrl, bool aAsync, const nsACString& aUrl, bool aAsync,
const nsAString& aUsername, const nsAString& aUsername,
const nsAString& aPassword) { const nsAString& aPassword,
NOT_CALLABLE_IN_SYNC_SEND ErrorResult& aRv) {
NOT_CALLABLE_IN_SYNC_SEND_RV
// Gecko-specific // Gecko-specific
if (!aAsync && !DontWarnAboutSyncXHR() && GetOwner() && if (!aAsync && !DontWarnAboutSyncXHR() && GetOwner() &&
@@ -1414,12 +1406,15 @@ nsresult XMLHttpRequestMainThread::Open(const nsACString& aMethod,
if (!responsibleDocument) { if (!responsibleDocument) {
// This could be because we're no longer current or because we're in some // This could be because we're no longer current or because we're in some
// non-window context... // non-window context...
nsresult rv = CheckCurrentGlobalCorrectness(); if (NS_WARN_IF(NS_FAILED(CheckCurrentGlobalCorrectness()))) {
if (NS_WARN_IF(NS_FAILED(rv))) { aRv.Throw(NS_ERROR_DOM_INVALID_STATE_XHR_HAS_INVALID_CONTEXT);
return NS_ERROR_DOM_INVALID_STATE_XHR_HAS_INVALID_CONTEXT; return;
} }
} }
NS_ENSURE_TRUE(mPrincipal, NS_ERROR_NOT_INITIALIZED); if (!mPrincipal) {
aRv.Throw(NS_ERROR_NOT_INITIALIZED);
return;
}
// Gecko-specific // Gecko-specific
if (!aAsync && responsibleDocument && GetOwner()) { if (!aAsync && responsibleDocument && GetOwner()) {
@@ -1438,9 +1433,9 @@ nsresult XMLHttpRequestMainThread::Open(const nsACString& aMethod,
// Steps 2-4 // Steps 2-4
nsAutoCString method; nsAutoCString method;
nsresult rv = FetchUtil::GetValidRequestMethod(aMethod, method); aRv = FetchUtil::GetValidRequestMethod(aMethod, method);
if (NS_WARN_IF(NS_FAILED(rv))) { if (NS_WARN_IF(aRv.Failed())) {
return rv; return;
} }
// Steps 5-6 // Steps 5-6
@@ -1460,15 +1455,19 @@ nsresult XMLHttpRequestMainThread::Open(const nsACString& aMethod,
} }
nsCOMPtr<nsIURI> parsedURL; nsCOMPtr<nsIURI> parsedURL;
rv = NS_NewURI(getter_AddRefs(parsedURL), aUrl, originCharset, baseURI); nsresult rv =
NS_NewURI(getter_AddRefs(parsedURL), aUrl, originCharset, baseURI);
if (NS_FAILED(rv)) { if (NS_FAILED(rv)) {
if (rv == NS_ERROR_MALFORMED_URI) { if (rv == NS_ERROR_MALFORMED_URI) {
return NS_ERROR_DOM_MALFORMED_URI; aRv.Throw(NS_ERROR_DOM_MALFORMED_URI);
return;
} }
return rv; aRv.Throw(rv);
return;
} }
if (NS_WARN_IF(NS_FAILED(CheckCurrentGlobalCorrectness()))) { if (NS_WARN_IF(NS_FAILED(CheckCurrentGlobalCorrectness()))) {
return NS_ERROR_DOM_INVALID_STATE_XHR_HAS_INVALID_CONTEXT; aRv.Throw(NS_ERROR_DOM_INVALID_STATE_XHR_HAS_INVALID_CONTEXT);
return;
} }
// Step 7 // Step 7
@@ -1499,7 +1498,9 @@ nsresult XMLHttpRequestMainThread::Open(const nsACString& aMethod,
if (mResponseType != XMLHttpRequestResponseType::_empty) { if (mResponseType != XMLHttpRequestResponseType::_empty) {
LogMessage("ResponseTypeSyncXHRWarning", GetOwner()); LogMessage("ResponseTypeSyncXHRWarning", GetOwner());
} }
return NS_ERROR_DOM_INVALID_ACCESS_XHR_TIMEOUT_AND_RESPONSETYPE_UNSUPPORTED_FOR_SYNC; aRv.ThrowInvalidAccessError(
"synchronous XMLHttpRequests do not support timeout and responseType");
return;
} }
// Step 10 // Step 10
@@ -1532,8 +1533,6 @@ nsresult XMLHttpRequestMainThread::Open(const nsACString& aMethod,
mState = XMLHttpRequest_Binding::OPENED; mState = XMLHttpRequest_Binding::OPENED;
FireReadystatechangeEvent(); FireReadystatechangeEvent();
} }
return NS_OK;
} }
void XMLHttpRequestMainThread::SetOriginAttributes( void XMLHttpRequestMainThread::SetOriginAttributes(
@@ -3148,8 +3147,8 @@ void XMLHttpRequestMainThread::SetTimeout(uint32_t aTimeout, ErrorResult& aRv) {
/* Timeout is not supported for synchronous requests with an owning window, /* Timeout is not supported for synchronous requests with an owning window,
per XHR2 spec. */ per XHR2 spec. */
LogMessage("TimeoutSyncXHRWarning", GetOwner()); LogMessage("TimeoutSyncXHRWarning", GetOwner());
aRv.Throw( aRv.ThrowInvalidAccessError(
NS_ERROR_DOM_INVALID_ACCESS_XHR_TIMEOUT_AND_RESPONSETYPE_UNSUPPORTED_FOR_SYNC); "synchronous XMLHttpRequests do not support timeout and responseType");
return; return;
} }

View File

@@ -275,8 +275,9 @@ class XMLHttpRequestMainThread final : public XMLHttpRequest,
bool aAsync, const nsAString& aUsername, bool aAsync, const nsAString& aUsername,
const nsAString& aPassword, ErrorResult& aRv) override; const nsAString& aPassword, ErrorResult& aRv) override;
nsresult Open(const nsACString& aMethod, const nsACString& aUrl, bool aAsync, void Open(const nsACString& aMethod, const nsACString& aUrl, bool aAsync,
const nsAString& aUsername, const nsAString& aPassword); const nsAString& aUsername, const nsAString& aPassword,
ErrorResult& aRv);
virtual void SetRequestHeader(const nsACString& aName, virtual void SetRequestHeader(const nsACString& aName,
const nsACString& aValue, const nsACString& aValue,

View File

@@ -739,11 +739,6 @@ with modules["DOM"]:
] = FAILURE( ] = FAILURE(
1024 1024
) # NOQA: E501 ) # NOQA: E501
errors[
"NS_ERROR_DOM_INVALID_ACCESS_XHR_TIMEOUT_AND_RESPONSETYPE_UNSUPPORTED_FOR_SYNC"
] = FAILURE(
1025
) # NOQA: E501
# When manipulating the bytecode cache with the JS API, some transcoding # When manipulating the bytecode cache with the JS API, some transcoding
# errors, such as a different bytecode format can cause failures of the # errors, such as a different bytecode format can cause failures of the