Index: Source/core/editing/VisibleSelection.cpp |
diff --git a/Source/core/editing/VisibleSelection.cpp b/Source/core/editing/VisibleSelection.cpp |
index c75427392d73d4ebe335472f5e4fbd612df3bc56..2ef64380a1ca35dff680130a93f3d22e570d48cf 100644 |
--- a/Source/core/editing/VisibleSelection.cpp |
+++ b/Source/core/editing/VisibleSelection.cpp |
@@ -256,8 +256,8 @@ static EphemeralRangeTemplate<Strategy> normalizeRangeAlgorithm(const EphemeralR |
// TODO(yosin) We should not call |parentAnchoredEquivalent()|, it is |
// redundant. |
- const PositionAlgorithm<Strategy> normalizedStart = range.startPosition().downstream().parentAnchoredEquivalent(); |
- const PositionAlgorithm<Strategy> normalizedEnd = range.endPosition().upstream().parentAnchoredEquivalent(); |
+ const PositionAlgorithm<Strategy> normalizedStart = mostForwardCaretPosition(range.startPosition()).parentAnchoredEquivalent(); |
+ const PositionAlgorithm<Strategy> normalizedEnd = mostBackwardCaretPosition(range.endPosition()).parentAnchoredEquivalent(); |
// The order of the positions of |start| and |end| can be swapped after |
// upstream/downstream. e.g. editing/pasteboard/copy-display-none.html |
if (normalizedStart.compareTo(normalizedEnd) > 0) |
@@ -294,7 +294,7 @@ EphemeralRange VisibleSelection::toNormalizedEphemeralRange() const |
// If the selection is a caret, move the range start upstream. This |
// helps us match the conventions of text editors tested, which make |
// style determinations based on the character before the caret, if any. |
- const Position start = m_start.upstream().parentAnchoredEquivalent(); |
+ const Position start = mostBackwardCaretPosition(m_start).parentAnchoredEquivalent(); |
return EphemeralRange(start, start); |
} |
// If the selection is a range, select the minimum range that encompasses |
@@ -581,7 +581,7 @@ SelectionType VisibleSelection::selectionType(const Position& start, const Posit |
ASSERT(end.isNull()); |
return NoSelection; |
} |
- if (start == end || start.upstream() == end.upstream()) |
+ if (start == end || mostBackwardCaretPosition(start) == mostBackwardCaretPosition(end)) |
return CaretSelection; |
return RangeSelection; |
} |
@@ -592,7 +592,7 @@ SelectionType VisibleSelection::selectionType(const PositionInComposedTree& star |
ASSERT(end.isNull()); |
return NoSelection; |
} |
- if (start == end || start.upstream() == end.upstream()) |
+ if (start == end || mostBackwardCaretPosition(start) == mostBackwardCaretPosition(end)) |
return CaretSelection; |
return RangeSelection; |
} |
@@ -699,14 +699,14 @@ void VisibleSelection::validate(TextGranularity granularity) |
// come through here before anyone uses it. |
// FIXME: Canonicalizing is good, but haven't we already done it (when we |
// set these two positions to VisiblePosition deepEquivalent()s above)? |
- m_start = m_start.downstream(); |
- m_end = m_end.upstream(); |
+ m_start = mostForwardCaretPosition(m_start); |
+ m_end = mostBackwardCaretPosition(m_end); |
// Even by downstreaming, |m_start| can be moved to the upper place from |
// the original position, same as |m_end|. |
// e.g.) editing/shadow/select-contenteditable-shadowhost.html |
- m_startInComposedTree = m_startInComposedTree.downstream(); |
- m_endInComposedTree = m_endInComposedTree.upstream(); |
+ m_startInComposedTree = mostForwardCaretPosition(m_startInComposedTree); |
+ m_endInComposedTree = mostBackwardCaretPosition(m_endInComposedTree); |
adjustStartAndEndInComposedTree(); |
if (isCrossingSelectionBoundary(m_startInComposedTree, m_endInComposedTree)) |