From 485eb48959b7fdda1f7822fc8fd176c547dbe818 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Mon, 27 Apr 2015 09:18:52 -0400 Subject: [PATCH] Bug 1157898 part 4. Add ErrorResult::ErrorCodeIs() and use it in various places to get rid of ErrorCode(). r=peterv --- dom/base/nsINode.cpp | 2 +- dom/base/nsRange.cpp | 4 ++-- dom/base/nsXMLHttpRequest.cpp | 4 ++-- dom/bindings/ErrorResult.h | 6 +++++- dom/media/webaudio/AudioProcessingEvent.cpp | 2 +- dom/storage/DOMStorage.cpp | 6 +++--- dom/xslt/xpath/XPathEvaluator.cpp | 3 ++- 7 files changed, 16 insertions(+), 11 deletions(-) diff --git a/dom/base/nsINode.cpp b/dom/base/nsINode.cpp index 431e3e99934..6bcf1bd59e5 100644 --- a/dom/base/nsINode.cpp +++ b/dom/base/nsINode.cpp @@ -2412,7 +2412,7 @@ nsINode::ParseSelectorList(const nsAString& aSelectorString, // We hit this for syntax errors, which are quite common, so don't // use NS_ENSURE_SUCCESS. (For example, jQuery has an extended set // of selectors, but it sees if we can parse them first.) - MOZ_ASSERT(aRv.ErrorCode() == NS_ERROR_DOM_SYNTAX_ERR, + MOZ_ASSERT(aRv.ErrorCodeIs(NS_ERROR_DOM_SYNTAX_ERR), "Unexpected error, so cached version won't return it"); cache.CacheList(aSelectorString, nullptr); return nullptr; diff --git a/dom/base/nsRange.cpp b/dom/base/nsRange.cpp index aa0c0da7075..9bb35ae7e4e 100644 --- a/dom/base/nsRange.cpp +++ b/dom/base/nsRange.cpp @@ -724,8 +724,8 @@ nsRange::IsPointInRange(nsINode& aParent, uint32_t aOffset, ErrorResult& aRv) { uint16_t compareResult = ComparePoint(aParent, aOffset, aRv); // If the node isn't in the range's document, it clearly isn't in the range. - if (aRv.ErrorCode() == NS_ERROR_DOM_WRONG_DOCUMENT_ERR) { - aRv = NS_OK; + if (aRv.ErrorCodeIs(NS_ERROR_DOM_WRONG_DOCUMENT_ERR)) { + aRv.SuppressException(); return false; } diff --git a/dom/base/nsXMLHttpRequest.cpp b/dom/base/nsXMLHttpRequest.cpp index df6cddc72d7..dd26140f35f 100644 --- a/dom/base/nsXMLHttpRequest.cpp +++ b/dom/base/nsXMLHttpRequest.cpp @@ -1425,10 +1425,10 @@ nsXMLHttpRequest::GetResponseHeader(const nsACString& header, } aRv = httpChannel->GetResponseHeader(header, _retval); - if (aRv.ErrorCode() == NS_ERROR_NOT_AVAILABLE) { + if (aRv.ErrorCodeIs(NS_ERROR_NOT_AVAILABLE)) { // Means no header _retval.SetIsVoid(true); - aRv = NS_OK; + aRv.SuppressException(); } } diff --git a/dom/bindings/ErrorResult.h b/dom/bindings/ErrorResult.h index 4d241b0e2ce..78f2d5ef809 100644 --- a/dom/bindings/ErrorResult.h +++ b/dom/bindings/ErrorResult.h @@ -129,7 +129,7 @@ public: // StealJSException steals the JS Exception from the object. This method must // be called only if IsJSException() returns true. This method also resets the - // ErrorCode() to NS_OK. + // error code to NS_OK. void StealJSException(JSContext* cx, JS::MutableHandle value); void MOZ_ALWAYS_INLINE MightThrowJSException() @@ -164,6 +164,10 @@ public: return mResult; } + bool ErrorCodeIs(nsresult rv) const { + return mResult == rv; + } + private: friend struct IPC::ParamTraits; void SerializeMessage(IPC::Message* aMsg) const; diff --git a/dom/media/webaudio/AudioProcessingEvent.cpp b/dom/media/webaudio/AudioProcessingEvent.cpp index 671ec861326..f3f67b78def 100644 --- a/dom/media/webaudio/AudioProcessingEvent.cpp +++ b/dom/media/webaudio/AudioProcessingEvent.cpp @@ -55,7 +55,7 @@ AudioProcessingEvent::LazilyCreateBuffer(uint32_t aNumberOfChannels, AudioBuffer::Create(mNode->Context(), aNumberOfChannels, mNode->BufferSize(), mNode->Context()->SampleRate(), cx, aRv); - MOZ_ASSERT(buffer || aRv.ErrorCode() == NS_ERROR_OUT_OF_MEMORY); + MOZ_ASSERT(buffer || aRv.ErrorCodeIs(NS_ERROR_OUT_OF_MEMORY)); return buffer.forget(); } diff --git a/dom/storage/DOMStorage.cpp b/dom/storage/DOMStorage.cpp index 3aca72b41e7..65e1c379ea7 100644 --- a/dom/storage/DOMStorage.cpp +++ b/dom/storage/DOMStorage.cpp @@ -129,7 +129,7 @@ DOMStorage::SetItem(const nsAString& aKey, const nsAString& aData, return; } - if (aRv.ErrorCode() != NS_SUCCESS_DOM_NO_OPERATION) { + if (!aRv.ErrorCodeIs(NS_SUCCESS_DOM_NO_OPERATION)) { BroadcastChangeNotification(aKey, old, aData); } } @@ -148,7 +148,7 @@ DOMStorage::RemoveItem(const nsAString& aKey, ErrorResult& aRv) return; } - if (aRv.ErrorCode() != NS_SUCCESS_DOM_NO_OPERATION) { + if (!aRv.ErrorCodeIs(NS_SUCCESS_DOM_NO_OPERATION)) { BroadcastChangeNotification(aKey, old, NullString()); } } @@ -166,7 +166,7 @@ DOMStorage::Clear(ErrorResult& aRv) return; } - if (aRv.ErrorCode() != NS_SUCCESS_DOM_NO_OPERATION) { + if (!aRv.ErrorCodeIs(NS_SUCCESS_DOM_NO_OPERATION)) { BroadcastChangeNotification(NullString(), NullString(), NullString()); } } diff --git a/dom/xslt/xpath/XPathEvaluator.cpp b/dom/xslt/xpath/XPathEvaluator.cpp index c475bdee48d..99016ccac30 100644 --- a/dom/xslt/xpath/XPathEvaluator.cpp +++ b/dom/xslt/xpath/XPathEvaluator.cpp @@ -150,7 +150,8 @@ XPathEvaluator::CreateExpression(const nsAString & aExpression, aRv = txExprParser::createExpr(PromiseFlatString(aExpression), aContext, getter_Transfers(expression)); if (aRv.Failed()) { - if (aRv.ErrorCode() != NS_ERROR_DOM_NAMESPACE_ERR) { + if (!aRv.ErrorCodeIs(NS_ERROR_DOM_NAMESPACE_ERR)) { + aRv.SuppressException(); aRv.Throw(NS_ERROR_DOM_INVALID_EXPRESSION_ERR); }