diff --git a/dom/base/nsRange.cpp b/dom/base/nsRange.cpp index bf0245c5240c..c1dc271d8e68 100644 --- a/dom/base/nsRange.cpp +++ b/dom/base/nsRange.cpp @@ -2431,18 +2431,6 @@ nsRange::ExtractContents(ErrorResult& rv) return fragment.forget(); } -NS_IMETHODIMP -nsRange::CompareBoundaryPoints(uint16_t aHow, nsIDOMRange* aOtherRange, - int16_t* aCmpRet) -{ - nsRange* otherRange = static_cast(aOtherRange); - NS_ENSURE_TRUE(otherRange, NS_ERROR_NULL_POINTER); - - ErrorResult rv; - *aCmpRet = CompareBoundaryPoints(aHow, *otherRange, rv); - return rv.StealNSResult(); -} - int16_t nsRange::CompareBoundaryPoints(uint16_t aHow, nsRange& aOtherRange, ErrorResult& rv) @@ -2456,25 +2444,25 @@ nsRange::CompareBoundaryPoints(uint16_t aHow, nsRange& aOtherRange, uint32_t ourOffset, otherOffset; switch (aHow) { - case nsIDOMRange::START_TO_START: + case RangeBinding::START_TO_START: ourNode = mStart.Container(); ourOffset = mStart.Offset(); otherNode = aOtherRange.GetStartContainer(); otherOffset = aOtherRange.StartOffset(); break; - case nsIDOMRange::START_TO_END: + case RangeBinding::START_TO_END: ourNode = mEnd.Container(); ourOffset = mEnd.Offset(); otherNode = aOtherRange.GetStartContainer(); otherOffset = aOtherRange.StartOffset(); break; - case nsIDOMRange::END_TO_START: + case RangeBinding::END_TO_START: ourNode = mStart.Container(); ourOffset = mStart.Offset(); otherNode = aOtherRange.GetEndContainer(); otherOffset = aOtherRange.EndOffset(); break; - case nsIDOMRange::END_TO_END: + case RangeBinding::END_TO_END: ourNode = mEnd.Container(); ourOffset = mEnd.Offset(); otherNode = aOtherRange.GetEndContainer(); diff --git a/dom/interfaces/range/nsIDOMRange.idl b/dom/interfaces/range/nsIDOMRange.idl index 55b83373efee..924f40840dd5 100644 --- a/dom/interfaces/range/nsIDOMRange.idl +++ b/dom/interfaces/range/nsIDOMRange.idl @@ -22,14 +22,6 @@ interface nsIDOMRange : nsISupports void setEndBefore(in nsIDOMNode refNode); void setEndAfter(in nsIDOMNode refNode); - // CompareHow - const unsigned short START_TO_START = 0; - const unsigned short START_TO_END = 1; - const unsigned short END_TO_END = 2; - const unsigned short END_TO_START = 3; - - short compareBoundaryPoints(in unsigned short how, - in nsIDOMRange sourceRange); void deleteContents(); nsIDOMDocumentFragment extractContents(); nsIDOMDocumentFragment cloneContents(); diff --git a/editor/libeditor/HTMLEditRules.cpp b/editor/libeditor/HTMLEditRules.cpp index 1c50248b2540..403d46cc6464 100644 --- a/editor/libeditor/HTMLEditRules.cpp +++ b/editor/libeditor/HTMLEditRules.cpp @@ -24,6 +24,7 @@ #include "mozilla/Unused.h" #include "mozilla/dom/Selection.h" #include "mozilla/dom/Element.h" +#include "mozilla/dom/RangeBinding.h" #include "mozilla/OwningNonNull.h" #include "mozilla/mozalloc.h" #include "nsAString.h" @@ -8835,24 +8836,25 @@ HTMLEditRules::UpdateDocChangeRange(nsRange* aRange) // clone aRange. mDocChangeRange = aRange->CloneRange(); } else { - int16_t result; - // compare starts of ranges - nsresult rv = - mDocChangeRange->CompareBoundaryPoints(nsIDOMRange::START_TO_START, - aRange, &result); - if (rv == NS_ERROR_NOT_INITIALIZED) { + ErrorResult error; + int16_t result = + mDocChangeRange->CompareBoundaryPoints(RangeBinding::START_TO_START, + *aRange, error); + if (error.ErrorCodeIs(NS_ERROR_NOT_INITIALIZED)) { // This will happen is mDocChangeRange is non-null, but the range is // uninitialized. In this case we'll set the start to aRange start. // The same test won't be needed further down since after we've set // the start the range will be collapsed to that point. result = 1; - rv = NS_OK; + error.SuppressException(); } - NS_ENSURE_SUCCESS(rv, rv); + if (NS_WARN_IF(error.Failed())) { + return error.StealNSResult(); + } + // Positive result means mDocChangeRange start is after aRange start. if (result > 0) { - ErrorResult error; mDocChangeRange->SetStart(atStart.AsRaw(), error); if (NS_WARN_IF(error.Failed())) { return error.StealNSResult(); @@ -8860,16 +8862,19 @@ HTMLEditRules::UpdateDocChangeRange(nsRange* aRange) } // compare ends of ranges - rv = mDocChangeRange->CompareBoundaryPoints(nsIDOMRange::END_TO_END, - aRange, &result); - NS_ENSURE_SUCCESS(rv, rv); + result = + mDocChangeRange->CompareBoundaryPoints(RangeBinding::END_TO_END, + *aRange, error); + if (NS_WARN_IF(error.Failed())) { + return error.StealNSResult(); + } + // Negative result means mDocChangeRange end is before aRange end. if (result < 0) { const RangeBoundary& atEnd = aRange->EndRef(); if (NS_WARN_IF(!atEnd.IsSet())) { return NS_ERROR_FAILURE; } - ErrorResult error; mDocChangeRange->SetEnd(atEnd.AsRaw(), error); if (NS_WARN_IF(error.Failed())) { return error.StealNSResult(); diff --git a/editor/libeditor/SelectionState.cpp b/editor/libeditor/SelectionState.cpp index 6ccdbdd3db27..9dff5ff297f7 100644 --- a/editor/libeditor/SelectionState.cpp +++ b/editor/libeditor/SelectionState.cpp @@ -7,6 +7,7 @@ #include "mozilla/Assertions.h" // for MOZ_ASSERT, etc. #include "mozilla/EditorUtils.h" // for EditorUtils +#include "mozilla/dom/RangeBinding.h" #include "mozilla/dom/Selection.h" // for Selection #include "nsAString.h" // for nsAString::Length #include "nsCycleCollectionParticipant.h" @@ -123,14 +124,15 @@ SelectionState::IsEqual(SelectionState* aSelState) RefPtr itsRange = aSelState->mArray[i]->GetRange(); NS_ENSURE_TRUE(myRange && itsRange, false); - int16_t compResult; - nsresult rv; - rv = myRange->CompareBoundaryPoints(nsIDOMRange::START_TO_START, itsRange, &compResult); - if (NS_FAILED(rv) || compResult) { + IgnoredErrorResult rv; + int16_t compResult = + myRange->CompareBoundaryPoints(RangeBinding::START_TO_START, *itsRange, rv); + if (rv.Failed() || compResult) { return false; } - rv = myRange->CompareBoundaryPoints(nsIDOMRange::END_TO_END, itsRange, &compResult); - if (NS_FAILED(rv) || compResult) { + compResult = + myRange->CompareBoundaryPoints(RangeBinding::END_TO_END, *itsRange, rv); + if (rv.Failed() || compResult) { return false; } } diff --git a/toolkit/components/typeaheadfind/nsTypeAheadFind.cpp b/toolkit/components/typeaheadfind/nsTypeAheadFind.cpp index 4f9193b9626a..48c0f772974e 100644 --- a/toolkit/components/typeaheadfind/nsTypeAheadFind.cpp +++ b/toolkit/components/typeaheadfind/nsTypeAheadFind.cpp @@ -51,14 +51,15 @@ #include "nsFocusManager.h" #include "mozilla/dom/Element.h" #include "mozilla/dom/Link.h" +#include "mozilla/dom/RangeBinding.h" #include "mozilla/dom/Selection.h" #include "nsRange.h" #include "nsXBLBinding.h" #include "nsTypeAheadFind.h" -using mozilla::dom::Selection; -using mozilla::IgnoreErrors; +using namespace mozilla; +using namespace mozilla::dom; NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsTypeAheadFind) NS_INTERFACE_MAP_ENTRY(nsITypeAheadFind) @@ -435,12 +436,14 @@ nsTypeAheadFind::FindItNow(nsIPresShell *aPresShell, bool aIsLinksOnly, return NS_ERROR_FAILURE; } - int16_t rangeCompareResult = 0; if (!mStartPointRange) { mStartPointRange = new nsRange(presShell->GetDocument()); } - mStartPointRange->CompareBoundaryPoints(nsIDOMRange::START_TO_START, mSearchRange, &rangeCompareResult); + // XXXbz Should this really be ignoring errors? + int16_t rangeCompareResult = + mStartPointRange->CompareBoundaryPoints(RangeBinding::START_TO_START, + *mSearchRange, IgnoreErrors()); // No need to wrap find in doc if starting at beginning bool hasWrapped = (rangeCompareResult < 0); @@ -493,11 +496,11 @@ nsTypeAheadFind::FindItNow(nsIPresShell *aPresShell, bool aIsLinksOnly, // We can continue at the end of mStartPointRange if its end is before // the start of returnRange or coincides with it. Otherwise, we need // to continue at the start of returnRange. - int16_t compareResult; - nsresult rv = - mStartPointRange->CompareBoundaryPoints(nsIDOMRange::START_TO_END, - returnRange, &compareResult); - if (NS_SUCCEEDED(rv) && compareResult <= 0) { + IgnoredErrorResult rv; + int16_t compareResult = + mStartPointRange->CompareBoundaryPoints(RangeBinding::START_TO_END, + *returnRange, rv); + if (!rv.Failed() && compareResult <= 0) { // OK to start at the end of mStartPointRange mStartPointRange->Collapse(false); } else { @@ -509,11 +512,11 @@ nsTypeAheadFind::FindItNow(nsIPresShell *aPresShell, bool aIsLinksOnly, // We can continue at the start of mStartPointRange if its start is // after the end of returnRange or coincides with it. Otherwise, we // need to continue at the end of returnRange. - int16_t compareResult; - nsresult rv = - mStartPointRange->CompareBoundaryPoints(nsIDOMRange::END_TO_START, - returnRange, &compareResult); - if (NS_SUCCEEDED(rv) && compareResult >= 0) { + IgnoredErrorResult rv; + int16_t compareResult = + mStartPointRange->CompareBoundaryPoints(RangeBinding::END_TO_START, + *returnRange, rv); + if (!rv.Failed() && compareResult >= 0) { // OK to start at the start of mStartPointRange mStartPointRange->Collapse(true); } else {