Index: third_party/WebKit/Source/core/editing/VisibleUnitsTest.cpp |
diff --git a/third_party/WebKit/Source/core/editing/VisibleUnitsTest.cpp b/third_party/WebKit/Source/core/editing/VisibleUnitsTest.cpp |
index 3079616b9d59045c6bd168e35876173f04a1caf5..75a7a8dba0af29d3913f1cbf4f7fc6586b5c2971 100644 |
--- a/third_party/WebKit/Source/core/editing/VisibleUnitsTest.cpp |
+++ b/third_party/WebKit/Source/core/editing/VisibleUnitsTest.cpp |
@@ -762,6 +762,28 @@ TEST_F(VisibleUnitsTest, mostBackwardCaretPositionAfterAnchor) |
EXPECT_EQ(PositionInComposedTree::lastPositionInNode(host.get()), mostForwardCaretPosition(PositionInComposedTree::afterNode(host.get()))); |
} |
+TEST_F(VisibleUnitsTest, mostBackwardCaretPositionFirstLetter) |
+{ |
+ // Note: first-letter pseudo element contains letter and punctuations. |
+ const char* bodyContent = "<style>p:first-letter {color:red;}</style><p id=sample> (2)45 </p>"; |
+ setBodyContent(bodyContent); |
+ updateLayoutAndStyleForPainting(); |
+ |
+ Node* sample = document().getElementById("sample")->firstChild(); |
+ |
+ EXPECT_EQ(Position(sample->parentNode(), 0), mostBackwardCaretPosition(Position(sample, 0))); |
+ EXPECT_EQ(Position(sample->parentNode(), 0), mostBackwardCaretPosition(Position(sample, 1))); |
+ EXPECT_EQ(Position(sample, 2), mostBackwardCaretPosition(Position(sample, 2))); |
+ EXPECT_EQ(Position(sample, 3), mostBackwardCaretPosition(Position(sample, 3))); |
+ EXPECT_EQ(Position(sample, 4), mostBackwardCaretPosition(Position(sample, 4))); |
+ EXPECT_EQ(Position(sample, 5), mostBackwardCaretPosition(Position(sample, 5))); |
+ EXPECT_EQ(Position(sample, 6), mostBackwardCaretPosition(Position(sample, 6))); |
+ EXPECT_EQ(Position(sample, 6), mostBackwardCaretPosition(Position(sample, 7))); |
+ EXPECT_EQ(Position(sample, 6), mostBackwardCaretPosition(Position::lastPositionInNode(sample->parentNode()))); |
+ EXPECT_EQ(Position(sample, 6), mostBackwardCaretPosition(Position::afterNode(sample->parentNode()))); |
+ EXPECT_EQ(Position::lastPositionInNode(document().body()), mostBackwardCaretPosition(Position::lastPositionInNode(document().body()))); |
+} |
+ |
TEST_F(VisibleUnitsTest, mostForwardCaretPositionAfterAnchor) |
{ |
const char* bodyContent = "<p id='host'><b id='one'>1</b></p>"; |
@@ -778,6 +800,28 @@ TEST_F(VisibleUnitsTest, mostForwardCaretPositionAfterAnchor) |
EXPECT_EQ(PositionInComposedTree(three->firstChild(), 3), mostBackwardCaretPosition(PositionInComposedTree::afterNode(host.get()))); |
} |
+TEST_F(VisibleUnitsTest, mostForwardCaretPositionFirstLetter) |
+{ |
+ // Note: first-letter pseudo element contains letter and punctuations. |
+ const char* bodyContent = "<style>p:first-letter {color:red;}</style><p id=sample> (2)45 </p>"; |
+ setBodyContent(bodyContent); |
+ updateLayoutAndStyleForPainting(); |
+ |
+ Node* sample = document().getElementById("sample")->firstChild(); |
+ |
+ EXPECT_EQ(Position(document().body(), 0), mostForwardCaretPosition(Position::firstPositionInNode(document().body()))); |
+ EXPECT_EQ(Position(sample, 1), mostForwardCaretPosition(Position::beforeNode(sample->parentNode()))); |
+ EXPECT_EQ(Position(sample, 1), mostForwardCaretPosition(Position::firstPositionInNode(sample->parentNode()))); |
+ EXPECT_EQ(Position(sample, 1), mostForwardCaretPosition(Position(sample, 0))); |
+ EXPECT_EQ(Position(sample, 1), mostForwardCaretPosition(Position(sample, 1))); |
+ EXPECT_EQ(Position(sample, 2), mostForwardCaretPosition(Position(sample, 2))); |
+ EXPECT_EQ(Position(sample, 3), mostForwardCaretPosition(Position(sample, 3))); |
+ EXPECT_EQ(Position(sample, 4), mostForwardCaretPosition(Position(sample, 4))); |
+ EXPECT_EQ(Position(sample, 5), mostForwardCaretPosition(Position(sample, 5))); |
+ EXPECT_EQ(Position(sample, 7), mostForwardCaretPosition(Position(sample, 6))); |
+ EXPECT_EQ(Position(sample, 7), mostForwardCaretPosition(Position(sample, 7))); |
+} |
+ |
TEST_F(VisibleUnitsTest, nextPositionOf) |
{ |
const char* bodyContent = "<b id=zero>0</b><p id=host><b id=one>1</b><b id=two>22</b></p><b id=three>333</b>"; |