Commit f51fc6c7 authored by yosin@chromium.org's avatar yosin@chromium.org

Use EditingStrategy as template parameter to...

Use EditingStrategy as template parameter to lastEditablePositionBeforePositionInRootAlgorithm template function

This patch changes template parameter of
|lastEditablePositionBeforePositionInRootAlgorithm()| to |EditingStrategy| or
|EditingInComposedTreeStrategy| instead of |Position| or |PositionInComposedTre|
to match other implementation of editing template functions for improving
readability.

This patch is a preparation of making selection to handle granularity for web
component, http://crrev.com/1277863002

BUG=513568
TEST=n/a; No behavior changes

Review URL: https://codereview.chromium.org/1304353003

git-svn-id: svn://svn.chromium.org/blink/trunk@201213 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent c3013ed8
......@@ -482,39 +482,39 @@ VisiblePosition lastEditableVisiblePositionBeforePositionInRoot(const Position&
return VisiblePosition(lastEditablePositionBeforePositionInRoot(position, highestRoot));
}
template <typename PositionType>
PositionType lastEditablePositionBeforePositionInRootAlgorithm(const PositionType& position, Node* highestRoot)
template <typename Strategy>
PositionAlgorithm<Strategy> lastEditablePositionBeforePositionInRootAlgorithm(const PositionAlgorithm<Strategy>& position, Node* highestRoot)
{
// When position falls after highestRoot, the result is easy to compute.
if (position.compareTo(PositionType::lastPositionInNode(highestRoot)) == 1)
return PositionType::lastPositionInNode(highestRoot);
if (position.compareTo(PositionAlgorithm<Strategy>::lastPositionInNode(highestRoot)) == 1)
return PositionAlgorithm<Strategy>::lastPositionInNode(highestRoot);
PositionType editablePosition = position;
PositionAlgorithm<Strategy> editablePosition = position;
if (position.anchorNode()->treeScope() != highestRoot->treeScope()) {
Node* shadowAncestor = highestRoot->treeScope().ancestorInThisScope(editablePosition.anchorNode());
if (!shadowAncestor)
return PositionType();
return PositionAlgorithm<Strategy>();
editablePosition = PositionType::firstPositionInOrBeforeNode(shadowAncestor);
editablePosition = PositionAlgorithm<Strategy>::firstPositionInOrBeforeNode(shadowAncestor);
}
while (editablePosition.anchorNode() && !isEditablePosition(editablePosition) && editablePosition.anchorNode()->isDescendantOf(highestRoot))
editablePosition = isAtomicNode(editablePosition.anchorNode()) ? PositionType::inParentBeforeNode(*editablePosition.anchorNode()) : previousVisuallyDistinctCandidate(editablePosition);
editablePosition = isAtomicNode(editablePosition.anchorNode()) ? PositionAlgorithm<Strategy>::inParentBeforeNode(*editablePosition.anchorNode()) : previousVisuallyDistinctCandidate(editablePosition);
if (editablePosition.anchorNode() && editablePosition.anchorNode() != highestRoot && !editablePosition.anchorNode()->isDescendantOf(highestRoot))
return PositionType();
return PositionAlgorithm<Strategy>();
return editablePosition;
}
Position lastEditablePositionBeforePositionInRoot(const Position& position, Node* highestRoot)
{
return lastEditablePositionBeforePositionInRootAlgorithm<Position>(position, highestRoot);
return lastEditablePositionBeforePositionInRootAlgorithm<EditingStrategy>(position, highestRoot);
}
PositionInComposedTree lastEditablePositionBeforePositionInRoot(const PositionInComposedTree& position, Node* highestRoot)
{
return lastEditablePositionBeforePositionInRootAlgorithm<PositionInComposedTree>(position, highestRoot);
return lastEditablePositionBeforePositionInRootAlgorithm<EditingInComposedTreeStrategy>(position, highestRoot);
}
int uncheckedPreviousOffset(const Node* n, int current)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment