| 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>"; | 
|  |