Commit 49a1acc0 authored by yosin@chromium.org's avatar yosin@chromium.org

Introduce composed tree version of inSameLine()

This patch introduces composed tree version of |inSameLine()| for introducing
composed tree version of |VisibleSelection| class.

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/1310913004

git-svn-id: svn://svn.chromium.org/blink/trunk@201868 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 4399a458
...@@ -1121,6 +1121,11 @@ bool inSameLine(const VisiblePosition& position1, const VisiblePosition& positio ...@@ -1121,6 +1121,11 @@ bool inSameLine(const VisiblePosition& position1, const VisiblePosition& positio
return inSameLine(position1.toPositionWithAffinity(), position2.toPositionWithAffinity()); return inSameLine(position1.toPositionWithAffinity(), position2.toPositionWithAffinity());
} }
bool inSameLine(const VisiblePositionInComposedTree& position1, const VisiblePositionInComposedTree& position2)
{
return inSameLine(position1.toPositionWithAffinity(), position2.toPositionWithAffinity());
}
bool isStartOfLine(const VisiblePosition& p) bool isStartOfLine(const VisiblePosition& p)
{ {
return p.isNotNull() && p.deepEquivalent() == startOfLine(p).deepEquivalent(); return p.isNotNull() && p.deepEquivalent() == startOfLine(p).deepEquivalent();
......
...@@ -121,6 +121,7 @@ VisiblePosition endOfLine(const VisiblePosition&); ...@@ -121,6 +121,7 @@ VisiblePosition endOfLine(const VisiblePosition&);
CORE_EXPORT VisiblePosition previousLinePosition(const VisiblePosition&, LayoutUnit lineDirectionPoint, EditableType = ContentIsEditable); CORE_EXPORT VisiblePosition previousLinePosition(const VisiblePosition&, LayoutUnit lineDirectionPoint, EditableType = ContentIsEditable);
CORE_EXPORT VisiblePosition nextLinePosition(const VisiblePosition&, LayoutUnit lineDirectionPoint, EditableType = ContentIsEditable); CORE_EXPORT VisiblePosition nextLinePosition(const VisiblePosition&, LayoutUnit lineDirectionPoint, EditableType = ContentIsEditable);
CORE_EXPORT bool inSameLine(const VisiblePosition&, const VisiblePosition&); CORE_EXPORT bool inSameLine(const VisiblePosition&, const VisiblePosition&);
CORE_EXPORT bool inSameLine(const VisiblePositionInComposedTree&, const VisiblePositionInComposedTree&);
CORE_EXPORT bool inSameLine(const PositionWithAffinity&, const PositionWithAffinity&); CORE_EXPORT bool inSameLine(const PositionWithAffinity&, const PositionWithAffinity&);
CORE_EXPORT bool inSameLine(const PositionInComposedTreeWithAffinity&, const PositionInComposedTreeWithAffinity&); CORE_EXPORT bool inSameLine(const PositionInComposedTreeWithAffinity&, const PositionInComposedTreeWithAffinity&);
bool isStartOfLine(const VisiblePosition&); bool isStartOfLine(const VisiblePosition&);
......
...@@ -17,11 +17,21 @@ PositionWithAffinity positionWithAffinityInDOMTree(Node& anchor, int offset, Tex ...@@ -17,11 +17,21 @@ PositionWithAffinity positionWithAffinityInDOMTree(Node& anchor, int offset, Tex
return PositionWithAffinity(canonicalPositionOf(Position(&anchor, offset)), affinity); return PositionWithAffinity(canonicalPositionOf(Position(&anchor, offset)), affinity);
} }
VisiblePosition createVisiblePositionInDOMTree(Node& anchor, int offset, TextAffinity affinity = TextAffinity::Downstream)
{
return createVisiblePosition(Position(&anchor, offset), affinity);
}
PositionInComposedTreeWithAffinity positionWithAffinityInComposedTree(Node& anchor, int offset, TextAffinity affinity = TextAffinity::Downstream) PositionInComposedTreeWithAffinity positionWithAffinityInComposedTree(Node& anchor, int offset, TextAffinity affinity = TextAffinity::Downstream)
{ {
return PositionInComposedTreeWithAffinity(canonicalPositionOf(PositionInComposedTree(&anchor, offset)), affinity); return PositionInComposedTreeWithAffinity(canonicalPositionOf(PositionInComposedTree(&anchor, offset)), affinity);
} }
VisiblePositionInComposedTree createVisiblePositionInComposedTree(Node& anchor, int offset, TextAffinity affinity = TextAffinity::Downstream)
{
return createVisiblePosition(PositionInComposedTree(&anchor, offset), affinity);
}
} // namespace } // namespace
class VisibleUnitsTest : public EditingTestBase { class VisibleUnitsTest : public EditingTestBase {
...@@ -64,10 +74,20 @@ TEST_F(VisibleUnitsTest, inSameLine) ...@@ -64,10 +74,20 @@ TEST_F(VisibleUnitsTest, inSameLine)
EXPECT_FALSE(inSameLine(positionWithAffinityInDOMTree(*one->firstChild(), 0), positionWithAffinityInDOMTree(*five->firstChild(), 0))); EXPECT_FALSE(inSameLine(positionWithAffinityInDOMTree(*one->firstChild(), 0), positionWithAffinityInDOMTree(*five->firstChild(), 0)));
EXPECT_FALSE(inSameLine(positionWithAffinityInDOMTree(*two->firstChild(), 0), positionWithAffinityInDOMTree(*four->firstChild(), 0))); EXPECT_FALSE(inSameLine(positionWithAffinityInDOMTree(*two->firstChild(), 0), positionWithAffinityInDOMTree(*four->firstChild(), 0)));
EXPECT_TRUE(inSameLine(createVisiblePositionInDOMTree(*one, 0), createVisiblePositionInDOMTree(*two, 0)));
EXPECT_TRUE(inSameLine(createVisiblePositionInDOMTree(*one->firstChild(), 0), createVisiblePositionInDOMTree(*two->firstChild(), 0)));
EXPECT_FALSE(inSameLine(createVisiblePositionInDOMTree(*one->firstChild(), 0), createVisiblePositionInDOMTree(*five->firstChild(), 0)));
EXPECT_FALSE(inSameLine(createVisiblePositionInDOMTree(*two->firstChild(), 0), createVisiblePositionInDOMTree(*four->firstChild(), 0)));
EXPECT_FALSE(inSameLine(positionWithAffinityInComposedTree(*one, 0), positionWithAffinityInComposedTree(*two, 0))); EXPECT_FALSE(inSameLine(positionWithAffinityInComposedTree(*one, 0), positionWithAffinityInComposedTree(*two, 0)));
EXPECT_FALSE(inSameLine(positionWithAffinityInComposedTree(*one->firstChild(), 0), positionWithAffinityInComposedTree(*two->firstChild(), 0))); EXPECT_FALSE(inSameLine(positionWithAffinityInComposedTree(*one->firstChild(), 0), positionWithAffinityInComposedTree(*two->firstChild(), 0)));
EXPECT_FALSE(inSameLine(positionWithAffinityInComposedTree(*one->firstChild(), 0), positionWithAffinityInComposedTree(*five->firstChild(), 0))); EXPECT_FALSE(inSameLine(positionWithAffinityInComposedTree(*one->firstChild(), 0), positionWithAffinityInComposedTree(*five->firstChild(), 0)));
EXPECT_TRUE(inSameLine(positionWithAffinityInComposedTree(*two->firstChild(), 0), positionWithAffinityInComposedTree(*four->firstChild(), 0))); EXPECT_TRUE(inSameLine(positionWithAffinityInComposedTree(*two->firstChild(), 0), positionWithAffinityInComposedTree(*four->firstChild(), 0)));
EXPECT_FALSE(inSameLine(createVisiblePositionInComposedTree(*one, 0), createVisiblePositionInComposedTree(*two, 0)));
EXPECT_FALSE(inSameLine(createVisiblePositionInComposedTree(*one->firstChild(), 0), createVisiblePositionInComposedTree(*two->firstChild(), 0)));
EXPECT_FALSE(inSameLine(createVisiblePositionInComposedTree(*one->firstChild(), 0), createVisiblePositionInComposedTree(*five->firstChild(), 0)));
EXPECT_TRUE(inSameLine(createVisiblePositionInComposedTree(*two->firstChild(), 0), createVisiblePositionInComposedTree(*four->firstChild(), 0)));
} }
TEST_F(VisibleUnitsTest, localCaretRectOfPosition) TEST_F(VisibleUnitsTest, localCaretRectOfPosition)
......
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