зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1447889 part 9. Remove nsIDOMRange::CompareBoundaryPoints. r=mystor
MozReview-Commit-ID: 29swD9AoqoF
This commit is contained in:
Родитель
3906df8d57
Коммит
1731f12f9d
|
@ -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<nsRange*>(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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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<nsRange> 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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
Загрузка…
Ссылка в новой задаче