Chromium Code Reviews| Index: Source/core/editing/VisibleUnits.cpp |
| diff --git a/Source/core/editing/VisibleUnits.cpp b/Source/core/editing/VisibleUnits.cpp |
| index 66b26708f5d4e5bdd250fbe88a73cb05904e0bcc..de9673a6c40f5f04f58136f919e5208491fd7aaa 100644 |
| --- a/Source/core/editing/VisibleUnits.cpp |
| +++ b/Source/core/editing/VisibleUnits.cpp |
| @@ -199,7 +199,7 @@ static Position previousRootInlineBoxCandidatePosition(Node* node, const Visible |
| ContainerNode* highestRoot = highestEditableRoot(visiblePosition.deepEquivalent(), editableType); |
| Node* previousNode = previousLeafWithSameEditability(node, editableType); |
| - while (previousNode && (!previousNode->layoutObject() || inSameLine(VisiblePosition(firstPositionInOrBeforeNode(previousNode)), visiblePosition))) |
| + while (previousNode && (!previousNode->layoutObject() || inSameLine(createVisiblePosition(firstPositionInOrBeforeNode(previousNode)), visiblePosition))) |
| previousNode = previousLeafWithSameEditability(previousNode, editableType); |
| while (previousNode && !previousNode->isShadowRoot()) { |
| @@ -221,7 +221,7 @@ static Position nextRootInlineBoxCandidatePosition(Node* node, const VisiblePosi |
| { |
| ContainerNode* highestRoot = highestEditableRoot(visiblePosition.deepEquivalent(), editableType); |
| Node* nextNode = nextLeafWithSameEditability(node, editableType); |
| - while (nextNode && (!nextNode->layoutObject() || inSameLine(VisiblePosition(firstPositionInOrBeforeNode(nextNode)), visiblePosition))) |
| + while (nextNode && (!nextNode->layoutObject() || inSameLine(createVisiblePosition(firstPositionInOrBeforeNode(nextNode)), visiblePosition))) |
| nextNode = nextLeafWithSameEditability(nextNode, ContentIsEditable); |
| while (nextNode && !nextNode->isShadowRoot()) { |
| @@ -649,19 +649,19 @@ static VisiblePosition previousBoundary(const VisiblePosition& c, BoundarySearch |
| } |
| if (!next) |
| - return VisiblePosition(it.atEnd() ? it.startPosition() : pos); |
| + return createVisiblePosition(it.atEnd() ? it.startPosition() : pos); |
| Node* node = it.startContainer(); |
| if (node->isTextNode() && static_cast<int>(next) <= node->maxCharacterOffset()) { |
| // The next variable contains a usable index into a text node |
| - return VisiblePosition(Position(node, next)); |
| + return createVisiblePosition(Position(node, next)); |
| } |
| // Use the character iterator to translate the next value into a DOM position. |
| BackwardsCharacterIterator charIt(start, end); |
| charIt.advance(string.size() - suffixLength - next); |
| // FIXME: charIt can get out of shadow host. |
| - return VisiblePosition(charIt.endPosition()); |
| + return createVisiblePosition(charIt.endPosition()); |
| } |
| static VisiblePosition nextBoundary(const VisiblePosition& c, BoundarySearchFunction searchFunction) |
| @@ -734,8 +734,8 @@ static VisiblePosition nextBoundary(const VisiblePosition& c, BoundarySearchFunc |
| if (charIt.characterAt(0) == '\n') { |
| // FIXME: workaround for collapsed range (where only start position is correct) emitted for some emitted newlines (see rdar://5192593) |
| - VisiblePosition visPos = VisiblePosition(pos); |
| - if (visPos.deepEquivalent() == VisiblePosition(charIt.startPosition()).deepEquivalent()) { |
| + VisiblePosition visPos = createVisiblePosition(pos); |
| + if (visPos.deepEquivalent() == createVisiblePosition(charIt.startPosition()).deepEquivalent()) { |
| charIt.advance(1); |
| pos = charIt.startPosition(); |
| } |
| @@ -743,7 +743,7 @@ static VisiblePosition nextBoundary(const VisiblePosition& c, BoundarySearchFunc |
| } |
| // generate VisiblePosition, use TextAffinity::Upstream affinity if possible |
| - return VisiblePosition(pos, VP_UPSTREAM_IF_POSSIBLE); |
| + return createVisiblePosition(pos, VP_UPSTREAM_IF_POSSIBLE); |
| } |
| // --------- |
| @@ -972,7 +972,7 @@ static VisiblePosition endPositionForLine(const VisiblePosition& c, LineEndpoint |
| pos = positionAfterNode(endNode); |
| } |
| - return VisiblePosition(pos, VP_UPSTREAM_IF_POSSIBLE); |
| + return createVisiblePosition(pos, VP_UPSTREAM_IF_POSSIBLE); |
| } |
| static bool inSameLogicalLine(const VisiblePosition& a, const VisiblePosition& b) |
| @@ -997,7 +997,7 @@ static VisiblePosition endOfLine(const VisiblePosition& c, LineEndpointComputati |
| if (ContainerNode* editableRoot = highestEditableRoot(c.deepEquivalent())) { |
| if (!editableRoot->contains(visPos.deepEquivalent().computeContainerNode())) |
| - return VisiblePosition(lastPositionInNode(editableRoot)); |
| + return createVisiblePosition(lastPositionInNode(editableRoot)); |
| } |
| return honorEditingBoundaryAtOrAfter(visPos, c.deepEquivalent()); |
| @@ -1115,10 +1115,10 @@ VisiblePosition previousLinePosition(const VisiblePosition& visiblePosition, Lay |
| if (!root) { |
| Position position = previousRootInlineBoxCandidatePosition(node, visiblePosition, editableType); |
| if (position.isNotNull()) { |
| - RenderedPosition renderedPosition((VisiblePosition(position))); |
| + RenderedPosition renderedPosition((createVisiblePosition(position))); |
| root = renderedPosition.rootBox(); |
| if (!root) |
| - return VisiblePosition(position); |
| + return createVisiblePosition(position); |
| } |
| } |
| @@ -1128,7 +1128,7 @@ VisiblePosition previousLinePosition(const VisiblePosition& visiblePosition, Lay |
| LayoutObject& layoutObject = root->closestLeafChildForPoint(pointInLine, isEditablePosition(p))->layoutObject(); |
| Node* node = layoutObject.node(); |
| if (node && editingIgnoresContent(node)) |
| - return VisiblePosition(positionInParentBeforeNode(*node)); |
| + return createVisiblePosition(positionInParentBeforeNode(*node)); |
| return createVisiblePosition(layoutObject.positionForPoint(pointInLine)); |
| } |
| @@ -1138,7 +1138,7 @@ VisiblePosition previousLinePosition(const VisiblePosition& visiblePosition, Lay |
| Element* rootElement = node->hasEditableStyle(editableType) ? node->rootEditableElement(editableType) : node->document().documentElement(); |
| if (!rootElement) |
| return VisiblePosition(); |
| - return VisiblePosition(firstPositionInNode(rootElement)); |
| + return createVisiblePosition(firstPositionInNode(rootElement)); |
| } |
| VisiblePosition nextLinePosition(const VisiblePosition& visiblePosition, LayoutUnit lineDirectionPoint, EditableType editableType) |
| @@ -1171,10 +1171,10 @@ VisiblePosition nextLinePosition(const VisiblePosition& visiblePosition, LayoutU |
| node = child ? child : &NodeTraversal::lastWithinOrSelf(*node); |
| Position position = nextRootInlineBoxCandidatePosition(node, visiblePosition, editableType); |
| if (position.isNotNull()) { |
| - RenderedPosition renderedPosition((VisiblePosition(position))); |
| + RenderedPosition renderedPosition((createVisiblePosition(position))); |
| root = renderedPosition.rootBox(); |
| if (!root) |
| - return VisiblePosition(position); |
| + return createVisiblePosition(position); |
| } |
| } |
| @@ -1184,7 +1184,7 @@ VisiblePosition nextLinePosition(const VisiblePosition& visiblePosition, LayoutU |
| LayoutObject& layoutObject = root->closestLeafChildForPoint(pointInLine, isEditablePosition(p))->layoutObject(); |
| Node* node = layoutObject.node(); |
| if (node && editingIgnoresContent(node)) |
| - return VisiblePosition(positionInParentBeforeNode(*node)); |
| + return createVisiblePosition(positionInParentBeforeNode(*node)); |
| return createVisiblePosition(layoutObject.positionForPoint(pointInLine)); |
| } |
| @@ -1194,7 +1194,7 @@ VisiblePosition nextLinePosition(const VisiblePosition& visiblePosition, LayoutU |
| Element* rootElement = node->hasEditableStyle(editableType) ? node->rootEditableElement(editableType) : node->document().documentElement(); |
| if (!rootElement) |
| return VisiblePosition(); |
| - return VisiblePosition(lastPositionInNode(rootElement)); |
| + return createVisiblePosition(lastPositionInNode(rootElement)); |
| } |
| // --------- |
| @@ -1260,7 +1260,7 @@ VisiblePosition startOfParagraph(const VisiblePosition& c, EditingBoundaryCrossi |
| return VisiblePosition(); |
| if (isRenderedAsNonInlineTableImageOrHR(startNode)) |
| - return VisiblePosition(positionBeforeNode(startNode)); |
| + return createVisiblePosition(positionBeforeNode(startNode)); |
| Element* startBlock = enclosingBlock(startNode); |
| @@ -1305,7 +1305,7 @@ VisiblePosition startOfParagraph(const VisiblePosition& c, EditingBoundaryCrossi |
| i = max(0, o); |
| while (--i >= 0) { |
| if ((*text)[i] == '\n') |
| - return VisiblePosition(Position(toText(n), i + 1)); |
| + return createVisiblePosition(Position(toText(n), i + 1)); |
| } |
| } |
| node = n; |
| @@ -1321,9 +1321,9 @@ VisiblePosition startOfParagraph(const VisiblePosition& c, EditingBoundaryCrossi |
| } |
| if (type == PositionAnchorType::OffsetInAnchor) |
| - return VisiblePosition(Position(node, offset)); |
| + return createVisiblePosition(Position(node, offset)); |
| - return VisiblePosition(Position(node, type)); |
| + return createVisiblePosition(Position(node, type)); |
| } |
| VisiblePosition endOfParagraph(const VisiblePosition& c, EditingBoundaryCrossingRule boundaryCrossingRule) |
| @@ -1335,7 +1335,7 @@ VisiblePosition endOfParagraph(const VisiblePosition& c, EditingBoundaryCrossing |
| Node* startNode = p.anchorNode(); |
| if (isRenderedAsNonInlineTableImageOrHR(startNode)) |
| - return VisiblePosition(positionAfterNode(startNode)); |
| + return createVisiblePosition(positionAfterNode(startNode)); |
| Element* startBlock = enclosingBlock(startNode); |
| Element* stayInsideBlock = startBlock; |
| @@ -1381,7 +1381,7 @@ VisiblePosition endOfParagraph(const VisiblePosition& c, EditingBoundaryCrossing |
| int o = n == startNode ? offset : 0; |
| for (int i = o; i < length; ++i) { |
| if ((*text)[i] == '\n') |
| - return VisiblePosition(Position(toText(n), i)); |
| + return createVisiblePosition(Position(toText(n), i)); |
| } |
| } |
| node = n; |
| @@ -1397,9 +1397,9 @@ VisiblePosition endOfParagraph(const VisiblePosition& c, EditingBoundaryCrossing |
| } |
| if (type == PositionAnchorType::OffsetInAnchor) |
| - return VisiblePosition(Position(node, offset)); |
| + return createVisiblePosition(Position(node, offset)); |
| - return VisiblePosition(Position(node, type)); |
| + return createVisiblePosition(Position(node, type)); |
| } |
| // FIXME: isStartOfParagraph(startOfNextParagraph(pos)) is not always true |
| @@ -1459,14 +1459,14 @@ VisiblePosition startOfBlock(const VisiblePosition& visiblePosition, EditingBoun |
| { |
| Position position = visiblePosition.deepEquivalent(); |
| Element* startBlock = position.computeContainerNode() ? enclosingBlock(position.computeContainerNode(), rule) : 0; |
| - return startBlock ? VisiblePosition(firstPositionInNode(startBlock)) : VisiblePosition(); |
| + return startBlock ? createVisiblePosition(firstPositionInNode(startBlock)) : VisiblePosition(); |
| } |
| VisiblePosition endOfBlock(const VisiblePosition& visiblePosition, EditingBoundaryCrossingRule rule) |
| { |
| Position position = visiblePosition.deepEquivalent(); |
| Element* endBlock = position.computeContainerNode() ? enclosingBlock(position.computeContainerNode(), rule) : 0; |
| - return endBlock ? VisiblePosition(lastPositionInNode(endBlock)) : VisiblePosition(); |
| + return endBlock ? createVisiblePosition(lastPositionInNode(endBlock)) : VisiblePosition(); |
| } |
| bool inSameBlock(const VisiblePosition& a, const VisiblePosition& b) |
| @@ -1491,7 +1491,7 @@ VisiblePosition startOfDocument(const Node* node) |
| if (!node || !node->document().documentElement()) |
| return VisiblePosition(); |
| - return VisiblePosition(firstPositionInNode(node->document().documentElement())); |
| + return createVisiblePosition(firstPositionInNode(node->document().documentElement())); |
| } |
| VisiblePosition startOfDocument(const VisiblePosition& c) |
| @@ -1505,7 +1505,7 @@ VisiblePosition endOfDocument(const Node* node) |
| return VisiblePosition(); |
| Element* doc = node->document().documentElement(); |
| - return VisiblePosition(lastPositionInNode(doc)); |
| + return createVisiblePosition(lastPositionInNode(doc)); |
| } |
| VisiblePosition endOfDocument(const VisiblePosition& c) |
| @@ -1531,7 +1531,7 @@ VisiblePosition startOfEditableContent(const VisiblePosition& visiblePosition) |
| if (!highestRoot) |
| return VisiblePosition(); |
| - return VisiblePosition(firstPositionInNode(highestRoot)); |
| + return createVisiblePosition(firstPositionInNode(highestRoot)); |
| } |
| VisiblePosition endOfEditableContent(const VisiblePosition& visiblePosition) |
| @@ -1540,7 +1540,7 @@ VisiblePosition endOfEditableContent(const VisiblePosition& visiblePosition) |
| if (!highestRoot) |
| return VisiblePosition(); |
| - return VisiblePosition(lastPositionInNode(highestRoot)); |
| + return createVisiblePosition(lastPositionInNode(highestRoot)); |
| } |
| bool isEndOfEditableOrNonEditableContent(const VisiblePosition& p) |
| @@ -1630,7 +1630,7 @@ static InlineBoxPosition computeInlineBoxPositionAlgorithm(const PositionAlgorit |
| // Try a visually equivalent position with possibly opposite |
| // editability. This helps in case |this| is in an editable block |
| // but surrounded by non-editable positions. It acts to negate the |
| - // logic at the beginning of LayoutObject::createVisiblePosition(). |
| + // logic at the beginning of LayoutObject::VisiblePosition(). |
|
tkent
2015/09/01 23:21:17
LayoutObject has neither createVisiblePosition nor
yosin_UTC9
2015/09/02 03:46:20
Good catch. It should be |LayoutObject::createPosi
|
| PositionAlgorithm<Strategy> equivalent = downstreamIgnoringEditingBoundaries(position); |
| if (equivalent == position) { |
| equivalent = upstreamIgnoringEditingBoundaries(position); |
| @@ -2452,7 +2452,7 @@ static VisiblePosition skipToEndOfEditingBoundary(const VisiblePosition& pos, co |
| // If this is not editable but |pos| has an editable root, skip to the end |
| if (!highestRoot && highestRootOfPos) |
| - return VisiblePosition(Position(highestRootOfPos, PositionAnchorType::AfterAnchor).parentAnchoredEquivalent()); |
| + return createVisiblePosition(Position(highestRootOfPos, PositionAnchorType::AfterAnchor).parentAnchoredEquivalent()); |
| // That must mean that |pos| is not editable. Return the next position after |
| // |pos| that is in the same editable region as this position |
| @@ -2486,7 +2486,7 @@ UChar32 characterBefore(const VisiblePosition& visiblePosition) |
| VisiblePosition nextPositionOf(const VisiblePosition& visiblePosition, EditingBoundaryCrossingRule rule) |
| { |
| - VisiblePosition next(nextVisuallyDistinctCandidate(visiblePosition.deepEquivalent()), visiblePosition.affinity()); |
| + VisiblePosition next = createVisiblePosition(nextVisuallyDistinctCandidate(visiblePosition.deepEquivalent()), visiblePosition.affinity()); |
| switch (rule) { |
| case CanCrossEditingBoundary: |
| @@ -2515,7 +2515,7 @@ static VisiblePosition skipToStartOfEditingBoundary(const VisiblePosition& pos, |
| // If this is not editable but |pos| has an editable root, skip to the start |
| if (!highestRoot && highestRootOfPos) |
| - return VisiblePosition(previousVisuallyDistinctCandidate(Position(highestRootOfPos, PositionAnchorType::BeforeAnchor).parentAnchoredEquivalent())); |
| + return createVisiblePosition(previousVisuallyDistinctCandidate(Position(highestRootOfPos, PositionAnchorType::BeforeAnchor).parentAnchoredEquivalent())); |
| // That must mean that |pos| is not editable. Return the last position |
| // before |pos| that is in the same editable region as this position |
| @@ -2530,7 +2530,7 @@ VisiblePosition previousPositionOf(const VisiblePosition& visiblePosition, Editi |
| if (pos.atStartOfTree()) |
| return VisiblePosition(); |
| - VisiblePosition prev = VisiblePosition(pos); |
| + VisiblePosition prev = createVisiblePosition(pos); |
| ASSERT(prev.deepEquivalent() != visiblePosition.deepEquivalent()); |
| #if ENABLE(ASSERT) |