summaryrefslogtreecommitdiff
path: root/Source/WebCore/page/DOMSelection.cpp
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@digia.com>2013-09-13 12:51:20 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-19 20:50:05 +0200
commitd441d6f39bb846989d95bcf5caf387b42414718d (patch)
treee367e64a75991c554930278175d403c072de6bb8 /Source/WebCore/page/DOMSelection.cpp
parent0060b2994c07842f4c59de64b5e3e430525c4b90 (diff)
downloadqtwebkit-d441d6f39bb846989d95bcf5caf387b42414718d.tar.gz
Import Qt5x2 branch of QtWebkit for Qt 5.2
Importing a new snapshot of webkit. Change-Id: I2d01ad12cdc8af8cb015387641120a9d7ea5f10c Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Diffstat (limited to 'Source/WebCore/page/DOMSelection.cpp')
-rw-r--r--Source/WebCore/page/DOMSelection.cpp36
1 files changed, 17 insertions, 19 deletions
diff --git a/Source/WebCore/page/DOMSelection.cpp b/Source/WebCore/page/DOMSelection.cpp
index 062443ac4..79c8a1fd0 100644
--- a/Source/WebCore/page/DOMSelection.cpp
+++ b/Source/WebCore/page/DOMSelection.cpp
@@ -397,11 +397,10 @@ void DOMSelection::addRange(Range* r)
}
RefPtr<Range> range = selection->selection().toNormalizedRange();
- ExceptionCode ec = 0;
- if (r->compareBoundaryPoints(Range::START_TO_START, range.get(), ec) == -1) {
+ if (r->compareBoundaryPoints(Range::START_TO_START, range.get(), IGNORE_EXCEPTION) == -1) {
// We don't support discontiguous selection. We don't do anything if r and range don't intersect.
- if (r->compareBoundaryPoints(Range::START_TO_END, range.get(), ec) > -1) {
- if (r->compareBoundaryPoints(Range::END_TO_END, range.get(), ec) == -1)
+ if (r->compareBoundaryPoints(Range::START_TO_END, range.get(), IGNORE_EXCEPTION) > -1) {
+ if (r->compareBoundaryPoints(Range::END_TO_END, range.get(), IGNORE_EXCEPTION) == -1)
// The original range and r intersect.
selection->setSelection(VisibleSelection(r->startPosition(), range->endPosition(), DOWNSTREAM));
else
@@ -410,8 +409,9 @@ void DOMSelection::addRange(Range* r)
}
} else {
// We don't support discontiguous selection. We don't do anything if r and range don't intersect.
+ ExceptionCode ec = 0;
if (r->compareBoundaryPoints(Range::END_TO_START, range.get(), ec) < 1 && !ec) {
- if (r->compareBoundaryPoints(Range::END_TO_END, range.get(), ec) == -1)
+ if (r->compareBoundaryPoints(Range::END_TO_END, range.get(), IGNORE_EXCEPTION) == -1)
// The original range contains r.
selection->setSelection(VisibleSelection(range.get()));
else
@@ -438,15 +438,12 @@ void DOMSelection::deleteFromDocument()
if (!selectedRange)
return;
- ExceptionCode ec = 0;
- selectedRange->deleteContents(ec);
- ASSERT(!ec);
+ selectedRange->deleteContents(ASSERT_NO_EXCEPTION);
- setBaseAndExtent(selectedRange->startContainer(ec), selectedRange->startOffset(ec), selectedRange->startContainer(ec), selectedRange->startOffset(ec), ec);
- ASSERT(!ec);
+ setBaseAndExtent(selectedRange->startContainer(ASSERT_NO_EXCEPTION), selectedRange->startOffset(), selectedRange->startContainer(), selectedRange->startOffset(), ASSERT_NO_EXCEPTION);
}
-bool DOMSelection::containsNode(const Node* n, bool allowPartial) const
+bool DOMSelection::containsNode(Node* n, bool allowPartial) const
{
if (!m_frame)
return false;
@@ -456,27 +453,28 @@ bool DOMSelection::containsNode(const Node* n, bool allowPartial) const
if (!n || m_frame->document() != n->document() || selection->isNone())
return false;
- ContainerNode* parentNode = n->parentNode();
- unsigned nodeIndex = n->nodeIndex();
+ RefPtr<Node> node = n;
RefPtr<Range> selectedRange = selection->selection().toNormalizedRange();
- if (!parentNode)
+ ContainerNode* parentNode = node->parentNode();
+ if (!parentNode || !parentNode->inDocument())
return false;
+ unsigned nodeIndex = node->nodeIndex();
ExceptionCode ec = 0;
- bool nodeFullySelected = Range::compareBoundaryPoints(parentNode, nodeIndex, selectedRange->startContainer(ec), selectedRange->startOffset(ec), ec) >= 0 && !ec
- && Range::compareBoundaryPoints(parentNode, nodeIndex + 1, selectedRange->endContainer(ec), selectedRange->endOffset(ec), ec) <= 0 && !ec;
+ bool nodeFullySelected = Range::compareBoundaryPoints(parentNode, nodeIndex, selectedRange->startContainer(), selectedRange->startOffset(), ec) >= 0 && !ec
+ && Range::compareBoundaryPoints(parentNode, nodeIndex + 1, selectedRange->endContainer(), selectedRange->endOffset(), ec) <= 0 && !ec;
ASSERT(!ec);
if (nodeFullySelected)
return true;
- bool nodeFullyUnselected = (Range::compareBoundaryPoints(parentNode, nodeIndex, selectedRange->endContainer(ec), selectedRange->endOffset(ec), ec) > 0 && !ec)
- || (Range::compareBoundaryPoints(parentNode, nodeIndex + 1, selectedRange->startContainer(ec), selectedRange->startOffset(ec), ec) < 0 && !ec);
+ bool nodeFullyUnselected = (Range::compareBoundaryPoints(parentNode, nodeIndex, selectedRange->endContainer(), selectedRange->endOffset(), ec) > 0 && !ec)
+ || (Range::compareBoundaryPoints(parentNode, nodeIndex + 1, selectedRange->startContainer(), selectedRange->startOffset(), ec) < 0 && !ec);
ASSERT(!ec);
if (nodeFullyUnselected)
return false;
- return allowPartial || n->isTextNode();
+ return allowPartial || node->isTextNode();
}
void DOMSelection::selectAllChildren(Node* n, ExceptionCode& ec)