| Index: third_party/WebKit/Source/core/editing/iterators/TextIteratorTest.cpp
|
| diff --git a/third_party/WebKit/Source/core/editing/iterators/TextIteratorTest.cpp b/third_party/WebKit/Source/core/editing/iterators/TextIteratorTest.cpp
|
| index 06fb00eace6155c7c367d0c63ab47652b175c63a..182fd399c9619398867e86015bf78d83a52851ad 100644
|
| --- a/third_party/WebKit/Source/core/editing/iterators/TextIteratorTest.cpp
|
| +++ b/third_party/WebKit/Source/core/editing/iterators/TextIteratorTest.cpp
|
| @@ -777,6 +777,30 @@ TEST_F(TextIteratorTest, StartInMultiCharFirstLetterWithCollapsedSpace) {
|
| EXPECT_EQ("A) xyz", String(buffer.Data()));
|
| }
|
|
|
| +TEST_F(TextIteratorTest, StartAndEndInMultiCharFirstLetterWithCollapsedSpace) {
|
| + SetBodyContent(
|
| + "<style>div:first-letter {color:red;}</style><div> (A) xyz</div>");
|
| +
|
| + Element* div = GetDocument().QuerySelector("div");
|
| + Node* text = div->firstChild();
|
| + Position start(text, 3);
|
| + Position end(text, 4);
|
| + TextIterator iter(start, end);
|
| + ForwardsTextBuffer buffer;
|
| +
|
| + EXPECT_FALSE(iter.AtEnd());
|
| + EXPECT_EQ(1, iter.length());
|
| + EXPECT_EQ(1, iter.CopyTextTo(&buffer, 0)) << "Should emit 'A'.";
|
| + EXPECT_EQ(text, iter.CurrentContainer());
|
| + EXPECT_EQ(Position(text, 3), iter.StartPositionInCurrentContainer());
|
| + EXPECT_EQ(Position(text, 4), iter.EndPositionInCurrentContainer());
|
| +
|
| + iter.Advance();
|
| + EXPECT_TRUE(iter.AtEnd());
|
| +
|
| + EXPECT_EQ("A", String(buffer.Data()));
|
| +}
|
| +
|
| TEST_F(TextIteratorTest, StartAtRemainingText) {
|
| SetBodyContent("<style>div:first-letter {color:red;}</style><div>Axyz</div>");
|
|
|
| @@ -800,4 +824,114 @@ TEST_F(TextIteratorTest, StartAtRemainingText) {
|
| EXPECT_EQ("xyz", String(buffer.Data()));
|
| }
|
|
|
| +TEST_F(TextIteratorTest, StartAtFirstLetterInPre) {
|
| + SetBodyContent("<style>pre:first-letter {color:red;}</style><pre>Axyz</pre>");
|
| +
|
| + Element* pre = GetDocument().QuerySelector("pre");
|
| + Node* text = pre->firstChild();
|
| + Position start(text, 0);
|
| + Position end(text, 4);
|
| + TextIterator iter(start, end);
|
| + ForwardsTextBuffer buffer;
|
| +
|
| + EXPECT_FALSE(iter.AtEnd());
|
| + EXPECT_EQ(1, iter.length());
|
| + EXPECT_EQ(1, iter.CopyTextTo(&buffer, 0)) << "Should emit 'A'.";
|
| + EXPECT_EQ(text, iter.CurrentContainer());
|
| + EXPECT_EQ(Position(text, 0), iter.StartPositionInCurrentContainer());
|
| + EXPECT_EQ(Position(text, 1), iter.EndPositionInCurrentContainer());
|
| +
|
| + iter.Advance();
|
| + EXPECT_FALSE(iter.AtEnd());
|
| + EXPECT_EQ(3, iter.length());
|
| + EXPECT_EQ(3, iter.CopyTextTo(&buffer, 0)) << "Should emit 'xyz'.";
|
| + EXPECT_EQ(text, iter.CurrentContainer());
|
| + EXPECT_EQ(Position(text, 1), iter.StartPositionInCurrentContainer());
|
| + EXPECT_EQ(Position(text, 4), iter.EndPositionInCurrentContainer());
|
| +
|
| + iter.Advance();
|
| + EXPECT_TRUE(iter.AtEnd());
|
| +
|
| + EXPECT_EQ("Axyz", String(buffer.Data()));
|
| +}
|
| +
|
| +TEST_F(TextIteratorTest, StartInMultiCharFirstLetterInPre) {
|
| + SetBodyContent(
|
| + "<style>pre:first-letter {color:red;}</style><pre>(A)xyz</pre>");
|
| +
|
| + Element* pre = GetDocument().QuerySelector("pre");
|
| + Node* text = pre->firstChild();
|
| + Position start(text, 1);
|
| + Position end(text, 6);
|
| + TextIterator iter(start, end);
|
| + ForwardsTextBuffer buffer;
|
| +
|
| + EXPECT_FALSE(iter.AtEnd());
|
| + EXPECT_EQ(2, iter.length());
|
| + EXPECT_EQ(2, iter.CopyTextTo(&buffer, 0)) << "Should emit 'A)'.";
|
| + EXPECT_EQ(text, iter.CurrentContainer());
|
| + EXPECT_EQ(Position(text, 1), iter.StartPositionInCurrentContainer());
|
| + EXPECT_EQ(Position(text, 3), iter.EndPositionInCurrentContainer());
|
| +
|
| + iter.Advance();
|
| + EXPECT_FALSE(iter.AtEnd());
|
| + EXPECT_EQ(3, iter.length());
|
| + EXPECT_EQ(3, iter.CopyTextTo(&buffer, 0)) << "Should emit 'xyz'.";
|
| + EXPECT_EQ(text, iter.CurrentContainer());
|
| + EXPECT_EQ(Position(text, 3), iter.StartPositionInCurrentContainer());
|
| + EXPECT_EQ(Position(text, 6), iter.EndPositionInCurrentContainer());
|
| +
|
| + iter.Advance();
|
| + EXPECT_TRUE(iter.AtEnd());
|
| +
|
| + EXPECT_EQ("A)xyz", String(buffer.Data()));
|
| +}
|
| +
|
| +TEST_F(TextIteratorTest, StartAndEndInMultiCharFirstLetterInPre) {
|
| + SetBodyContent(
|
| + "<style>pre:first-letter {color:red;}</style><pre>(A)xyz</pre>");
|
| +
|
| + Element* pre = GetDocument().QuerySelector("pre");
|
| + Node* text = pre->firstChild();
|
| + Position start(text, 1);
|
| + Position end(text, 2);
|
| + TextIterator iter(start, end);
|
| + ForwardsTextBuffer buffer;
|
| +
|
| + EXPECT_FALSE(iter.AtEnd());
|
| + EXPECT_EQ(1, iter.length());
|
| + EXPECT_EQ(1, iter.CopyTextTo(&buffer, 0)) << "Should emit 'A'.";
|
| + EXPECT_EQ(text, iter.CurrentContainer());
|
| + EXPECT_EQ(Position(text, 1), iter.StartPositionInCurrentContainer());
|
| + EXPECT_EQ(Position(text, 2), iter.EndPositionInCurrentContainer());
|
| +
|
| + iter.Advance();
|
| + EXPECT_TRUE(iter.AtEnd());
|
| +
|
| + EXPECT_EQ("A", String(buffer.Data()));
|
| +}
|
| +
|
| +TEST_F(TextIteratorTest, StartAtRemainingTextInPre) {
|
| + SetBodyContent("<style>pre:first-letter {color:red;}</style><pre>Axyz</pre>");
|
| +
|
| + Element* pre = GetDocument().QuerySelector("pre");
|
| + Node* text = pre->firstChild();
|
| + Position start(text, 1);
|
| + Position end(text, 4);
|
| + TextIterator iter(start, end);
|
| + ForwardsTextBuffer buffer;
|
| +
|
| + EXPECT_FALSE(iter.AtEnd());
|
| + EXPECT_EQ(3, iter.length());
|
| + EXPECT_EQ(3, iter.CopyTextTo(&buffer, 0)) << "Should emit 'xyz'.";
|
| + EXPECT_EQ(text, iter.CurrentContainer());
|
| + EXPECT_EQ(Position(text, 1), iter.StartPositionInCurrentContainer());
|
| + EXPECT_EQ(Position(text, 4), iter.EndPositionInCurrentContainer());
|
| +
|
| + iter.Advance();
|
| + EXPECT_TRUE(iter.AtEnd());
|
| +
|
| + EXPECT_EQ("xyz", String(buffer.Data()));
|
| +}
|
| +
|
| } // namespace blink
|
|
|