Commit 74c5761f authored by yosin@chromium.org's avatar yosin@chromium.org

Move a member function parentEditingBoundary() out from PositionAlgorithm<Strategy> template class

This patch moves a member function |parentEditingBoundary()| in
|PositionAlgorithm<Strategy>| template class for a preparation of making it
as static function in "VisibileUnits.cpp" since it is used only in
"VisibileUnits.cpp".

BUG=518738
TEST=n/a; no behavior changes

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

git-svn-id: svn://svn.chromium.org/blink/trunk@200827 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 54d78bab
...@@ -470,22 +470,32 @@ static ContainerNode* nonShadowBoundaryParentNode(Node* node) ...@@ -470,22 +470,32 @@ static ContainerNode* nonShadowBoundaryParentNode(Node* node)
} }
template <typename Strategy> template <typename Strategy>
Node* PositionAlgorithm<Strategy>::parentEditingBoundary() const static Node* parentEditingBoundaryAlgorithm(const PositionAlgorithm<Strategy>& position)
{ {
if (!m_anchorNode) Node* const anchorNode = position.anchorNode();
return 0; if (!anchorNode)
return nullptr;
Node* documentElement = m_anchorNode->document().documentElement(); Node* documentElement = anchorNode->document().documentElement();
if (!documentElement) if (!documentElement)
return 0; return nullptr;
Node* boundary = computeContainerNode(); Node* boundary = position.computeContainerNode();
while (boundary != documentElement && nonShadowBoundaryParentNode<Strategy>(boundary) && m_anchorNode->hasEditableStyle() == Strategy::parent(*boundary)->hasEditableStyle()) while (boundary != documentElement && nonShadowBoundaryParentNode<Strategy>(boundary) && anchorNode->hasEditableStyle() == Strategy::parent(*boundary)->hasEditableStyle())
boundary = nonShadowBoundaryParentNode<Strategy>(boundary); boundary = nonShadowBoundaryParentNode<Strategy>(boundary);
return boundary; return boundary;
} }
Node* parentEditingBoundary(const Position& position)
{
return parentEditingBoundaryAlgorithm<EditingStrategy>(position);
}
Node* parentEditingBoundary(const PositionInComposedTree& position)
{
return parentEditingBoundaryAlgorithm<EditingInComposedTreeStrategy>(position);
}
template <typename Strategy> template <typename Strategy>
bool PositionAlgorithm<Strategy>::atStartOfTree() const bool PositionAlgorithm<Strategy>::atStartOfTree() const
......
...@@ -182,8 +182,6 @@ public: ...@@ -182,8 +182,6 @@ public:
bool atFirstEditingPositionForNode() const; bool atFirstEditingPositionForNode() const;
bool atLastEditingPositionForNode() const; bool atLastEditingPositionForNode() const;
Node* parentEditingBoundary() const;
bool atStartOfTree() const; bool atStartOfTree() const;
bool atEndOfTree() const; bool atEndOfTree() const;
...@@ -252,6 +250,11 @@ using PositionInComposedTree = PositionAlgorithm<EditingInComposedTreeStrategy>; ...@@ -252,6 +250,11 @@ using PositionInComposedTree = PositionAlgorithm<EditingInComposedTreeStrategy>;
// since it is used only in "editing/commands/" // since it is used only in "editing/commands/"
CORE_EXPORT bool isRenderedCharacter(const Position&); CORE_EXPORT bool isRenderedCharacter(const Position&);
// TODO(yosin) We should make |parentEditingBoundary()| as static function
// in "VisibleUnits.cpp", since it is used only there.
CORE_EXPORT Node* parentEditingBoundary(const Position&);
CORE_EXPORT Node* parentEditingBoundary(const PositionInComposedTree&);
template <typename Strategy> template <typename Strategy>
bool operator==(const PositionAlgorithm<Strategy>& a, const PositionAlgorithm<Strategy>& b) bool operator==(const PositionAlgorithm<Strategy>& a, const PositionAlgorithm<Strategy>& b)
{ {
......
...@@ -460,7 +460,7 @@ typedef unsigned (*BoundarySearchFunction)(const UChar*, unsigned length, unsign ...@@ -460,7 +460,7 @@ typedef unsigned (*BoundarySearchFunction)(const UChar*, unsigned length, unsign
static VisiblePosition previousBoundary(const VisiblePosition& c, BoundarySearchFunction searchFunction) static VisiblePosition previousBoundary(const VisiblePosition& c, BoundarySearchFunction searchFunction)
{ {
Position pos = c.deepEquivalent(); Position pos = c.deepEquivalent();
Node* boundary = pos.parentEditingBoundary(); Node* boundary = parentEditingBoundary(pos);
if (!boundary) if (!boundary)
return VisiblePosition(); return VisiblePosition();
...@@ -538,7 +538,7 @@ static VisiblePosition previousBoundary(const VisiblePosition& c, BoundarySearch ...@@ -538,7 +538,7 @@ static VisiblePosition previousBoundary(const VisiblePosition& c, BoundarySearch
static VisiblePosition nextBoundary(const VisiblePosition& c, BoundarySearchFunction searchFunction) static VisiblePosition nextBoundary(const VisiblePosition& c, BoundarySearchFunction searchFunction)
{ {
Position pos = c.deepEquivalent(); Position pos = c.deepEquivalent();
Node* boundary = pos.parentEditingBoundary(); Node* boundary = parentEditingBoundary(pos);
if (!boundary) if (!boundary)
return VisiblePosition(); return VisiblePosition();
......
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