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

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

Issue 2720593005: Make PositionIterator to skip contents of INPUT/SELECT/TEXTAREA (Closed)
Patch Set: 2017-03-02T19:03:48 Add FrameSelectionTest.SelectAllWithInputElement Created 3 years, 10 months 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/PositionIteratorTest.cpp
diff --git a/third_party/WebKit/Source/core/editing/PositionIteratorTest.cpp b/third_party/WebKit/Source/core/editing/PositionIteratorTest.cpp
index 5f22d8c32940cad160ab9e218f8245eaaf2ce8d9..3a3dc221edb85a21b210937f51fa35683e9b5aed 100644
--- a/third_party/WebKit/Source/core/editing/PositionIteratorTest.cpp
+++ b/third_party/WebKit/Source/core/editing/PositionIteratorTest.cpp
@@ -15,7 +15,6 @@ class PositionIteratorTest : public EditingTestBase {};
TEST_F(PositionIteratorTest, decrementWithInputElement) {
setBodyContent("123<input value='abc'>");
Element* const input = document().querySelector("input");
- Node* const innerEditor = FlatTreeTraversal::firstChild(*input);
Node* const text = input->previousSibling();
// Decrement until start of "123" from INPUT on DOM tree
@@ -39,27 +38,10 @@ TEST_F(PositionIteratorTest, decrementWithInputElement) {
flatIterator.decrement();
EXPECT_EQ(PositionInFlatTree::afterNode(input),
flatIterator.computePosition());
- // TODO(yosin): We should not traverse inside INPUT
flatIterator.decrement();
- EXPECT_EQ(PositionInFlatTree::lastPositionInNode(innerEditor),
+ EXPECT_EQ(PositionInFlatTree::beforeNode(input),
flatIterator.computePosition());
flatIterator.decrement();
- EXPECT_EQ(PositionInFlatTree(innerEditor->firstChild(), 3),
- flatIterator.computePosition());
- flatIterator.decrement();
- EXPECT_EQ(PositionInFlatTree(innerEditor->firstChild(), 2),
- flatIterator.computePosition());
- flatIterator.decrement();
- EXPECT_EQ(PositionInFlatTree(innerEditor->firstChild(), 1),
- flatIterator.computePosition());
- flatIterator.decrement();
- EXPECT_EQ(PositionInFlatTree(innerEditor->firstChild(), 0),
- flatIterator.computePosition());
- flatIterator.decrement();
- EXPECT_EQ(PositionInFlatTree(innerEditor, 0), flatIterator.computePosition());
- flatIterator.decrement();
- EXPECT_EQ(PositionInFlatTree(input, 0), flatIterator.computePosition());
- flatIterator.decrement();
EXPECT_EQ(PositionInFlatTree(document().body(), 1),
flatIterator.computePosition());
flatIterator.decrement();
@@ -69,8 +51,6 @@ TEST_F(PositionIteratorTest, decrementWithInputElement) {
TEST_F(PositionIteratorTest, decrementWithSelectElement) {
setBodyContent("123<select><option>1</option><option>2</option></select>");
Element* const select = document().querySelector("select");
- Node* const option1 = select->firstChild();
- Node* const option2 = select->lastChild();
Node* text = select->previousSibling();
// Decrement until start of "123" from SELECT on DOM tree
@@ -79,25 +59,12 @@ TEST_F(PositionIteratorTest, decrementWithSelectElement) {
domIterator.computePosition());
domIterator.decrement();
EXPECT_EQ(Position::afterNode(select), domIterator.computePosition());
- // TODO(yosin): We should not traverse inside SELECT and OPTION
domIterator.decrement();
- EXPECT_EQ(Position::lastPositionInNode(option2),
- domIterator.computePosition());
+ EXPECT_EQ(Position::afterNode(select), domIterator.computePosition())
+ << "This is redundant result, we should not have. see "
+ "http://crbug.com/697283";
domIterator.decrement();
- EXPECT_EQ(Position(option2->firstChild(), 1), domIterator.computePosition());
- domIterator.decrement();
- EXPECT_EQ(Position(option2, 0), domIterator.computePosition());
- domIterator.decrement();
- EXPECT_EQ(Position(select, 1), domIterator.computePosition());
- domIterator.decrement();
- EXPECT_EQ(Position::lastPositionInNode(option1),
- domIterator.computePosition());
- domIterator.decrement();
- EXPECT_EQ(Position(option1->firstChild(), 1), domIterator.computePosition());
- domIterator.decrement();
- EXPECT_EQ(Position(option1, 0), domIterator.computePosition());
- domIterator.decrement();
- EXPECT_EQ(Position(select, 0), domIterator.computePosition());
+ EXPECT_EQ(Position::beforeNode(select), domIterator.computePosition());
domIterator.decrement();
EXPECT_EQ(Position(document().body(), 1), domIterator.computePosition());
domIterator.decrement();
@@ -111,30 +78,15 @@ TEST_F(PositionIteratorTest, decrementWithSelectElement) {
flatIterator.decrement();
EXPECT_EQ(PositionInFlatTree::afterNode(select),
flatIterator.computePosition());
- // TODO(yosin): We should not traverse inside SELECT and OPTION
- // Traverse |option2|
flatIterator.decrement();
- EXPECT_EQ(PositionInFlatTree::lastPositionInNode(option2),
- flatIterator.computePosition());
- flatIterator.decrement();
- EXPECT_EQ(PositionInFlatTree(FlatTreeTraversal::firstChild(*option2), 1),
- flatIterator.computePosition());
- flatIterator.decrement();
- EXPECT_EQ(PositionInFlatTree(option2, 0), flatIterator.computePosition());
- flatIterator.decrement();
- EXPECT_EQ(PositionInFlatTree(select, 1), flatIterator.computePosition());
- // Traverse |option1|
- flatIterator.decrement();
- EXPECT_EQ(PositionInFlatTree::lastPositionInNode(option1),
- flatIterator.computePosition());
+ EXPECT_EQ(PositionInFlatTree::afterNode(select),
+ flatIterator.computePosition())
+ << "This is redundant result, we should not have. see "
+ "http://crbug.com/697283";
flatIterator.decrement();
- EXPECT_EQ(PositionInFlatTree(FlatTreeTraversal::firstChild(*option1), 1),
+ EXPECT_EQ(PositionInFlatTree::beforeNode(select),
flatIterator.computePosition());
flatIterator.decrement();
- EXPECT_EQ(PositionInFlatTree(option1, 0), flatIterator.computePosition());
- flatIterator.decrement();
- EXPECT_EQ(PositionInFlatTree(select, 0), flatIterator.computePosition());
- flatIterator.decrement();
EXPECT_EQ(PositionInFlatTree(document().body(), 1),
flatIterator.computePosition());
flatIterator.decrement();
@@ -145,7 +97,6 @@ TEST_F(PositionIteratorTest, decrementWithSelectElement) {
TEST_F(PositionIteratorTest, decrementWithTextAreaElement) {
setBodyContent("123<textarea>456</textarea>");
Element* const textarea = document().querySelector("textarea");
- Node* const innerEditor = FlatTreeTraversal::firstChild(*textarea);
Node* const text = textarea->previousSibling();
// Decrement until end of "123" from after TEXTAREA on DOM tree
@@ -154,11 +105,8 @@ TEST_F(PositionIteratorTest, decrementWithTextAreaElement) {
domIterator.computePosition());
domIterator.decrement();
EXPECT_EQ(Position::afterNode(textarea), domIterator.computePosition());
- // TODO(yosin): We should not traverse inside TEXTAREA
domIterator.decrement();
- EXPECT_EQ(Position(textarea->firstChild(), 3), domIterator.computePosition());
- domIterator.decrement();
- EXPECT_EQ(Position(textarea, 0), domIterator.computePosition());
+ EXPECT_EQ(Position::beforeNode(textarea), domIterator.computePosition());
domIterator.decrement();
EXPECT_EQ(Position(document().body(), 1), domIterator.computePosition());
domIterator.decrement();
@@ -172,28 +120,10 @@ TEST_F(PositionIteratorTest, decrementWithTextAreaElement) {
flatIterator.decrement();
EXPECT_EQ(PositionInFlatTree::afterNode(textarea),
flatIterator.computePosition());
- // TODO(yosin): We should not traverse inside TEXTAREA
- // Traverse |innerEditor|
- flatIterator.decrement();
- EXPECT_EQ(PositionInFlatTree::lastPositionInNode(innerEditor),
- flatIterator.computePosition());
- flatIterator.decrement();
- EXPECT_EQ(PositionInFlatTree(innerEditor->firstChild(), 3),
- flatIterator.computePosition());
- flatIterator.decrement();
- EXPECT_EQ(PositionInFlatTree(innerEditor->firstChild(), 2),
- flatIterator.computePosition());
- flatIterator.decrement();
- EXPECT_EQ(PositionInFlatTree(innerEditor->firstChild(), 1),
- flatIterator.computePosition());
flatIterator.decrement();
- EXPECT_EQ(PositionInFlatTree(innerEditor->firstChild(), 0),
+ EXPECT_EQ(PositionInFlatTree::beforeNode(textarea),
flatIterator.computePosition());
flatIterator.decrement();
- EXPECT_EQ(PositionInFlatTree(innerEditor, 0), flatIterator.computePosition());
- flatIterator.decrement();
- EXPECT_EQ(PositionInFlatTree(textarea, 0), flatIterator.computePosition());
- flatIterator.decrement();
EXPECT_EQ(PositionInFlatTree(document().body(), 1),
flatIterator.computePosition());
flatIterator.decrement();
@@ -204,7 +134,6 @@ TEST_F(PositionIteratorTest, decrementWithTextAreaElement) {
TEST_F(PositionIteratorTest, incrementWithInputElement) {
setBodyContent("<input value='abc'>123");
Element* const input = document().querySelector("input");
- Node* const innerEditor = FlatTreeTraversal::firstChild(*input);
Node* const text = input->nextSibling();
// Increment until start of "123" from INPUT on DOM tree
@@ -225,25 +154,8 @@ TEST_F(PositionIteratorTest, incrementWithInputElement) {
PositionInFlatTree::firstPositionInNode(document().body()));
EXPECT_EQ(PositionInFlatTree(document().body(), 0),
flatIterator.computePosition());
- // TODO(yosin): We should not traverse inside INPUT
flatIterator.increment();
- EXPECT_EQ(PositionInFlatTree(input, 0), flatIterator.computePosition());
- flatIterator.increment();
- EXPECT_EQ(PositionInFlatTree(innerEditor, 0), flatIterator.computePosition());
- flatIterator.increment();
- EXPECT_EQ(PositionInFlatTree(innerEditor->firstChild(), 0),
- flatIterator.computePosition());
- flatIterator.increment();
- EXPECT_EQ(PositionInFlatTree(innerEditor->firstChild(), 1),
- flatIterator.computePosition());
- flatIterator.increment();
- EXPECT_EQ(PositionInFlatTree(innerEditor->firstChild(), 2),
- flatIterator.computePosition());
- flatIterator.increment();
- EXPECT_EQ(PositionInFlatTree(innerEditor->firstChild(), 3),
- flatIterator.computePosition());
- flatIterator.increment();
- EXPECT_EQ(PositionInFlatTree::lastPositionInNode(innerEditor),
+ EXPECT_EQ(PositionInFlatTree::beforeNode(input),
flatIterator.computePosition());
flatIterator.increment();
EXPECT_EQ(PositionInFlatTree::afterNode(input),
@@ -258,36 +170,21 @@ TEST_F(PositionIteratorTest, incrementWithInputElement) {
TEST_F(PositionIteratorTest, incrementWithSelectElement) {
setBodyContent("<select><option>1</option><option>2</option></select>123");
Element* const select = document().querySelector("select");
- Node* const option1 = select->firstChild();
- Node* const option2 = select->lastChild();
Node* const text = select->nextSibling();
// Increment until start of "123" from SELECT on DOM tree
PositionIterator domIterator(
Position::firstPositionInNode(document().body()));
EXPECT_EQ(Position(document().body(), 0), domIterator.computePosition());
- // TODO(yosin): We should not traverse inside SELECT
- domIterator.increment();
- EXPECT_EQ(Position(select, 0), domIterator.computePosition());
domIterator.increment();
- EXPECT_EQ(Position(option1, 0), domIterator.computePosition());
- domIterator.increment();
- EXPECT_EQ(Position(option1->firstChild(), 0), domIterator.computePosition());
- domIterator.increment();
- EXPECT_EQ(Position::lastPositionInNode(option1),
- domIterator.computePosition());
- domIterator.increment();
- EXPECT_EQ(Position(select, 1), domIterator.computePosition());
- domIterator.increment();
- EXPECT_EQ(Position(option2, 0), domIterator.computePosition());
- domIterator.increment();
- EXPECT_EQ(Position(option2->firstChild(), 0), domIterator.computePosition());
- domIterator.increment();
- EXPECT_EQ(Position::lastPositionInNode(option2),
- domIterator.computePosition());
+ EXPECT_EQ(Position::beforeNode(select), domIterator.computePosition());
domIterator.increment();
EXPECT_EQ(Position::afterNode(select), domIterator.computePosition());
domIterator.increment();
+ EXPECT_EQ(Position::afterNode(select), domIterator.computePosition())
+ << "This is redundant result, we should not have. see "
+ "http://crbug.com/697283";
+ domIterator.increment();
EXPECT_EQ(Position(document().body(), 1), domIterator.computePosition());
domIterator.increment();
EXPECT_EQ(Position(text, 0), domIterator.computePosition());
@@ -297,32 +194,17 @@ TEST_F(PositionIteratorTest, incrementWithSelectElement) {
PositionInFlatTree::firstPositionInNode(document().body()));
EXPECT_EQ(PositionInFlatTree(document().body(), 0),
flatIterator.computePosition());
- // TODO(yosin): We should not traverse inside SELECT
- flatIterator.increment();
- EXPECT_EQ(PositionInFlatTree(select, 0), flatIterator.computePosition());
flatIterator.increment();
- // Traverse |option2|
- EXPECT_EQ(PositionInFlatTree(option1, 0), flatIterator.computePosition());
- flatIterator.increment();
- EXPECT_EQ(PositionInFlatTree(FlatTreeTraversal::firstChild(*option1), 0),
- flatIterator.computePosition());
- flatIterator.increment();
- EXPECT_EQ(PositionInFlatTree::lastPositionInNode(option1),
- flatIterator.computePosition());
- flatIterator.increment();
- EXPECT_EQ(PositionInFlatTree(select, 1), flatIterator.computePosition());
- // Traverse |option2|
- flatIterator.increment();
- EXPECT_EQ(PositionInFlatTree(option2, 0), flatIterator.computePosition());
- flatIterator.increment();
- EXPECT_EQ(PositionInFlatTree(FlatTreeTraversal::firstChild(*option2), 0),
+ EXPECT_EQ(PositionInFlatTree::beforeNode(select),
flatIterator.computePosition());
flatIterator.increment();
- EXPECT_EQ(PositionInFlatTree::lastPositionInNode(option2),
+ EXPECT_EQ(PositionInFlatTree::afterNode(select),
flatIterator.computePosition());
flatIterator.increment();
EXPECT_EQ(PositionInFlatTree::afterNode(select),
- flatIterator.computePosition());
+ flatIterator.computePosition())
+ << "This is redundant result, we should not have. see "
+ "http://crbug.com/697283";
flatIterator.increment();
EXPECT_EQ(PositionInFlatTree(document().body(), 1),
flatIterator.computePosition());
@@ -335,16 +217,13 @@ TEST_F(PositionIteratorTest, incrementWithTextAreaElement) {
setBodyContent("<textarea>123</textarea>456");
Element* const textarea = document().querySelector("textarea");
Node* const text = textarea->nextSibling();
- Node* const innerEditor = FlatTreeTraversal::firstChild(*textarea);
// Increment until start of "123" from TEXTAREA on DOM tree
PositionIterator domIterator(
Position::firstPositionInNode(document().body()));
EXPECT_EQ(Position(document().body(), 0), domIterator.computePosition());
domIterator.increment();
- EXPECT_EQ(Position(textarea, 0), domIterator.computePosition());
- domIterator.increment();
- EXPECT_EQ(Position(textarea->firstChild(), 0), domIterator.computePosition());
+ EXPECT_EQ(Position::beforeNode(textarea), domIterator.computePosition());
domIterator.increment();
EXPECT_EQ(Position::afterNode(textarea), domIterator.computePosition());
domIterator.increment();
@@ -359,24 +238,7 @@ TEST_F(PositionIteratorTest, incrementWithTextAreaElement) {
flatIterator.computePosition());
// TODO(yosin): We should not traverse inside TEXTAREA
flatIterator.increment();
- EXPECT_EQ(PositionInFlatTree(textarea, 0), flatIterator.computePosition());
- // Traverse |innerEditor|
- flatIterator.increment();
- EXPECT_EQ(PositionInFlatTree(innerEditor, 0), flatIterator.computePosition());
- flatIterator.increment();
- EXPECT_EQ(PositionInFlatTree(innerEditor->firstChild(), 0),
- flatIterator.computePosition());
- flatIterator.increment();
- EXPECT_EQ(PositionInFlatTree(innerEditor->firstChild(), 1),
- flatIterator.computePosition());
- flatIterator.increment();
- EXPECT_EQ(PositionInFlatTree(innerEditor->firstChild(), 2),
- flatIterator.computePosition());
- flatIterator.increment();
- EXPECT_EQ(PositionInFlatTree(innerEditor->firstChild(), 3),
- flatIterator.computePosition());
- flatIterator.increment();
- EXPECT_EQ(PositionInFlatTree::lastPositionInNode(innerEditor),
+ EXPECT_EQ(PositionInFlatTree::beforeNode(textarea),
flatIterator.computePosition());
flatIterator.increment();
EXPECT_EQ(PositionInFlatTree::afterNode(textarea),

Powered by Google App Engine
This is Rietveld 408576698