Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(647)

Unified Diff: third_party/WebKit/Source/core/editing/VisibleUnitsTest.cpp

Issue 1404423005: Make most{Backward,Forward}CaretPosition() to handle first-letter pseudo element (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 2015-11-02T14:06:55 Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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>";

Powered by Google App Engine
This is Rietveld 408576698